CString Phänomen: Left() , Right , = , usw keine Raktion :-(

Reticent

Erfahrenes Mitglied
Liebe Leut, wenn mir jemand helfen kann, danke ich ihm, ich würde ich ihn/sie sogar umarmen, wenn das ginge..

also, mein Problem ist .... ich anfange MFC schon zu hassen.... also das Problem ist, dass ich einfach ein CString "zerlegen" will. Ich habe es schon in einer anderen meiner Klassen gamacht und es funkt perfekt. Nur jetzt will es nicht aufs neue funktionieren :((

Ich habe in einer text-Datei ein String stehend. z.B.
"RectA:100,100,200,200,RectB:120,30,150,70"
jetzt will ich es in einzelne Wörter zerlegen. Sprich RectA, dann 100, dann 100, dann 200 usw.
Ich mache so, wie ich immer gemacht habe
Code:
CString sCurrentFile; 
CString sDataString;
CString sFieldName;		
...
 
if (mDlg.DoModal() == IDOK) // mDlg ist ein File Load Dialog
{
	sCurrentFile = mDlg.GetPathName();
	pfile = fopen(sCurrentFile,"r");//read and write
	fseek( pfile, 0L, SEEK_SET ); //  FILE* pfile
	fscanf(pfile,"%s",sDataString); // funkt richtig
			
	sFieldName = sDataString.Left(sDataString.Find(':',0)); // hier bekommt sFieldName das komplette sDataString und nicht nur die 5 Zeichen, die vor ":" stehen
	sDataString = sDataString.Right(sDataString.Find(',',0));// passiert nix
}
Ich verstehe nicht wieso es hier nicht geht ? :(

Hat jemand eine Idee?
 
Zuletzt bearbeitet:
Kann vollkommen daneben liegen, aber fscanf und CString vertragen sich? Kann ich mir fast nicht vorstellen.
 
Vertragen sich zumindest nicht bei der Form der Programmierung.
So sollte es gehen:

Code:
fscanf(pfile,"%s",sDataString.GetBuffer(255)); // Buffergröße entsprechend der max. Zeilengröße wählen
sDataString.ReleaseBuffer();

sFieldName = sDataString.Left(sDataString.Find(':',0));
 
danke.

ich habs mit GetBuffer(500) versucht und es kommt das Selbe :(
Die Zeile ist nur 356 Zeichen groß.

Ich kann fast weinen...

Woran könnte es noch liegen?
kann es an der Klasse liegen? Dass ich es nicht ganz richtig angelegt habe. Aber alles andere Läuft ja. D.h. die Klasse ist richtig... argh...
 
AH SO ich habe die sDataString.ReleaseBuffer(); übersehen.
Jetzt gehts !! DANKE SEHR.

ICH "umarme" dich und sage danke! :)) jetzt kann ich fast springen vor Freude!

ReleaseBuffer() hat funkt !! HURA!!

danke an alle!
 
Zurück