Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi CSV Datei einlesen funktioniert aber nicht richtig (https://www.delphipraxis.net/34929-csv-datei-einlesen-funktioniert-aber-nicht-richtig.html)

Christian18 30. Nov 2004 10:34


CSV Datei einlesen funktioniert aber nicht richtig
 
hallo,

ich habe ein kleiner Programm geschrieben, womit ich eine CSV Datei auslesen kann und die Daten die ausgelesen werden, werden in eine Paradox7 Tabelle gespeichert. Ich habe bloß ein Problem. hier erst einmal mein Code:

Delphi-Quellcode:
procedure TFMain.Button1Click(Sender: TObject);
  var open1 : TOpenDialog;
      s    : String;
      l    : TStringList;
      f    : TextFile;
begin
  open1:=TOpenDialog.Create(self);

  l:=TStringList.Create();

  // Kapitel einlesen
  if
    open1.Execute
  then
    begin
      AssignFile(f, open1.FileName);
      Reset(f);
      while not Eof(f) do begin
        Readln(f, s);
        l.Delimiter:=';';
        l.DelimitedText:=s;
        TKapitel.Append;
        TKapitelAmtlicherOPS.AsString:=l[0];
        TKapitelKapitelnummer.AsString:=l[1];
        TKapitelKapiteltitel.AsString:=l[2];
        TKapitel.Post;
      end;
      CloseFile(f);
    end;
end;
so sieht ein Tag aus den ich einlese:

1;9;ERGÄNZENDE MASSNAHMEN

das einlesen funktioniert auch alles soweit ganz gut. aber in meiner DB wird in der letzten Spalte nur das erste Wort eingetragen. Also hier beim Bsp.: ERGÄNZENDE

es soll aber ERGÄNZENDE MASSNAHMEN in der Datenbank gespeichert werden. Und mein problem ist jetzt ich weiß nicht, ob es am einlesen der csv datei liegt oder am speichern???

PS: Kann mir jemand helfen???

Mit freundlichen Grüßen

Christian18

bttb930 30. Nov 2004 11:13

Re: CSV Datei einlesen funktioniert aber nicht richtig
 
ich glaub es liegt am readln - das liest bis zum freizeichen

les die datei doch auch in eine TStringList ein und durchlaufe die dann...

MrSpock 30. Nov 2004 11:31

Re: CSV Datei einlesen funktioniert aber nicht richtig
 
Hallo,

readln überliest ein Leerzeichen, daran kann es nicht liegen, aber ist ein Leerzeichen nicht auch automatisch ein Delimiter?

runningsoft 30. Nov 2004 11:33

Re: CSV Datei einlesen funktioniert aber nicht richtig
 
Oder probiere doch einmal, Deinen gesamten String mit einem Semikolon abzuschließen.

Delphi-Quellcode:
l.DelimitedText:=s + ';';
Steffen

Christian18 30. Nov 2004 12:15

Re: CSV Datei einlesen funktioniert aber nicht richtig
 
Zitat:

Zitat von runningsoft
Oder probiere doch einmal, Deinen gesamten String mit einem Semikolon abzuschließen.

Delphi-Quellcode:
l.DelimitedText:=s + ';';
Steffen

Hallo,

es funktioniert leider aucch nicht, wenn ich an meinen String noch ein ; anhänge. Woran kann es noch liegen???

mit freundlichen Grüßen

Christian18

Sharky 30. Nov 2004 12:18

Re: CSV Datei einlesen funktioniert aber nicht richtig
 
Zitat:

Zitat von MrSpock
...aber ist ein Leerzeichen nicht auch automatisch ein Delimiter?

Ich meine nein.

@Christian: Kannst Du die CSV mal anhängen?

Hansi 30. Nov 2004 12:20

Re: CSV Datei einlesen funktioniert aber nicht richtig
 
Probiers mal mit der Copy Funktion!

Habe leider jetzt kein Code dabei. Aber so müsste es funktionieren

String:=copy(1.Position bis ";")
Delete(1. Position bis "j")

bttb930 30. Nov 2004 13:00

Re: CSV Datei einlesen funktioniert aber nicht richtig
 
machs so
Delphi-Quellcode:
function GetNextPart(const aLine: string; var aPart, aRest: string; aDelimiter: string = ';');
var
  p: Integer;
begin
  if Pos(aDelimiter, aLine) > 0 then
  begin
    aPart := Copy(aLine, 1, p - 1);
    aRest := Copy(aLine, p + Length(aDelimiter), Length(aLine));
  end
  else
  begin
    aPart := aLine;
    aRest := '';
  end;
end;

procedure SplitLine(const aLine: string);
var
  Part, Rest: string;
begin
  Rest := aLine;
  while Rest <> '' do
  begin
    GetNextPart(Rest, Part, Rest);
    DoSomething(Part);
  end;
end;

jim_raynor 30. Nov 2004 13:05

Re: CSV Datei einlesen funktioniert aber nicht richtig
 
zwei Sachen hab ich anzumerken.

1. Zu deinem Problem: Ist das Feld auch wirklich groß genug? Wenn ja, schau dir doch mal in Debugger die einzelnen Werte an.

2. Wenn du ein Objekt mit Create erstellst, solltest du es auch wieder mit free freigeben, wenn du es nicht mehr brauchst. Hinterlässt sonst hässliche Speicher-Lecks.

Luckie 30. Nov 2004 13:35

Re: CSV Datei einlesen funktioniert aber nicht richtig
 
Wie wäre es mit explodeexplode?


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:43 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz