![]() |
Problem mit dem Import aus einer csv-Datei in eine StringList
Hallo zusammen,
ich sitze nun seit letzter Woche daran eine CSV-Datei einzulesen und diese in eine StringList zu schreiben. Das Ganze benötige ich, um 6 Daten der Liste in einenen DataRecord zu schreiben, hier mein fehlerhafter Code:
Delphi-Quellcode:
Ich habe mich schon durch diverse Foren gelesen, allerdings habe ich es selbst damit nicht geschafft das Ganze zu lösen, also wäre es super wenn ich über diesen Weg nötige Hilfe finden könnte.
var
tfDatei: TextFile; sZInhalt: string; liste: TStringList; i: Integer; tempRecord: dataRecord; begin if ((OpenDialog1.Execute()) and (OpenDialog1.Filename <> '')) then begin GanttChart1.BeginUpdate(); // Änderungen an der Oberfläche werden gemacht try liste := TStringList.Create(); try AssignFile(tfDatei, OpenDialog1.Filename); Reset(tfDatei); i := 0; while not Eof(tfDatei) do begin liste := TStringList.Create; ReadLn(tfDatei, sZInhalt); liste.Delimiter := ';'; liste.StrictDelimiter := True; liste.DelimitedText := sZInhalt; Inc(i); // Kopfzeile if i > 1 then // Datenzeilen begin //Hier teste ich mit Beispieldaten was auch funktioniert tempRecord.StartDate := StrToDateTime('01.01.2020'); tempRecord.EndDate := StrToDateTime('03.01.2020'); tempRecord.Duration := 120; tempRecord.Bez := 'Test'; tempRecord.AuftragNr := 123312; tempRecord.AuftragPosNr := 1; tempRecord.ArbeitsplanPosNr := 1; (* // Sobald ich mit liste.Strings[] echte Daten nutzen möchte sütrzt das Programm ab tempRecord.StartDate := StrToDateTime(liste.Strings[14]); tempRecord.EndDate := StrToDateTime(liste.Strings[15]); tempRecord.Duration := StrToInt(liste.Strings[19]); tempRecord.Bez := liste.Strings[7]; tempRecord.AuftragNr := StrToInt(liste.Strings[9]); tempRecord.AuftragPosNr := StrToInt(liste.Strings[10]); tempRecord.ArbeitsplanPosNr := StrToInt(liste.Strings[2]); *) csvRecords.Add(tempRecord); // csvRecords ist eine TList<dataRecord> und wurde bereits deklariert end; end; except MessageDlg('Est ist ein Fehler aufgetreten, der Prozess wird beendet.', mtError, [mbOK], 0); end; finally FreeAndNil(liste); CloseFile(tfDatei); GanttChart1.EndUpdate(); // Repaint end; end; end; |
AW: Problem mit dem Import aus einer csv-Datei in eine StringList
Du hast Dir aber ein schönes Speicherleck gebaut. Bist Du sicher, dass Du die Liste einmal vor und dann noch einmal innerhalb der Schleife erzeugen willst?
|
AW: Problem mit dem Import aus einer csv-Datei in eine StringList
Ohje. :oops:
Nein ist natürlich Schwachsinn, aber behebt das Problem leider nicht. |
AW: Problem mit dem Import aus einer csv-Datei in eine StringList
die Frage ist ja, was passiert denn? Gibt es Fehlermeldungen? Werden denn die Records mit Daten gefüllt? Läufst du in deinen Except-Block?
Hast du das ganz mal im Debugger schrittweise laufen lassen? ich würde statt
Delphi-Quellcode:
mal das
StrToDateTime(liste.Strings[14]);
Delphi-Quellcode:
probieren. Ist ja schon eine StringList. Aber das wird nicht das Problem sein.
StrToDateTime(liste[14]);
Aber Vorsicht, immer prüfen, ob dein liste überhaupt 15 items hat. |
AW: Problem mit dem Import aus einer csv-Datei in eine StringList
Wie viele Einträge enthält die Liste denn nach der Zuweisung von DelimitedText?
|
AW: Problem mit dem Import aus einer csv-Datei in eine StringList
@Hobbycoder, ja ich habe das Ganze schon des öfteren debuggt, sobald ich einen Eintrag der Liste ansprechen möchte springe ich in den Except Block der mir meine Fehlermeldung ausgibt.
Edit: Wenn ich die erste Position der Liste anzeige bekomme ich, mir unbekannte, Schriftzeichen, bei allen anderen Positionen der Liste komme ich dann n den Except Block. @DeddyH, wenn ich mir die Länge der Liste nach dem DelimitedText anzeige variiert diese zwischen 0 und 3 für alle Einträge (knapp 30 Stück) |
AW: Problem mit dem Import aus einer csv-Datei in eine StringList
Dann zeig doch mal, was zu dem Zeitpunkt in szInhalt steht.
|
AW: Problem mit dem Import aus einer csv-Datei in eine StringList
Liste der Anhänge anzeigen (Anzahl: 1)
In sZInhalt werden mir nach dem DelimitedText nur "zufällige" Zeichen angezeigt, wobei sich diese auch in jedem Durchlauf ändern-
|
AW: Problem mit dem Import aus einer csv-Datei in eine StringList
Zitat:
Zeig doch mal ein paar dieser Textzeilen aus Deiner Importdatei. |
AW: Problem mit dem Import aus einer csv-Datei in eine StringList
naja, findest du irgendwo in dem String ein Semikolon?
Ist die Datei wirklich eine Textdatei? Öffne sie mal mit Notepad. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:54 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 by Thomas Breitkreuz