Ich bin am Ende! CString in while-schleife!
-
EIngabe[x].IsEmpty()
Von char steht hier nichts.
Eingabe soll ein CString sein.
Eingabe.GetLength() würde ja dann auch nicht auf char gehen.Eingabe[x].GetLength() wird wohl auch nicht funktionieren.
-
Da hassu was missverstanden.
Bei deiner Version müsste es sich um einen Container für CStrings handeln.
Aber die variable eingabe ist selbst ein CString. Da wurde ja wie du weisst der []-operator überladen. Sodass du somit auf die einzelnen Zeichen zugreifen kannst. Ein char ist aber ein elementarer Datentyp und hat also auch keine IsEmpty()-methode.Es funktioniert ja jetz sowieso. Aber er hätte auch einfach eingabe+='\0';
schreiben können under restliche Code wäre unverändert geblieben.
-
-
So, guten morgen!
Danke für das viele Feedback. Wie schon gesagt, war der Quelltext aus einer Konsolenanwendung ohne MFC, aber ich musste ich nun für ein Projekt zur Textanalyse mit anschliessender Kodierung umschreiben.
Eingabe[x]!=NULL hatte nur überprüft, ob der String an der Stelle x ein Zeichen enthält. Wenn nicht, wäre die Schleife am Ende des Strings angekommen und die Schleife hätte abgebrochen.
Mit Eingabe.Getlength() funktionierts wunderbar.
Vielen Dank nochmal
CU

-
Original erstellt von dEUs:
**Hm?
]**
Wieso sollte das so sein.
CString Eingabe[20]; Eingabe[0] = _T("Hallo")Und wo ist jetzt der char ?
-
Ähm UnixTom ??
Er verwendet doch kein CString-Array! Eingabe ist ein einfacher CString und bei normalen CStrings gibt der []-op eben nen char zurück!
-
Eigentlich eh egal. Ich wollte nur aufzeigen das es zum Mißverständnissen kommen kann wennn man nur Codebrocken hinwirft ohne z.B zumindest die Variablendeklaration auch zeigt.
-
ahso *g*
Dann sag das doch früher
-
CString Eingabe[20];
Eingabe[0] = _T("Hallo")Das wirds dir um die Ohren hauen.
Eingabe[0] ist gleichbedeutend mit Eingabe.GetAt(0). Hier wird keine Referenz zurückgeliefert.
Falls es wirklich gehen würde könntest du danach die Adresse vom 'H' aus "Hallo" in Eingabe[0] abrufen. Also auch nicht der gewünschte Effekt.
-
Original erstellt von Kauz01:
[quote]CString Eingabe[20];
Eingabe[0] = _T("Hallo")**
Das wirds dir um die Ohren hauen.
Eingabe[0] ist gleichbedeutend mit Eingabe.GetAt(0). Hier wird keine Referenz zurückgeliefert.
Falls es wirklich gehen würde könntest du danach die Adresse vom 'H' aus "Hallo" in Eingabe[0] abrufen. Also auch nicht der gewünschte Effekt.**[/QUOTE]

Schon versucht ?
Ich schon !
-
Kauz: Das ist Quatsch!
-
Hast recht. Was in meinem letzten Beitrag steht ist Quatsch. Ich hab mich aufs Glatteis führen lassen. Am Anfang dieses Threads hieß es:
Eingabefenster zeigt auf den CString Eingabe
und Eingabe wurde als CString angegeben. Ich glaub es war Unix-Tom, der dann als erster die Deklaration "CString Eingabe[20]" brachte. Eigentlich als Hinweis, dass der Anfang missverständlich war, da die Deklaration fehlte
.
Ich hab nur am Anfang aufgepasst und nicht gesehen, dass das inzwischen für ein Feld steht.
Btw. Jetzt könnte man mal wieder darüber streiten, ob man Missverständnisse vermeiden kann, wenn man
"CString strEingabe" statt "CString Eingabe" schreibt.
Ich glaube im MFC-Forum hatten wir das noch nicht.[ Dieser Beitrag wurde am 28.06.2003 um 10:10 Uhr von Kauz01 editiert. ]
-
nur dass das wieder nix bringt

ich schreib zb auch CString strEingabe und CString strEingabe[20]
also könnte man es bei mir net rauslesen.
-
Es heißt ja (allerdings auch nicht ganz korrekt)
CString pStrEingabe[20] (p für Pointer).
Zumindest mach ich das so.[edit]"Es heißt ja" soll nur heißen "ich finde es besser und hab schon öfter gesehen". Will keinen Flame deswegen
[/edit][ Dieser Beitrag wurde am 28.06.2003 um 21:22 Uhr von Kauz01 editiert. ]
[ Dieser Beitrag wurde am 30.06.2003 um 06:20 Uhr von Unix-Tom editiert. ]