Kommagetrennte Werte aus Textdatei einlesen
-
Hallo!
1. Frage: Hat jemand eine Ahnung wie ich aus einer Textdatei kommagetrennte Werte(Vorname;Nachname;Strasse;Plz;Ort) so einlese, dass ich jeden eingelesen String auf deren Länge hin überprüfe. Den Import realisiere ich über ein Listenfeld was auch wunderbar klappt. 2. Frage: Wie kann ich eine Fehlermeldung ausbringen oder eine Zeile überspringen wenn in der Textdatei ein blödsinn eingetragen ist zb.,,, ..;;: Manfred;; Bauer.;CStdioFile m_Datei;
CString strZeile;CFileDialog *pDateiDlg = new CFileDialog(TRUE );
if (IDOK == pDateiDlg->DoModal())
{
CString DateiName = pDateiDlg->m_ofn.lpstrFile;
if( !m_Datei.Open( DateiName, CFile::modeRead | CFile::typeText ) ) //Datei wird für lesen geöffnet
{
AfxMessageBox("Kann Datei nicht öffnen!");
exit(0);
}
else
{
while (m_Datei.ReadString(strZeile)) //Zeilen einlesen
{CString vorname, nachname, strasse, plz, ort; //initialisieren
int x = strZeile.Find(";",0);
vorname = strZeile.Left(x);
int anz = strZeile.Find(";",x + 1);
nachname = strZeile.Mid(x + 1, anz - x-1); //Position von ; berechnen und löschen
int anz1 = strZeile.Find(";",anz + x );
strasse = strZeile.Mid( anz +1, anz1 - anz-1);
int anz2 = strZeile.Find(";",anz1 + 1);
plz = strZeile.Mid(anz1 + 1, anz2 -anz1 - 1);
int anz3 = strZeile.Find(";",anz2 + 1);
ort = strZeile.Mid(anz2 + 1, anz3 + anz2 -1);// listcontrol wird gefüllt
m_listcontrol1.InsertItem(0,vorname);
m_listcontrol1.SetItem(0,1,LVIF_TEXT,nachname,0,0,0,0);
m_listcontrol1.SetItem(0,2,LVIF_TEXT,strasse,0,0,0,0);
m_listcontrol1.SetItem(0,3,LVIF_TEXT,plz,0,0,0,0);
m_listcontrol1.SetItem(0,4,LVIF_TEXT,ort,0,0,0,0);
-
Hi,
hast du mitlerweile eine Lösung für Dein Problem gefunden?
Ich versuche genau das gleiche zu machen, schaffe es jedoch nicht?mfg
Siggi
-
Mit ::strtok(..) kannst Du Strings splitten.
Shaggy
-
shaggy: Wenn du nicht im Bilde über die MFC bist dann lasse bitte solche hilfen.
wolfi28:
Schreibe dir eine Funktion de du nur den eingelesenen String übergibst.
Mit Find, Mid bist du weiters auf dem richtigen weg um eine string zu zerlegen
-
@Unix-Tom: Natürlich bin ich über MFC im Bilde und ich glaube nicht, dass es verboten ist bei MFC-Programmierung mal keine Klassen und Objekte zu verwenden. Vor allem wenn Funktionen, wie z.B. strtok(), dort fehlen. Und - by the way - ist jemand, der hier im Forum Fragen stellt, über jede Antwort erfreut.
Warum das Rad neu erfinden? Geht es nicht auch darum?
Shaggy