![]() |
append in Tstringlist einbauen
Hallo,
ich habe eine Menge von Daten in einer Datei (zwischenspeicher.txt), die Zeilenumbrüche enthalten. Die Zeilenumbrüche mache ich raus mit
Delphi-Quellcode:
Jetzt möchte ich die bereinigten Daten an einer anderen Datei(datensatz.csv) in eine neue Zeile anhängen.
var daten: TSourcelist;
daten := TStringlist.create; daten.loadfromfile('zwischenspeicher.txt'); daten.text := stringreplace (daten.text, #13#10, '', [rfreplaceall]); Doch wie bekomme ich jetzt ein append dazwischen, bevor ich mit
Delphi-Quellcode:
das ganze wieder schliesse!
daten.savetofile('datensatz.csv')
Wahrscheinlich geht das einfacher als ich denke. Hoffe, ihr könnt mir helfen! moperswings |
Re: append in Tstringlist einbauen
Hallo,
eine Variante wäre:
Delphi-Quellcode:
Alternativ kannst Du auch direkt an einen
var daten: TStringList;
sTemp: string; daten := TStringlist.create; daten.loadfromfile('zwischenspeicher.txt'); sTemp := stringreplace (daten.text, #13#10, '', [rfreplaceall]); daten.loadfromfile('datensatz.csv'); // wenn Du ein neues Leerzeichen hinnimmst, dann: daten.Add(sTemp); // oder direkt: daten.Text := daten.Text + sTemp; // und abschließend speichern daten.savetofile('datensatz.csv'); ![]() Bist Du sicher, dass Du jetzt ohne jedes Leerzeichen arbeiten willst? (Ich habe Deine anderen Diskussionen zum Thema CSV nur am Rande verfolgt.) Jürgen |
Re: append in Tstringlist einbauen
Stimmt, dass mit den Leerzeichen war nur ein versehen.
Danke für den Tipp und den Hinweis. Ich probier Deinen Vorschlag jetzt mal aus. |
Re: append in Tstringlist einbauen
Bei
Delphi-Quellcode:
bekomme ich die Fehlermeldung inkompatible typen string und set!
sTemp := stringreplace (daten.text, #13#10, [rfreplaceall]);
set ist eine Menge! Wo ist da der Zusammenhang? |
Re: append in Tstringlist einbauen
Bei dir fehlt ein Parameter. :)
Die Flags, die du für das Ersetzen setzt ([rfReplaceAll]), müssen eine Position nach hinten. :) An der dritten Stelle wird ein String erwartet, deshalb der Fehler "Set <-> String". |
Re: append in Tstringlist einbauen
Es fehlt auch ein Parameter
Delphi-Quellcode:
sTemp := stringreplace (daten.text, #13#10, '', [rfreplaceall]);
|
Re: append in Tstringlist einbauen
Zitat:
- Text indem die Zeichen ersezt werden sollen - Zeichen die ersetzt werden sollen - Zeichen die anstellen des zu ersetzenden Zeichen kommen - Und ein set wie ersetzt werden soll. Bei Dir fehlt ein Parameter. Grüße Klaus |
Re: append in Tstringlist einbauen
Hallo moperswings,
in einem anderen thread hattest du die Erkenntnis, dass du im Memo die Eigenschaft WantReturns ausschalten konntest um die unbenötigten Zeilentrenner los zu werden. Um eine oder mehrere Textzeilen an eine Datei anzuhängen muss man nicht unbedingt die Zieldatei zuerst komplett in den Hauptspeicher laden - bei Log-Dateien mitunter gar nicht möglich. Es geht auch so:
Delphi-Quellcode:
Das lässt sich natürlich auch in einer abgeleiteten Klasse unterbringen - wer will.
procedure AppendToFile(s: TStrings; fn: TFileName);
var i: Integer; begin with TFileStream.Create(fn, fmOpenWrite or fmShareDenyWrite) do begin Position := Size; for i := 0 to Pred(s.Count) do begin WriteBuffer(s[i][1], Length(s[i])); WriteBuffer(sLineBreak[1], Length(sLineBreak)); end; Free; end; end; Grüße vom marabu |
Re: append in Tstringlist einbauen
Jetzt läufts, das mit dem Parameter war mein Fehler, sorry!
@marabu Ich habe bei meinen Memos überall die Zeilenumbrüche ausgeschaltet - und trotzdem habe ich Fehler in meiner Datei, die so keinen Sinn ergeben. Am Editor scheint es nicht zu liegen. Die Daten werden mit den Umbrüchen gespeicht - und ich weiss, nicht warum. Jetzt löse ich das Problem halt mit stringreplace. Ich danke Euch und wünsche allen ein schönes Wochenende! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:38 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