![]() |
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:
so sieht ein Tag aus den ich einlese:
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; 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 |
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... |
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? |
Re: CSV Datei einlesen funktioniert aber nicht richtig
Oder probiere doch einmal, Deinen gesamten String mit einem Semikolon abzuschließen.
Delphi-Quellcode:
Steffen
l.DelimitedText:=s + ';';
|
Re: CSV Datei einlesen funktioniert aber nicht richtig
Zitat:
es funktioniert leider aucch nicht, wenn ich an meinen String noch ein ; anhänge. Woran kann es noch liegen??? mit freundlichen Grüßen Christian18 |
Re: CSV Datei einlesen funktioniert aber nicht richtig
Zitat:
@Christian: Kannst Du die CSV mal anhängen? |
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") |
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; |
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. |
Re: CSV Datei einlesen funktioniert aber nicht richtig
Wie wäre es mit
![]() |
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