Hallo,
ich möchte eine .csv Datei auslesen. Die Daten sind folgendermassen aufgebaut : '2;45;5;56;'.
Kann die Datei auch auslesen. Anschließend möchte ich den String in einen Recrod schreiben. Habe nur Integerwerte.
Mein Problem: ich kann immer nur eine Zahl auslesen.
Ok, ein Bsp: 45
hab schon die 4 ausgelesen. Jetzt die um einen nach links shiften und die 5 hinten anhängen.
Hier der entsprechende Auszug aus meinem Programm:
Delphi-Quellcode:
procedure TForm1.ffnen1Click(Sender: TObject);
var
datei : textFile;
Einlesestring : string;
zaehler : Integer;
Stringzaehler : Integer;
Recordeintrag : Integer;
EinleseRCVMsg : TCANRcvMsg;
Zwischenspeicher : cardinal;
begin
if OpenDialog1.Execute then
begin
Assignfile(Datei, OpenDialog1.FileName);
Reset(Datei); // Datei zurücksetzen
zaehler := 0; // Daten auslesen bis zum Ende
while not EOF(Datei) do // und in einen Record schreiben, der später
begin // weiterverarbeitet wird
readln(Datei,Einlesestring);
inc(zaehler);
Recordeintrag := 0;
for Stringzaehler := 1 to Length(Einlesestring)-1 do
begin
if (Einlesestring[Stringzaehler] = ';') then
begin
inc(Recordeintrag);
case Recordeintrag of
1: EinleseRCVMsg.msgbuff.ID := Zwischenspeicher;
2: EinleseRCVMsg.msgbuff.MSGTYPE := Zwischenspeicher;
3: EinleseRCVMsg.msgbuff.LEN := Zwischenspeicher;
4: EinleseRCVMsg.msgbuff.DATA[0] := Zwischenspeicher;
5: EinleseRCVMsg.msgbuff.DATA[1] := Zwischenspeicher;
6: EinleseRCVMsg.msgbuff.DATA[2] := Zwischenspeicher;
7: EinleseRCVMsg.msgbuff.DATA[3] := Zwischenspeicher;
end;
end
else
// abfrage und danach nach links shiften
Zwischenspeicher := StrToInt(Einlesestring[Stringzaehler]);
end;
end;
end;
end;
gibt es noch ne einfachere Methode???
Sollte natürlich wie immer sehr schnell gehen. Was besseres ist mir bis jetzt noch nicht eingefallen.
Hatte jemand schon mal so ein Problem und hat dies Einfacher gelöst??