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