![]() |
Datenbank: Access • Zugriff über: ADO
CSV --> Stringlist --> Stringlist zerlegen --> in D
Hallo Leute,
ich bin (wiedermal) Newbie. Das hängt daran, dass ich gezwungen war fast ein Jahr mit Delphi auszusetzen. ;o( Jetzt zu meinem Problem. Ich sitze seit 2 Tagen dran, habe viele Lösungen hier und sonst wo gefunden aber es wird einfach kein Licht in meinem Hirn. Ich habe eine CSV-Datei, die ich in einer Stringlist Zeile für Zeile einlesen will. Nun das Funzt schon. *na toll* Ich muss aber noch einiges verstehen. 1. Wie stelle ich fest, wieviele Spalten die CSV hat. Die Trennung hier ist ein Semikolon (;) 2. Dann muss ich erfahren, wie diese Spalten heißen. Diese Info stehen ja in der ersten Zeile. Mir ist einfach nicht klar, wie ich die Namen (Werte) vor dem Semikolon erfahre. 3. Ist fast die Nummer 2. Ich muss dann die jeweiligen Werte (der folgenden Zeilen) in Variablen stecken und diese in mehrere Tabellen meiner DB einlesen. Das Teilen und einfügen wird wohl nicht so sehr das Problem sein aber die Punkte 1 - 3 sind für mich seit 48 Stunden ein großes schwarzes Loch. Bitte helft mir den Lichtschalter zu finden. In diesem Sinne Danke schon mal. Leon |
Re: CSV --> Stringlist --> Stringlist zerlegen -->
Zitat:
Zitat:
Delphi-Quellcode:
3. Ist fast die Nummer 2. Ich muss dann die jeweiligen Werte (der folgenden Zeilen) in Variablen stecken und diese in mehrere Tabellen meiner DB einlesen.
for i := 0 to StringList.Count -1 do
begin ... s := StringList.Strings[i]; ... end; Leon[/quote] Wie 2. in jeder weiteren Zeile kannst du die Werte wie in 2. die Name auslesen |
Re: CSV --> Stringlist --> Stringlist zerlegen -->
Hallo Leon,
vielleicht hilft es dir, wenn du eine kleine Beispielanwendung studierst: ![]() Grüße vom marabu |
Re: CSV --> Stringlist --> Stringlist zerlegen -->
Hi Marabu,
danke für die Unterstützung aber ich kann das nicht ansehen. Komponennten fehlen mir.. naja, ich beiß mich schon durch die angaben von euch durch... :o) @MKinzler: Wie meinst du das mit StringList.Count zu punkt 1? |
Re: CSV --> Stringlist --> Stringlist zerlegen -->
Wenn du die erste Zeile der CSV-Datei geladen hast und diese mit Hilfe der Eigenschaft DelimitedText der Stringlist zugewiesen hast, dann enthält die Eigenschaft Count die Anzahl der Spalten.
|
Re: CSV --> Stringlist --> Stringlist zerlegen -->
Hi,
schau Dir mal die Routine in diesem Thread an ![]() |
Re: CSV --> Stringlist --> Stringlist zerlegen -->
Ääähhh jaaa... :o)
Okay. ich schreib mal was mein prog bis her macht und dann weiß ich nicht mehr weiter wie ich es schreiben soll...
Delphi-Quellcode:
Sicher fehlen hier noch schleifen das ist klar. Kannst du damit was anfangen?
var
sl: TStringList; zeilennr: integer; DateiName, S: String; F: TextFile; begin OpenDialog1.Execute; // Das Ergebnis steht in FileName // ShowMessage(OpenDialog1.FileName); DateiName := OpenDialog1.FileName; //Der Pfad wird in die Datei gestellt // ShowMessage(DateiName); sl:=TStringList.Create; //Objekt erzeugen try sl.LoadFromFile(DateiName); //Datei in Stringliste laden AssignFile(F, OpenDialog1.FileName); Reset(F); Readln(F, S); Edit1.Text := S; finally sl.free; //Objekt wieder freigeben end; |
Re: CSV --> Stringlist --> Stringlist zerlegen -->
Hi Leon,
Du liest ja nur die erste Zeile in ein Editfeld ein. Und dann noch mal die ganze Datei in die Stringliste. Die soll aber dem komfortablen "Zerpflücken" der einzelnen Zeilöen dienen. Warum hast Du das Beispiel nicht übernommen? |
Re: CSV --> Stringlist --> Stringlist zerlegen -->
Delphi-Quellcode:
var
sl: TStringList; zeilennr: integer; DateiName, S: String; F: TextFile; begin OpenDialog1.Execute; // Das Ergebnis steht in FileName // ShowMessage(OpenDialog1.FileName); DateiName := OpenDialog1.FileName; //Der Pfad wird in die Datei gestellt // ShowMessage(DateiName); sl:=TStringList.Create; //Objekt erzeugen sl.Delimiter := ';'; try //sl.LoadFromFile(DateiName); //Datei in Stringliste laden AssignFile(F, OpenDialog1.FileName); Reset(F); Readln(F, S); //Erste Zeile laden sl.DelimitedText := s; //Zeile der StringListe zuweisen, nun kann man mit der Eigenschaft Count die Anzal der Spalten auslesen, die Spaltenname sthen dann in der Stringliste //sl.Strings[0] enthält Namen erste Spalte usw. While not Eof(F) do //Daten laden begin Readln(F, S); Edit1.Text := S; sl.DelimitedText := s; // Datenzeile wird in Stringliste geschrieben -< Auslesen wie Kopfspalte end; finally sl.free; //Objekt wieder freigeben end; |
Re: CSV --> Stringlist --> Stringlist zerlegen -->
@Union:
weil ich deinen thread erst gelesen habe nachdem ich geantwortet hatte. ;o) zumindest läuft es erst mal ohne fehlermeldung, wobei ich deine zeilen mit der datenbank noch ausgemarkert habe. ich muss das ergebnis vorerst mal visuell überwachen. damit ich verstehe was das prog macht. wie kann ich also die informationen sichtbar machen? also zum beispiel: wie viele spalten? wie heißen diese Spalten? wie heißen die restlichen Inhalte? das ist für mich wichtig, weil ich die sichtbaren ergebnisse besser verstehen kann. wenn das geschafft ist, kann ich mich auch im geiste damit auseinander setzen. danke für eure geduld. ich bemühe mich... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:21 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