![]() |
Append_problem mit textfiles
Hallo Community,
ich sitze hier grade an meinem kleinen programm und komme nicht weiter. Es geht um eine prozedur, die einfach nur einen string in eine textfile schreiben soll... es soll im csv format geschrieben werden.... meine zeile würde ungefähr so aussehen: ;"COTPOZ";"0";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;"1";"Heimteam";"Gastteam";"COT"; "POZ";"Stadion";"Datum";"Kick-Off";"Wetter";"Art";" Bemerkungen";;;;; is ein bissl groß, aber genauso benötige ich diesen string in genau einer zeile... doch mit append und write wird immer einen zeilenumbruch zwischen dem " und Bemerkungen eingefügt... durch diesen zeilenumbruch kann ich aber dann diese zeile in delphi nicht mehr korrekt auslesen, da ein teil fehlt... (zur weiterverarbeitung in einer stringgrid, brauch aber csv, da ich sie auhc für internetdatenbank benötige)... wie kann ich denn dem prog beibringen, dass er keinen umbruch machen soll??? hoffe ihr könnt mir helfen und bedanke mich schon mal im vorraus für die antworten... mfg homerunjack |
Re: Append_problem mit textfiles
Du arbeitest also mit AssignFile+Append?
Aber eigentlich fürgt Write selber da keine Zeilenumbrüche ein. Wie sieht denn dein Code zum Anhängen aus? |
Re: Append_problem mit textfiles
Zitat:
Für das, was Du vorhast, würde sich eine TStringList anbieten. Die ist einfacher zu handhaben und bietet mit Laden und Speichern viele Features. Musst mal in der Hilfe nachlesen. Grüße, Messie |
Re: Append_problem mit textfiles
Delphi-Quellcode:
bruecke ist eine stringgrid...da stehen die daten drinne...die hat 73 spalten, und wegen csv brauch man ja ein paar trennzeichen inna datei...erst hatte ich es so, dass er direkt schreibt und nach dem letzten ein writeln macht...jetzt hatte ichs ma so probiert, beides gleicher effekt...
procedure CSV_export_newgame(Datei:string);
var csv:textfile; j :integer; zeile:string; begin AssignFile(csv, Datei); append(csv); zeile:=''; For j:=0 to 72 do begin If j=72 then If NEW_GAME.Bruecke.Cells[j,0]='' then begin write(csv, zeile); Writeln(csv); end else begin write(csv, zeile);writeln(csv);end else If NEW_GAME.Bruecke.Cells[j,0]='' then //Write(csv, NEW_GAME.Bruecke.Cells[j,0]+';') zeile:=zeile+NEW_GAME.BRUECKE.Cells[j,0]+';' else //Write(csv, '"'+ NEW_GAME.Bruecke.Cells[j,0]+ '";'); zeile:=zeile+'"'+ NEW_GAME.Bruecke.Cells[j,0]+ '";'; end; CloseFile(csv); mit rewrite funktioniert es, jedoch will ich ja anhängen und nicht immer ne neue datei erstellen... und jedenfalls fügt er einen umbruch ein...der ja eigentlich im quelltext nicht angeordnet wurde.. :-) @messi: es gibt dazwischen eigentlich kein zeichen; es wird einfach jedes feld aus der stringgrid bruecke als text ausgelesen und in die zeile geschrieben...ich würde eigtl lieber die stringgrid verwenden, weil ich eigtl alle meine prozeduren schon soweit fertig für stringgrids habe (im export von csv in stringgrids, und auswertungsprozeduren)...nur klappt halt der umstieg von rewrite zu append nicht...'-( |
Re: Append_problem mit textfiles
öh, warum nicht so?
Delphi-Quellcode:
oder mal ganz kurz:
procedure CSV_export_newgame(Datei:string);
var csv:textfile; j :integer; zeile:string; begin zeile:=''; For j:=0 to 71 do begin If NEW_GAME.Bruecke.Cells[j,0]='' then zeile:=zeile+NEW_GAME.BRUECKE.Cells[j,0]+';' else zeile:=zeile+'"'+ NEW_GAME.Bruecke.Cells[j,0]+ '";'; end; // Sollte jetzt ein Zeilenumbruch (CR+LF oder CR oder LF) hier sein, dann schmeiss den raus zeile := StringReplace( zeile, #13#10, '', [ rfReplaceAll ] ); zeile := StringReplace( zeile, #10, '', [ rfReplaceAll ] ); zeile := StringReplace( zeile, #13 , '', [ rfReplaceAll ] ); // Wir schreiben jetzt in einem Rutsch, dann ist die Datei nicht so lange blockiert :) AssignFile(csv, Datei); append(csv); WriteLn( csv, zeile ); CloseFile(csv); end;
Delphi-Quellcode:
oh, einen habe ich noch ... der trennt dann auch den Anzeige- vom Code-Teil:
procedure CSV_export_newgame(Datei:string);
var csv:textfile; begin AssignFile(csv, Datei); append(csv); WriteLn( csv, NEW_GAME.Bruecke.Rows[ 0 ].DelimitedText ); CloseFile(csv); end;
Delphi-Quellcode:
...
NEW_GAME.Bruecke.Rows[ 0 ].Delimiter := ';'; NEW_GAME.Bruecke.Rows[ 0 ].QuoteChar := '"'; CSV_export_newgame( '', NEW_GAME.Bruecke.Rows[ 0 ].DelimitedText ); ... procedure CSV_export_newgame(Datei, Zeile:string); var csv:textfile; begin AssignFile(csv, Datei); append(csv); WriteLn( csv, Zeile ); CloseFile(csv); end; |
Re: Append_problem mit textfiles
Hallo,
guck mal bitte genau nach, ob das Stringgrid da nicht eventuell einen Zeilenumbruch reingemacht hat, bevor Du die Daten ausliest. Bei Leerzeichen und Text, die zusammen breiter sind, als die Stringgridspalte, möchte ich das mal nicht grundsätzlich ausschließen. |
Re: Append_problem mit textfiles
GENIAL...
ich bin begeistert, es funktioniert tadellos... danke SIR Rufo...und das beste ich versteh sogar den quelltext ;-) das mit dem #13#10 kannte ich noch nicht, aber wieder was dazugelernt...(is bestimmt auch das was du meinst nahpets)... gut dann kann ich ja an meinem kleinen projekt weiterschrauben...thx mfg homerunjack |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:06 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