Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   
Forentreff 2012     
Bücher-Shop mit Amazon (Buchkategorien)C++ : Referenzen zu C++ : C++ Builder : Visual C++ : C# : Java : Spieleprogrammierung : Systemprogrammierung Linux : Software-Entwicklung : .NET : Compilertechnik : Algorithmen & Datenstrukturen : Objektorientierung : Entwurfsmuster : UML : eXtreme Programming : Scrum : Projektmanagement : Software-Testing : Datenbanken : Tom DeMarco : Dilbert : User Friendly
C/C++ Forum :: VCL (C++ Builder) ::  Auf AnsiString* einzeln zugreifen     Zeige alle Beiträge auf einer Seite Auf Beitrag antworten
Autor Nachricht
blckbird
Mitglied

Benutzerprofil
Anmeldungsdatum: 14.02.2010
Beiträge: 21
Beitrag blckbird Mitglied 17:37:28 25.01.2012   Titel:   Auf AnsiString* einzeln zugreifen            Zitieren

Guten Tag,

ich hab eine AnsiString* und möchte nun auf einzelne Buchstaben des Inhalts zugreifen. Mit einem AnsiString ist es ja klar: meinString[1]. Aber wie mache ich das mit einem Pointer?

Mit freundlichen Grüßen,
blck
Tim06TR
Mitglied

Benutzerprofil
Anmeldungsdatum: 14.03.2009
Beiträge: 1337
Beitrag Tim06TR Mitglied 18:06:59 25.01.2012   Titel:              Zitieren

Dereferenzieren nennt sich das:

C/C++ Code:
*AStrName[0]
C/C++ Code:
*AStrName[0]
C/C++ Code:
*AStrName[0]

_________________
"Wie ein Komponist an seinem Klavier gleitet der Programmierer über die Tasten auf der Suche nach der perfekten Komposition" ~me --- Wehe ihr lest meine alten posts ! :D
blckbird
Mitglied

Benutzerprofil
Anmeldungsdatum: 14.02.2010
Beiträge: 21
Beitrag blckbird Mitglied 18:15:21 25.01.2012   Titel:              Zitieren

Tim06TR schrieb:
Dereferenzieren nennt sich das:

C/C++ Code:
*AStrName[0]
C/C++ Code:
*AStrName[0]
C/C++ Code:
*AStrName[0]


Habe ich schon versucht; erhalte dann immer folgende Fehler:

[C++ Fehler] Verarbeitung.cpp(25): E2093 'operator*' ist im Typ 'AnsiString' für Argumente desselben Typs nicht implementiert
[C++ Warnung] Verarbeitung.cpp(32): W8075 Verdächtige Zeigerumwandlung


Vielleicht ein, zwei Details mehr:

C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int* Verarbeitung::analysiereSchluessel(AnsiString* pKey)
{
 int schluesselAnalyse[4] = {0,0,0,0};
 char alpha[26] = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};

 for (int i=1; i<5; i++)
 {
        for (int j = 0;j<= 26; j++)
        {
                if(*pKey[i]==alpha[j]) //hier liegt der Fehler!
                {
                 schluesselAnalyse[i-1]=j;
                }
        }
 }

 return(schluesselAnalyse);
}
C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int* Verarbeitung::analysiereSchluessel(AnsiString* pKey)
{
int schluesselAnalyse[4] = {0,0,0,0};
char alpha[26] = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};

for (int i=1; i<5; i++)
{
for (int j = 0;j<= 26; j++)
{
if(*pKey[i]==alpha[j]) //hier liegt der Fehler!
{
schluesselAnalyse[i-1]=j;
}
}
}

return(schluesselAnalyse);
}
C/C++ Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
int* Verarbeitung::analysiereSchluessel(AnsiString* pKey)
{
 int schluesselAnalyse[4] = {0,0,0,0};
 char alpha[26] = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};

 for (int i=1; i<5; i++)
 {
        for (int j = 0;j<= 26; j++)
        {
                if(*pKey[i]==alpha[j]) //hier liegt der Fehler!
                {
                 schluesselAnalyse[i-1]=j;
                }
        }
 }

 return(schluesselAnalyse);
}


Der AnsiString besteht immer aus 4 Zeichen. In das int-Array "schluesselAnalyse" soll nun immer gespeichert werden, den wievielten Buchstaben im Alphabet (char-Array "alpha") das aktuelle Stringzeichen beinhaltet.


Zuletzt bearbeitet von blckbird am 18:16:50 25.01.2012, insgesamt 2-mal bearbeitet
akari
Moderator

Benutzerprofil
Anmeldungsdatum: 27.11.2004
Beiträge: 11271
Beitrag akari Moderator 18:29:23 25.01.2012   Titel:              Zitieren

Hallo

Da fehlen noch Klammern :
C/C++ Code:
if((*pKey)[i]==alpha[j]) // Erst dereferenzieren, dann []-Op
C/C++ Code:
if((*pKey)[i]==alpha[j]) // Erst dereferenzieren, dann []-Op
C/C++ Code:
if((*pKey)[i]==alpha[j]) // Erst dereferenzieren, dann []-Op


bis bald
akari

_________________
In der nächsten Version wird alles besser!
Tim06TR
Mitglied

Benutzerprofil
Anmeldungsdatum: 14.03.2009
Beiträge: 1337
Beitrag Tim06TR Mitglied 18:29:24 25.01.2012   Titel:              Zitieren

btw: wieso übergibts du ihn überhaupt als Zeiger? Referenz würde doch reichen [?]
EDIT: (Wenn du ihn nicht kopieren willst.)

_________________
"Wie ein Komponist an seinem Klavier gleitet der Programmierer über die Tasten auf der Suche nach der perfekten Komposition" ~me --- Wehe ihr lest meine alten posts ! :D


Zuletzt bearbeitet von Tim06TR am 18:32:45 25.01.2012, insgesamt 1-mal bearbeitet
blckbird
Mitglied

Benutzerprofil
Anmeldungsdatum: 14.02.2010
Beiträge: 21
Beitrag blckbird Mitglied 18:38:09 25.01.2012   Titel:              Zitieren

akari schrieb:
Hallo

Da fehlen noch Klammern :
C/C++ Code:
if((*pKey)[i]==alpha[j]) // Erst dereferenzieren, dann []-Op
C/C++ Code:
if((*pKey)[i]==alpha[j]) // Erst dereferenzieren, dann []-Op
C/C++ Code:
if((*pKey)[i]==alpha[j]) // Erst dereferenzieren, dann []-Op


bis bald
akari


merci beaucoup :)
C/C++ Forum :: VCL (C++ Builder) ::  Auf AnsiString* einzeln zugreifen   Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info, www.c-sar.de, www.c-plusplus.net und www.baeckmann.de enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.