![]() |
Array in csv schreiben
Ich dachte, dass es einfach ist den Ihnalt eines Array's in eine csv zu schreiben, denn umgekehrt ist es das.
Was ich habe:
Delphi-Quellcode:
Das Seltsame daran ist, dass es auf dem Entwickler-PC funktioniert, aber dort auf dem Fileserver, wofür ich das gemacht habe, bekomme ich immer einen E/A-Fehler 32.
AssignFile(output1, Ordner+'A.csv');
if FileExists('A.csv') then begin reWrite(output1,'A.csv'); end else begin FileCreate(Ordner+'A.csv'); end; Reset(output1); for i := 0 to laenge-1 do begin if trim(FeldZeile[i,2])<>'' then zeile:=FeldZeile[i,0]+';'+FeldZeile[i,1]+' '+FeldZeile[i,2]+';'+FeldZeile[i,3]+';'+FeldZeile[i,4] else zeile:=FeldZeile[i,0]+';'+FeldZeile[i,1]+';'+FeldZeile[i,3]+';'+FeldZeile[i,4]; append(output1); WriteLn(output1,Zeile); end; CloseFile(output1); Setlength(FeldZeile,0,0) Der Programmbenutzer hat an dieser Stelle volles schreib.- und änderungsRechte. Kann mir da jemand bitte helfen? |
AW: Array in csv schreiben
rewrite : Erstellt eine neue Datei und öffnet sie anschließend.
reset : Öffnet eine vorhandene Datei. Also:
Delphi-Quellcode:
if FileExists(Ordner + 'A.csv') then begin
Reset(output1); end else begin reWrite(output1); end; |
AW: Array in csv schreiben
Ich würde als erstes mal aufräumen, ob "Ordner" nun zum Dateinamen gehört oder nicht, das wechselt derzeit in jeder Zeile.
|
AW: Array in csv schreiben
Ok, klingt logisch, DANKE.
Ich habe die IF gelöscht, dafür nur noch
Delphi-Quellcode:
Soll ja auch so sein, immer überschreiben...
reWrite(output1,Ordner+'A.csv');
|
AW: Array in csv schreiben
Wenn du eine CSV nach
![]() ![]() ![]() ![]() ![]() Umgekehrt funktioniert das leider nur unter der Bedingung, wenn kein Feld einen Zeilenumbruch beinhalted ;) |
AW: Array in csv schreiben
Zitat:
![]() |
AW: Array in csv schreiben
Zitat:
Delphi-Quellcode:
als Trennzeichen benötigt
;
|
AW: Array in csv schreiben
Nicht vergessen TStrings.StrictDelimiter auf True zu setzen.
|
AW: Array in csv schreiben
Zitat:
|
AW: Array in csv schreiben
Zitat:
|
AW: Array in csv schreiben
Zitat:
Auch wenn eine CSV irgendwie als CommaSeparatedValues zu verstehen ist, erzeugt der TE Dateien mit einem Semikolon. Ist dass dann SSV? Da CSV eh nur ein Quasi-Standard ohne gültige Definition (RFC 4180 ist quasi ein Vorchlag) kann ich auch behaupten es bedeutet customCharacterSeparatedValues :mrgreen: |
AW: Array in csv schreiben
Zitat:
Gruß K-H |
AW: Array in csv schreiben
Die Wikipedia spricht auch von Character-Separated-Values und eben dass es nicht zwingend ein Komma sein muss.
Ja, es macht sich immer gut, vor einer Kommunikation sich auf einen Sprach-Kontext zu einigen, wie immer der auch aussieht. |
AW: Array in csv schreiben
Zitat:
Deshalb ist CSV als Datenaustauschformat auch denkbar ungeeignet. |
AW: Array in csv schreiben
Zitat:
Mit Exceldateien ist Ärger eher die Regel als die Ausnahme. - unterschiedlichen Dateiformaten - OLE-Funktionen die von der Excelversionen abhängig, entgegen der Dokumentation unterschiedlich falsch funktionieren - Komponenten in Fremdprogrammen die Exceldateien nur lesen können, wenn ein ganz bestimmtes Zellformat verwendet wurde (bei dem einen alles als Text formatiert, der nächste nur ohne Format) |
AW: Array in csv schreiben
Zitat:
"Probleme" gibt es auch nicht, wenn ich selbst lese, was ich irgendwo hin schreibe, oder Binärformate nehme (natürlich gut dokumentiert). Aber wozu gibt es wohl Standards? Wenn ich von 'extern' irgendwelche Daten bekommen soll, bestehe ich persönlich auf XML + Schema. Dann validiere ich einkommende Daten gegen das Schema und wenn das passt, passt es. Anders herum validiere ich alles, was rausgeht und wenn das passt, bin ich aus dem Schneider. PS: CSV ist solcher Müll, das selbst mein SSMS (SQL Management Studio), welches *CSV* exportieren kann, nicht mit EXCEL klar kommt. Beides auf der selben Maschine installiert. Beides von Microsoft. Gleicher Laden, andere Abteilung. Von wegen 'keine Probleme' :-) |
AW: Array in csv schreiben
Zitat:
|
AW: Array in csv schreiben
Eine Firma bekommt Daten von über 40 Zulieferern natürlich per CSV. Die Firma ist eine Quasibehörde und daher ist diese Vereinbarung taufrisch, aus dem Jahre 1976. Seit 10 Jahren wird erst an der Nachfolgespezifikation gearbeitet, also muss die derzeit gültige taufrische Spezifikation noch einige Jahre halten. Also CSV..
40 Zulieferer. Für jeden Zulieferer einen eigenen Dialog. Speichern der Einstellungen bringt etwas, aber nicht viel, weil die Daten manchmal auch per Dienstleister im Ausland (manuell) erfasst werden. Ja. Elektronisch erfasste Daten werden ausgedruckt, ins A.A.Ausland geschickt, dort eingetippt und dann per CSV an die Quasibehörde geschickt. Per FTP. Mal mit Komma, mal mit Semikolon. Oder als WORD-Datei. Willkürlich formatiert. Oder EXCEL. Mal so, mal so. Aber manchmal wird -höhöhö- der Ausdruck der vormals elektronisch erfassten Daten auch direkt an die Quasibehörde geschickt. Also ca. 500kg Papier. Die werden dann von eigens eingestellten professionellen Abtippern eingegeben. Zweimal. Weil diese Quasibehörde gibt es zwei Mal. Mmf. Grmpfl. Ich schweife ab. Ich bin nicht mehr bei dem Verein. Gott. Sei. Dank. Wo war ich? Ach ja. In der Klapsmühle. Nee, also in einen Importfilter mal einen Eingabe/Konfigurationsdialog einzubauen. Das hat was. Merke ich mir. :cyclops: |
AW: Array in csv schreiben
Ich versuche mich kurz zu fassen, weil wir OT sind.
Zitat:
Die größeren Datenlieferungen bringen es täglich leicht auf 100 MB. Da purzeln die Gigabytes. So - jetzt stell dir vor, das seien alles XMLs. Wieviel overhead würde das bedeuten? Mir fehlt die Erfahrung das einzuschätzen - ich tippe auf das fünffache oder zehnfache Volumen. Bitte korrigieren, falls ich daneben liege. In jedem Falle ist das als Kostenfaktor wegen Speicherung und Sicherung nicht zu unterschätzen, zumindest in der Liga, in der wir spielen. Es gibt noch einen zweiten Aspekt: csv-Dateien harmonieren gut mit relationalen Datenbanktabellen. Mit direct load sind die Daten im Nu in der Datenbank, wenn normalisierte Stammdaten in eigenen Tabellen vorgehalten werden müssen. Erst ein XML zu parsen, nur um es letztlich doch in relationale Tabellen zu stecken, wäre ein unsinniger Aufwand, oder? Zitat:
Zitat:
Zitat:
|
AW: Array in csv schreiben
Overhead? Das ist doch vollkommen egal. (Validiertes) XML ist weltweit identisch. Du kannst kein wohlgeformtes und validiertes XML bekommen, was Dir plötzlich Probleme macht. Wohl aber eine vollkommen zerschurbelte CSV-Datei.
Speicherplatz? Zip das Zeugs. Zitat:
Zitat:
Wenn deine Zulieferer alle mitspielen und wissen, was sie tun, können sie auch proprietäres Binärformat schicken. Jetzt schicken sie ein proprietäres Text-Format, aber wenigstens spielen sie mit. PS: XML in einen Server geht genauso schnell und das Aufdröseln in Tabellen auch. Sind halt ein paar Zeilen mehr. Einmalig. Aber jedem das Seine. CSV hat jedenfalls imho in der professionellen Softwareentwicklung und im Datenaustausch, der etwas auf sich hält, nichts verloren. Das ist nicht abwertend, sondern in meinem Umfeld so. |
AW: Array in csv schreiben
Zitat:
Zitat:
Weiter gibt es einige Kandidaten, die es nicht schaffen, Quotes und Delimiter richtig zu escapen. Die sich sogar auf mehrmalige Nachfrage weigern, es richtig zu machen. Im Großen und Ganzen aber gibt es keine Zweifel wie ein korrektes csv aussehen muß. Zitat:
Solch ein Binärformat wäre die Hölle für mich, ebenso wie für den Support, wenn ein Kunde anruft und behauptet, die eine Buchung aus dem Jahr 2005 sei falsch. Zitat:
Und, naja, daß ein Aufdröseln eines XMLs in relationale Tabellen so schnell geht wie der Import bereits aufgedröselter csv-Dateien - das bezweifle ich. Denkst du, das Aufdröseln gibt es umsonst? Zitat:
|
AW: Array in csv schreiben
Zitat:
Gruß K-H |
AW: Array in csv schreiben
Zitat:
Wichtig ist doch, das man mit externen Zulieferern belastbare Vereinbarungen trifft, die jeder einhalten kann, und die zudem mit frei verfügbaren Tools ('XML Validator') nachzuprüfen sind. Ich kann in meinen Vertrag ja auch schreiben, das eine Datei erst dann akzeptiert wird, wenn sie mit Hilfe der XSD auf ![]() Zitat:
Das das intern nicht so einfach ist oder -noch schlimmer- bei Kunden gar nicht durchsetzbar ist, steht auf einem anderen Blatt. Aber wenn ich o.g. Prämisse nicht mit den eingehenden Rohdaten bekomme, dann schreibe ich mir einen Filter, der das exotische Fremdformat in mein einheitliches Import-Format übersetzt. Und das geht dann durch den Importer. Die Krönung ist der Datenlieferant aus den o.g. Zulieferern, der seine Daten in Word als Tabelle formatiert, aber jedes mal von einem anderen Praktikanten und sich dann wundert, das man das nur abtippen kann und nicht elektronisch einlesen. Aber ein sich änderndes CSV-Format ist auch nicht schlecht. Wir sollten echt einen WTF-Thread aufmachen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:45 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-2025 by Thomas Breitkreuz