AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

append in Tstringlist einbauen

Ein Thema von moperswings · begonnen am 16. Feb 2007 · letzter Beitrag vom 16. Feb 2007
Antwort Antwort
moperswings

Registriert seit: 27. Mai 2004
Ort: Bad Sooden-Allendorf
240 Beiträge
 
Delphi 6 Professional
 
#1

append in Tstringlist einbauen

  Alt 16. Feb 2007, 10:13
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:
var daten: TSourcelist;
daten := TStringlist.create;
daten.loadfromfile('zwischenspeicher.txt');
daten.text := stringreplace (daten.text, #13#10, '', [rfreplaceall]);
Jetzt möchte ich die bereinigten Daten an einer anderen Datei(datensatz.csv) in eine neue Zeile anhängen.
Doch wie bekomme ich jetzt ein append dazwischen, bevor ich mit
daten.savetofile('datensatz.csv') das ganze wieder schliesse!
Wahrscheinlich geht das einfacher als ich denke.
Hoffe, ihr könnt mir helfen!
moperswings
  Mit Zitat antworten Zitat
Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#2

Re: append in Tstringlist einbauen

  Alt 16. Feb 2007, 10:28
Hallo,

eine Variante wäre:
Delphi-Quellcode:
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');
Alternativ kannst Du auch direkt an einen Delphi-Referenz durchsuchenTFileStream anhängen.

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
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat
moperswings

Registriert seit: 27. Mai 2004
Ort: Bad Sooden-Allendorf
240 Beiträge
 
Delphi 6 Professional
 
#3

Re: append in Tstringlist einbauen

  Alt 16. Feb 2007, 10:30
Stimmt, dass mit den Leerzeichen war nur ein versehen.
Danke für den Tipp und den Hinweis.
Ich probier Deinen Vorschlag jetzt mal aus.
  Mit Zitat antworten Zitat
moperswings

Registriert seit: 27. Mai 2004
Ort: Bad Sooden-Allendorf
240 Beiträge
 
Delphi 6 Professional
 
#4

Re: append in Tstringlist einbauen

  Alt 16. Feb 2007, 10:43
Bei
sTemp := stringreplace (daten.text, #13#10, [rfreplaceall]); bekomme ich die Fehlermeldung inkompatible typen string und set!
set ist eine Menge!
Wo ist da der Zusammenhang?
  Mit Zitat antworten Zitat
Benutzerbild von ste_ett
ste_ett

Registriert seit: 10. Sep 2004
Ort: Dülmen
464 Beiträge
 
Delphi 7 Professional
 
#5

Re: append in Tstringlist einbauen

  Alt 16. Feb 2007, 10:46
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".
Stefan
"Geht nicht!" ist keine Fehlerbeschreibung und "Hab ich schon versucht!" keine Antwort!

Hey, it compiles! Ship it!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: append in Tstringlist einbauen

  Alt 16. Feb 2007, 10:47
Es fehlt auch ein Parameter
sTemp := stringreplace (daten.text, #13#10, '', [rfreplaceall]);
Markus Kinzler
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: append in Tstringlist einbauen

  Alt 16. Feb 2007, 10:48
Zitat von moperswings:
Bei
sTemp := stringreplace (daten.text, #13#10, [rfreplaceall]); bekomme ich die Fehlermeldung inkompatible typen string und set!
set ist eine Menge!
Wo ist da der Zusammenhang?
stringreplace benötigt 4 Parameter
- 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
Klaus
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: append in Tstringlist einbauen

  Alt 16. Feb 2007, 10:51
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:
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;
Das lässt sich natürlich auch in einer abgeleiteten Klasse unterbringen - wer will.

Grüße vom marabu
  Mit Zitat antworten Zitat
moperswings

Registriert seit: 27. Mai 2004
Ort: Bad Sooden-Allendorf
240 Beiträge
 
Delphi 6 Professional
 
#9

Re: append in Tstringlist einbauen

  Alt 16. Feb 2007, 12:01
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!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:05 Uhr.
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