Deutsch
Forum

Trennzeichenproblem bei CSV-Dateien

 

Bernd
Kaiser
Hallo Frank,

ich habe folgendes Problem: In meinem Datenbestand befinden sich in den Textfeldern (leider) auch Kommas (Kommata???) (z.B. Mausefalle, vergoldet), die ListView als Trennzeichen verwenden möchte. Nun kann man den Anwendern alle möglichen Zeichen (|,#,@) in Textfeldern verbieten, beim Komma ist das eher nicht möglich. Was tun?

Beim SQL-Export werden schon Pipes als Trennzeichen eigesetzt.

Lässt sich das Trennzeichen analog zu Excel oder Access nicht variabel, z.B. als Parameter, gestalten?

Gruß Bernd
 
Win98SE, Profan 7.5
--------------------------------------------------
Programmieren ist wie küssen:
Man kann darüber reden, man kann es beschreiben,
aber man weiß erst, was es bedeutet, wenn man es getan hat.
20.04.2005  
 



Und wenn Du das Komma nicht verbietest - sondern vorm speichern und nach dem laden translatest - z.B. in ein µ ?

Nur so ne idee...
 
20.04.2005  
 




Bernd
Kaiser
Hallo Frank,

ich habe auf die Anwendung selbst keinen Einfluß, da ich mir nur die Daten in den Paradox-Tabellen ausborge. Zudem halte ich jede weitere Manipulation an den Daten für gefährlich, man weiß im voraus nie was dabei rauskommt. CSV hat da nach meiner Erfahrung sowieso seine Tücken, da man nicht ausschließen kann, dass das Feldtrennzeichen doch mal in Textfeldern verwendet wird. Streng genommen müsste man den Datenstrom während der Erstellung der CSV-Datei auf die Verwendung von Trennzeichen in den Feldern kontrollieren. Aber das ist eine eigene Geschichte.

Um bei meinem Beispiel mit der Mausefalle zu bleiben: Im Listview, in dem die Datensätze angezeigt und ausgewählt werden sollen würde nach Deinem Vprschlag dann statt Mausefalle, vergoldet sowas wie Mausefalleµ vergoldet stehen. Das wäre gegenüber dem potenziellen Anwender in höchstem Maße erklärungsbedürftig, mindestens.

Gruß Bernd
 
Win98SE, Profan 7.5
--------------------------------------------------
Programmieren ist wie küssen:
Man kann darüber reden, man kann es beschreiben,
aber man weiß erst, was es bedeutet, wenn man es getan hat.
20.04.2005  
 



Ich bin zwar nicht Frank aber ist auch nebensächlich.

Das mit dem µ Zeichen - Du sollstest auch nur vor dem Speichern deinen Separator in µ Translaten - und nach dem Laden (vor dem anzeigen) das µ wieder in ein ,.

Salve, iF (<-- nicht Frank, iF) ^^
 
20.04.2005  
 




Michael
Wodrich
Ist das CSV-Format nicht sowieso so definiert, daß nur Zahlenfelder für sich stehen aber die Textfelder in Anführungszeichen eingeschlossen werden?

Dann ist ein Komma oder mehrere Kommata (oder Kommas; beides korrekt) im Textfeld doch kein Problem.

Jedes Programm das CSV-konform schreibt, wird bei vorkommendem Trennzeichen im Textfeld diese Daten in Anführungsstriche setzen.

Jedes Programm das CSV-konform liest, wird bei beginnendem Anführungszeichen nach dem abschließendem Anführungszeichen für das Feldende suchen (und damit enthaltene Trennzeichen ignorieren).

Es gibt auch CSV-exportierende Programme, die hier mehrere unterschiedliche Varianten anbieten. Dann wähle immer die Variante, die den Text in Anführungsstriche setzt.

MfG
Michael Wodrich
 
Programmieren, das spannendste Detektivspiel der Welt.
20.04.2005  
 




Bernd
Kaiser
Also, ich habe soweit ich weiss keinen Einfluß auf das Format der CSV-Datei, da diese über SQL aus einer Paradox-Tabelle in Profan erzeugt wird (SQL.DAT). Dort ist das Pipe der Feldtrenner und die Feldinhalte stehen einfach dazwischen. Dann schreibt Profan per SQL wohl keine richtigen CSV-Dateien.



Und wie schon oben gesagt, auf die Anwendung und ihre Art der Datenspeicherung habe ich keinen Einfluss. Bin ich tatsächlich der erste, der dieses Problem mit der SQL.DAT hat? Ungläubig guckt.

Die SQL.DAT erst mit Profan-Mitteln zu ändern und alle Feldinhalte in zu setzen mag ich auch nicht, das kostet alles nur Zeit. Oder bleibt mir tatsächlich kein anderer Weg?

Gruß Bernd
 
Win98SE, Profan 7.5
--------------------------------------------------
Programmieren ist wie küssen:
Man kann darüber reden, man kann es beschreiben,
aber man weiß erst, was es bedeutet, wenn man es getan hat.
20.04.2005  
 



Profan schreibt schon richtige CSVs.

CSV heißt ja nur - das sich auf ein Trennzeichen geeinigt wurde. Hierbei spielt das Trennzeichen selbst keine Rolle.

@Michael: Die Problematik ist auch nicht einfach mit getan - stell Dir einfach vor jemand nutzt im Text - und schon fangen wir wieder von vorne an.

Deshalb sage ich ja - die einzige Möglichkeit CSVs richtig zu Schreiben wäre - das man vor dem Scheiben den CS (Characterseparator) aus dem Text herausfiltert - bzw. ggf. in ein anderes Zeichen konvertiert.

Bei der Anzeige der CSV muß das natürlich wieder rückgängig gemacht werden.

Also doch alles kein Problem - Translate$ ist ja auch nicht langsam.

Salve.
 
20.04.2005  
 




Michael
Wodrich
Soweit mir bekannt, kann man bei Profan auch mehrere Zeichen als Trennzeichen angeben.

Was hälst Du davon, folgendes anzugeben: ,
(also 3 Zeichen: Anführungszeichen, Komma, Anführungszeichen)

Jetzt fehlt als Nachbearbeitung nur noch das führende Anführungszeichen ganz vorne und das abschließende ganz hinten.
Ich kann es mangels Datenbank nicht testen, versuchs einfach mal...

MfG
Michael Wodrich

PS: Wenn Du das Trennzeichen so nicht definiert bekommst (wegen der Anführungszeichen), dann setze: CHR$(34)+CHR$(44)+CHR$(34)
 
Programmieren, das spannendste Detektivspiel der Welt.
20.04.2005  
 




Frank
Abbing
Hallo,

Michael hat schon recht. Das CSV-Format sieht die Lösung des Problems, indem die Items in Anführungszeichen stehen. Und jedes seriöse Ausgabeprogramm unterstützt dieses Feature. Die Listview.dll kann mit beide Varianten umgehen, in Anführungszeichen oder ohne. Trennzeichen sind standartmässig das Komma oder das Semikolon. Auch mit diesem Zeichen kann die Dll umgehen. Sogar Variable Trennzeichen sind kein Problem.
Die Listview.dll hält sich demzufolge an alle Standarts.
Hast du schon versucht, deine Datei in anderen Tabellenprogrammen zu verwenden? Ich bezweifle, dass das beim Aufbau deiner Datei so funktioniert.
Du wirst also kaum umhinkommen, bei der Generierung deiner Dateien darauf zu achten, das Items in Anführungszeichen gebettet werden. Das Anführungszeichen selber mußt du in den Itemtexten natürlich vermeiden. Benutze statt dem doch das ¨ oder das ». Ich könnte auch eine kleine Funktion dazunehmen, die den Sonderfall innerhalb von Anführungszeichen unter berücksichtigung der Trennzeichen untersucht.
 
20.04.2005  
 




Bernd
Kaiser
Hallo,

erst mal besten Dank für die vielen Anregungen. Das Problem hat sich fast von selbst gelöst. Durch ein anderes Problem bin ich auf einen Parameter in Profan aufmerksam geworden, mit dem sich die Feldtrenner bei SQL definieren lassen. Somit stehen nun die Felder in eingebunden, getrennt durch Kommas.

Das löst zwar nicht alles, z.B. im Feldinhalt, hilft mir aber erst einmal weiter.

Besten Dank. Gruß Bernd
 
Win98SE, Profan 7.5
--------------------------------------------------
Programmieren ist wie küssen:
Man kann darüber reden, man kann es beschreiben,
aber man weiß erst, was es bedeutet, wenn man es getan hat.
22.04.2005  
 




Frank
Abbing
Nachtrag:

Das hat zwar nichts mit Bernds Problem zu tun, passt aber auch hierhin.
Bislang konnten diverse Zeichenkombinationen das Csv-Format verwirren, besonders beim Einlesen von Quelltexten. Immerhin kann der Text ja auch Anführungszeichen enthalten und diese sind innerhalb einer Csv-Datei eben nicht erlaubt. Ein Beispiel wäre:

x&=Create(Button,%hwnd,Neue Zeile,0,300,62,20)

Deswegen kommen in der nächsten Version der Listview.dll die Funktionen ListviewToRaw() und RawToListview() hinzu. Das darin genutze Format ist dem Csv-Format sehr ähnlich. Nur wird als Spalten-Trennzeichen Chr$(2) benutzt und als Zeilenende-Erkennung Chr$(3) verwendet. Damit können sämtliche Listviewinhalte sicher archiviert werden, weil Bytes 2 und 3 dort nie vorkommen werden.

 
20.10.2006  
 




RGH
Nur eine kleine Anmerkung: Im deutschen Sprachraum ist der Standard beim CSV-Format, daß die Felder durch ein Semikolon getrennt werden, da das Komma ja als Dezimalzeichen bei Zahlenwerten vorkommt. Zumindest hält es z.B. ein deutsches Excel so. Im englischen Sprachraum ist das Komma Standardtrennzeichen und der Dezimaltrenner ein Punkt. Strings sollten natürlich immer in Anführungszeichen stehen, da sowohl das eine als auch das andere Trennzeichen vorkommen kann.

Gruß
Roland
 
Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4
20.10.2006  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

12.182 Betrachtungen

Unbenanntvor 0 min.
RudiB.02.08.2021
Manfred Barei11.03.2020
kustg10.05.2019
Claus Müller25.11.2017
Mehr...

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie