AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

CSV Dateien erzeugen und wieder einlesen

Ein Thema von needatip · begonnen am 14. Jan 2007 · letzter Beitrag vom 14. Jan 2007
Antwort Antwort
needatip

Registriert seit: 11. Jan 2004
246 Beiträge
 
Delphi 10.4 Sydney
 
#1

CSV Dateien erzeugen und wieder einlesen

  Alt 14. Jan 2007, 17:27
Hallo,
ich erzeuge aus einer Paradox Tabelle eine ganz einfache CSV Datei mittels:

Delphi-Quellcode:
Var Zeile:String;
    StringList1 : TStringList;
    i : integer;
begin
Zeile:='';
StringList1 := TStringList.Create;
Try
Table1.First;
// Feldnamen schreiben
For i:=0 to Table1.FieldCount-1 do
    Zeile:=Zeile+Table1.Fields[i].FieldName+';';
StringList1.Add(Zeile);
// Datensätze schreiben
While NOT Table1.Eof do Begin
   Zeile:='';
   For i:=0 to Table1.Fields.Count-1 do
        Zeile:=Zeile+Table1.Fields[i].AsString+';';
   StringList1.Add(Zeile);
   Table1.Next;
End;
StringList1.SaveToFile('c:\export\xliste.CSV');
Finally
  StringList1.Free;
End;
end;
Diese Datei möchte ich dann mittels der JvCsvDataSet Komponente in einem anderen Programm, das auf einen MS SQL Server zugreift, einlesen.

Beim Einlesen bekomme ich die Fehlermeldung:
Zitat:
Unexpected error parsing CSV Field Definitions
Öffne ich aber die CSV Datei in Excel und speichere diese dort ohne Änderung wieder ab, liest die Komponente diese Datei einwandfrei ein. Excel muss also irgendeine Information hinzufügen.

Was mache ich also beim Erzeugen der Datei falsch bzw. was fehlt der Datei für eine Information????
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: CSV Dateien erzeugen und wieder einlesen

  Alt 14. Jan 2007, 17:29
Es könnte das letzte Semikolon jeder Zeile sein, welches überflüssig ist.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Hador
Hador

Registriert seit: 11. Dez 2004
Ort: Recke
682 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: CSV Dateien erzeugen und wieder einlesen

  Alt 14. Jan 2007, 18:54
Oder Trennt Excel die Datensätze durch Kommata statt durch ein Semikolon.
Zumindest die alten Excel-Versionen haben das gemacht.
Lars Kiesow
http://www.larskiesow.de

Computer gehorchen deinen Befehlen, nicht deinen Absichten.
  Mit Zitat antworten Zitat
IngoD7

Registriert seit: 17. Feb 2004
464 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: CSV Dateien erzeugen und wieder einlesen

  Alt 14. Jan 2007, 19:13
Zitat von mkinzler:
Es könnte das letzte Semikolon jeder Zeile sein, welches überflüssig ist.
Ja, es könnte am ehesten das letzte Semikolon sein.
Allerdings sollte ein Semikolon am Ende keinen Fehler beim Einlesen erzeugen, sondern einfach ein leeres Feld hinten am Datensatz!

Excel behandelt das auch so und lässt wahrscheinlich das letzte Semikolon dann beim Abspeichern weg. Überprüfe das. Dann hast du den Grund für den Fehler ... und den Beweis, dass die Komponente fehlerhaft einliest.

Unabhängig davon solltest du aber deine Routine umschreiben, denn wenn kein Feld mehr folgt, sollte auch kein abschließendes Semikolon geschrieben werden.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: CSV Dateien erzeugen und wieder einlesen

  Alt 14. Jan 2007, 19:17
Zitat:
Excel behandelt das auch so und lässt wahrscheinlich das letzte Semikolon dann beim Abspeichern weg. Überprüfe das. Dann hast du den Grund für den Fehler ... und den Beweis, dass die Komponente fehlerhaft einliest.
Das Verhalten ist nicht fehlerhaft, es wird ein weiteres Feld erzeugt. Dieses hat aber keinen Namen, und das erzeugt den Fehler.
Markus Kinzler
  Mit Zitat antworten Zitat
IngoD7

Registriert seit: 17. Feb 2004
464 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: CSV Dateien erzeugen und wieder einlesen

  Alt 14. Jan 2007, 19:31
Zitat von mkinzler:
Das Verhalten ist nicht fehlerhaft, es wird ein weiteres Feld erzeugt. Dieses hat aber keinen Namen, und das erzeugt den Fehler.
Ich weiß jetzt nicht genau, was du meinst.

Ich meine folgendes:
Ein Semikolon als Zeilenende in einer CSV-Datei ist kein Fehler. Das bedeutet nur, dass ein weiteres, leeres Feld folgt.
Eine Komponente, die daraus einen Fehler erkennt, die hat einen Fehler.
  Mit Zitat antworten Zitat
needatip

Registriert seit: 11. Jan 2004
246 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: CSV Dateien erzeugen und wieder einlesen

  Alt 14. Jan 2007, 19:37
Stimmt !
Hab jetzt die Routine so geschrieben, daß das letzte Semikolon wegbleibt.
Jetzt funzts !!!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:22 Uhr.
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