Delphi-PRAXiS
Seite 1 von 4  1 23     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   CSV --> Stringlist --> Stringlist zerlegen --> in DB auft. (https://www.delphipraxis.net/65087-csv-stringlist-stringlist-zerlegen-db-auft.html)

Leon de Bar 12. Mär 2006 10:22

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

mkinzler 12. Mär 2006 10:43

Re: CSV --> Stringlist --> Stringlist zerlegen -->
 
Zitat:

Zitat von Leon de Bar
1. Wie stelle ich fest, wieviele Spalten die CSV hat. Die Trennung hier ist ein Semikolon (;)

StringList.Count;
Zitat:

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.
Wie du gesagt hat die erste Zeile einlesen und dann kannst du die Feldname aus der StringListe auslesen

Delphi-Quellcode:
for i := 0 to StringList.Count -1 do
begin
  ...
  s := StringList.Strings[i];
  ...
end;
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.
Leon[/quote]

Wie 2. in jeder weiteren Zeile kannst du die Werte wie in 2. die Name auslesen

marabu 12. Mär 2006 10:45

Re: CSV --> Stringlist --> Stringlist zerlegen -->
 
Hallo Leon,

vielleicht hilft es dir, wenn du eine kleine Beispielanwendung studierst: klick

Grüße vom marabu

Leon de Bar 12. Mär 2006 12:22

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?

mkinzler 12. Mär 2006 12:26

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.

Union 12. Mär 2006 12:32

Re: CSV --> Stringlist --> Stringlist zerlegen -->
 
Hi,

schau Dir mal die Routine in diesem Thread an http://www.delphipraxis.net/internal...=480681#480681

Leon de Bar 12. Mär 2006 12:43

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:
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;
Sicher fehlen hier noch schleifen das ist klar. Kannst du damit was anfangen?

Union 12. Mär 2006 12:48

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?

mkinzler 12. Mär 2006 12:52

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;

Leon de Bar 12. Mär 2006 12:59

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 08:12 Uhr.
Seite 1 von 4  1 23     Letzte »    

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