Einzelnen Beitrag anzeigen

Osse

Registriert seit: 25. Mär 2005
Ort: Hamburg
74 Beiträge
 
Delphi 5 Enterprise
 
#1

Nach .cvs Dateiauslesen string in Record schreiben

  Alt 30. Mai 2005, 10:37
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??
  Mit Zitat antworten Zitat