Datei auslesen und Wörter überspringen
-
Das Sortieren kannst du in den Resourcen abschalten, ist ein Häkchen.
Wenn du mit drei Spalten arbeiten willst, kannst du es genauso machen, nur dass du den Englischen nochmal zerhacken musst.
Alles mit den Befehlen die du schon hast.
-
Wie meinst du das, zerschnibbeln? Ich meine es gibt ja nur LEft und Right... Oder gibt es auch noch nen Middle
Kannste vielleicht ein kleines Beispiel posten? Danke für das mit dem sortieren, habe ich übersehen...
-
Ist ehrlich ungetestet - hoffe du erkennst was ich meine:
stdFileInput.ReadString(strOutput); pos=strOutput.Find("|"); CString english = strOutput.Left(pos); CString Rest = strOutput.Right(pos); pos = Rest.Find("|"); CString german = Rest.Left(pos); CString sentence = Rest.Right(pos);
-
Hört sich gut an, schmeckt ihm aber nicht
Habe das übernommen, jedoch zeigt er nur die englischen Wörter an, die anderen beiden nicht...
Der Code sieht bis jetzt so aus:
CString strOutput; int pos; CStdioFile stdFileInput("C:\\1.txt", CStdioFile::modeRead); while (stdFileInput.GetPosition() < stdFileInput.GetLength()-1) { stdFileInput.ReadString(strOutput); pos=strOutput.Find("|"); CString english = strOutput.Left(pos); CString Rest = strOutput.Right(pos); pos = Rest.Find("|"); CString german = Rest.Left(pos); CString sentence = Rest.Right(pos); m_ctlEn.AddString(english); m_ctlDe.AddString(german); m_ctlBsp.AddString(sentence); } stdFileInput.Close();
Wie gesagt, es wird nur das Listenfeld english angezeigt
Kannst du mir helfen (oder jemand anders)?
danke!
-
Tja, komisch, dass es vorher mit den zwei Spalten funktioniert hat.
Right wurde falsch benutzt, so ist es besser:
pos=strOutput.Find("|"); CString english = strOutput.Left(pos); CString Rest = strOutput.Right(strOutput.GetLength() - pos - 1); pos = Rest.Find("|"); CString german = Rest.Left(pos); CString sentence = Rest.Right(Rest.GetLength() - pos);
Jetzt musst du noch das Replace machen und gut ist.
-
Macht spass, mit dir zu arbeiten
Jedoch gibt es da immernoch ein Prob...
CString strOutput; int pos; CStdioFile stdFileInput("C:\\1.txt", CStdioFile::modeRead); while (stdFileInput.GetPosition() < stdFileInput.GetLength()-1) { stdFileInput.ReadString(strOutput); pos=strOutput.Find("|"); CString english = strOutput.Left(pos); CString Rest = strOutput.Right(strOutput.GetLength() - pos - 1); pos = Rest.Find("|"); CString german = Rest.Left(pos); CString sentence = Rest.Right(Rest.GetLength() - pos); sentence.Replace('|', ' '); m_ctlEn.AddString(english); m_ctlDe.AddString(german); m_ctlBsp.AddString(sentence); } stdFileInput.Close();
So sieht der Code aus, jedoch (wie schon vorher auch) kommt eine Fehlermeldung:
error C2039: 'Replace' : ist kein Element von 'CString'Ausgegeben wird jetzt alles im richtigen Listenfeld, jedoch ist bei den Beispielen immmernoch das | davor
Danke, für deine Hilfe!
-
Wenn es nur DAVOR ist, dann lass es doch gleich beim kopieren weg.
CString sentence = Rest.Right(Rest.GetLength() - pos - 1);
-
Yo, es geht
Wäre ich gar nicht drauf gekommen, danke für deine Hilfe
PK01P.S.I´ll be back
-
SetAt müßte gehen.
Also
sentence.SetAt(sentence.GetLength()-1,' ');Gruß
Yvonne
-
Sorry, habe nicht gesehen, daß es schon eine dritte Seite gibt...
-
Aber ich hätte noch eine Frage zu dem Ausdruck
GetRight(strOutput.GetLength() - pos - 1);Wenn strOutput angenommen 20 Zeichen hat und das erste | ist an Position 5, dann müßte doch eigentlich als Rest alles rechts von Position 14 (20-5-1) zurückgegeben werden und nicht rechts von Position 5 oder?
Aber trotzdem kommt das richtige raus, kann mir jemand erklären wieso, bzw. wo liegt mein Denkfehler?
-
@yvonne: Du hast noch einen Verständnisfehler
Right will nicht die Anfangsposition haben sondern wieviele Zeichen von rechts aus gesehen kopiert werden sollen.
Okay?
-
Danke!!!!!!