Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Array in csv schreiben (https://www.delphipraxis.net/183139-array-csv-schreiben.html)

hirsch 15. Dez 2014 13:34

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:
  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)
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.
Der Programmbenutzer hat an dieser Stelle volles schreib.- und änderungsRechte.
Kann mir da jemand bitte helfen?

baumina 15. Dez 2014 13:43

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;

Zoot 15. Dez 2014 14:08

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.

hirsch 15. Dez 2014 15:27

AW: Array in csv schreiben
 
Ok, klingt logisch, DANKE.

Ich habe die IF gelöscht, dafür nur noch
Delphi-Quellcode:
reWrite(output1,Ordner+'A.csv');
Soll ja auch so sein, immer überschreiben...

Sir Rufo 15. Dez 2014 15:49

AW: Array in csv schreiben
 
Wenn du eine CSV nach Bei Google suchenRFC 4180 erzeugen möchtest, dann packe für jede Zeile alle Felder in eine Delphi-Referenz durchsuchenTStringList und schreibe dann den Delphi-Referenz durchsuchenTStringList.DelimitedText als resultierende Zeile. Die Stringlist kümmert sich dann auch um das korrekte Setzen des Delphi-Referenz durchsuchenTStrings.QuoteChar und Delphi-Referenz durchsuchenTStrings.Delimiter und du brauchst dir keinen Kopf machen.

Umgekehrt funktioniert das leider nur unter der Bedingung, wenn kein Feld einen Zeilenumbruch beinhalted ;)

Uwe Raabe 15. Dez 2014 16:09

AW: Array in csv schreiben
 
Zitat:

Zitat von Sir Rufo (Beitrag 1283487)
Wenn du eine CSV nach Bei Google suchenRFC 4180 erzeugen möchtest, dann packe für jede Zeile alle Felder in eine Delphi-Referenz durchsuchenTStringList und schreibe dann den Delphi-Referenz durchsuchenTStringList.DelimitedText als resultierende Zeile. Die Stringlist kümmert sich dann auch um das korrekte Setzen des Delphi-Referenz durchsuchenTStrings.QuoteChar und Delphi-Referenz durchsuchenTStrings.Delimiter und du brauchst dir keinen Kopf machen.

Du meinst doch sicher Delphi-Referenz durchsuchenTStringList.CommaText, oder?

Sir Rufo 15. Dez 2014 16:12

AW: Array in csv schreiben
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1283496)
Zitat:

Zitat von Sir Rufo (Beitrag 1283487)
Wenn du eine CSV nach Bei Google suchenRFC 4180 erzeugen möchtest, dann packe für jede Zeile alle Felder in eine Delphi-Referenz durchsuchenTStringList und schreibe dann den Delphi-Referenz durchsuchenTStringList.DelimitedText als resultierende Zeile. Die Stringlist kümmert sich dann auch um das korrekte Setzen des Delphi-Referenz durchsuchenTStrings.QuoteChar und Delphi-Referenz durchsuchenTStrings.Delimiter und du brauchst dir keinen Kopf machen.

Du meinst doch sicher Delphi-Referenz durchsuchenTStringList.CommaText, oder?

Sicher nicht, denn hier wird das
Delphi-Quellcode:
;
als Trennzeichen benötigt

Blup 15. Dez 2014 16:48

AW: Array in csv schreiben
 
Nicht vergessen TStrings.StrictDelimiter auf True zu setzen.

Sir Rufo 15. Dez 2014 17:06

AW: Array in csv schreiben
 
Zitat:

Zitat von Blup (Beitrag 1283503)
Nicht vergessen TStrings.StrictDelimiter auf True zu setzen.

Ist aber auch nur für den anderen Weg (einlesen) wichtig und der ist, wie schon gesagt, eh limitiert und darum sollte man das Einlesen anders machen.

Uwe Raabe 15. Dez 2014 17:08

AW: Array in csv schreiben
 
Zitat:

Zitat von Sir Rufo (Beitrag 1283498)
Sicher nicht, denn hier wird das
Delphi-Quellcode:
;
als Trennzeichen benötigt

RFC 4180 beschreibt doch COMMA (%x2C) als Trennzeichen zwischen den Feldern, oder?


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:05 Uhr.
Seite 1 von 3  1 23      

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