Memo1 -> dateien einlesen



  • hagbard_ schrieb:

    das prob ist nur, dass ich dann nicht weiß, wie ich die restliche methode mit dieser version ausführe

    Vielleicht erklärst du uns ja erst nochmal, was du eigentlich machen willst, also was am Ende rauskommen soll.



  • Die Datei sieht vom Prinzip so aus:

    Vorname Nachname; Email; Telefonnummer; usw
    

    Zwischen Vor- und Nachname ist ein Leerzeichen.
    Das soll auch am Ende rauskommen.
    Das Semikolon (;) ist der "Trennungspunkt". Das heißt, in Edit 1 soll dann Vor- und Nachname stehen.
    lg hagbard



  • So ein ähnliches Problem hab ich auch 🙂

    http://www.c-plusplus.net/forum/viewtopic.php?p=479314#479314

    schau mal 🙂

    Wenn wir es schaffen die Teile der Textdatei die nach Komma getrennt ist in Integer bzw. Char Variablen zu speichern denke ich mal das es einfacher ist das Problem zu lösen 🙂



  • Sucht hier mal nach CSV...

    -junix



  • hagbard_ schrieb:

    Die Datei sieht vom Prinzip so aus:

    Vorname Nachname; Email; Telefonnummer; usw
    

    Nur die eine Zeile oder mehrere Zeilen nach diesem Muster?

    Das heißt, in Edit 1 soll dann Vor- und Nachname stehen.

    Also willst du nur den Teil mit den Namen auslesen, den Rest brauchst du gar nicht?
    Dann lade die Datei in eine TStringList, geh die einzelnen Strings der Liste durch und extrahiere den gewünschten Teil mit den AnsiString-Methoden wié SubString usw.



  • void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    AnsiString x;
    int anzahl = 1;
    Memo1->Lines->LoadFromFile("c:\\telefonbuch.txt");
    x = Memo1->Text;
    
    Edit1->Clear();
    while(x[anzahl] != ';'){
    anzahl++;
    Edit1->Text = Edit1->Text + x[anzahl-1];
                  }
    
    }
    

    verhilft mir jetzt dazu, dass ich den namen richtig ausgeben kann.
    Die datei besteht natürlich aus mehreren zeilen, das angegebene ist nur das schema.
    Ich muss auch das restliche noch ausgeben ... aber mal schauen wie ich das hinbekomme, sonst hab ich ja spitzen leute im forum 😉
    lg hagbard



  • Warum benutzt du nich AnsiString.SubString() ??

    AnsiString temp;
    temp = Memo1->Text;
    Edit1->Text = temp.SubString(0,temp.Pos(";")); // Erste Zelle entnehmen
    temp = temp.SubString(temp.Pos(";")+1,temp.Length()); // erste Zelle aus temp löschen (wegem .Pos(";") neuen trenner finden
    Edit2->Text = temp.SubString(0,temp.Pos(";")); // zweite Zelle entnehmen
    temp = temp.SubString(temp.Pos(";")+1,temp.Length()); // zweite Zelle aus temp löschen
    //... u.s.w.
    


  • vielen dank promicha ...
    gefällt mir sehr gut ... jetzt noch eine frage:
    wie kann ich dann die nächste zeile erkennen?
    denn möchte das ganze in einem stringgid anzeigen lassen
    lg hagbard



  • Guten Nachmittag,

    habe dieses Problem jetzt so gelöst:

    int x = 0;
    int y = 1;
    while( y < 5){
    StringGrid1->Cells[x][y] = temp.SubString(0,temp.Pos(";")-1); // Erste Zelle entnehmen
    temp = temp.SubString(temp.Pos(";")+1,temp.Length()); //zu naechster Zelle springen
    x++;
    StringGrid1->Cells[x][y] = temp.SubString(0,temp.Pos(";")-1); 
    temp = temp.SubString(temp.Pos(";")+1,temp.Length());
    x++;
    StringGrid1->Cells[x][y] = temp.SubString(0,temp.Pos(";")-1);
    temp = temp.SubString(temp.Pos(";")+1,temp.Length()); 
    x++;
    StringGrid1->Cells[x][y] = temp.SubString(0,temp.Pos(";")-1); 
    temp = temp.SubString(temp.Pos(";")+1,temp.Length()); 
    x++;
    y++;
    x = 0;
            }
    

    Jetzt ist nur noch folgendes Problem:
    Am Anfang jeder Zeile befindet sich 2 schwarze Striche im StringGrid. Das Problem wird wohl die Zeilenschaltung sein, die dementsprechend angezeigt wird.
    Hat jemand eine Idee, wie ich das lösen könnte?
    mfg hagbard



  • Ok, in der letzten

    temp = temp.SubString(temp.Pos(";")+3,temp.Length()); 
    x++;
    

    hilft ab
    vielen dank für die ganzen antworten
    lg hagbard


Anmelden zum Antworten