![]() |
Leerzeilen in Tstringlist
hey,
ich habe eine Problem. Ich habe mherere Memofelder und möchte diese in einer Textdatei speichern. Nun sollen aber keine Leerzeilen in die datei und wenn in dem memoFelder 'Serien Termine' steht sollen alle Zeilen ab dieser Zeile auch NICHT gespeichert werden. Ich dachte ich mach das so : aber es sind sowohl leerzeilen in meiner textdatei und die Sachen die in den Memofelder mal drin standen sind hinterher irg. in der Textdatei nicht drin... wordrann könnte das liegen ?! hoffe ihr könnt mir (schon wieder :oops: :oops: ) Helfen lg
Delphi-Quellcode:
ps. ich hab mir sogar mühe gegeben es zu formatieren ^^
procedure TForm1.SpeichernClick(Sender: TObject);
var MoString, DiSTring, MiString, DoString, FrString, SaString, SoString :Tstringlist; PrüfString : String; i : integeR ; ZeilenZähler : Integer ; begin ZeilenZähler := 0 ; MoString := Tstringlist.Create; DiSTring := Tstringlist.Create; MiString := Tstringlist.Create; DoString := Tstringlist.Create; FrString := Tstringlist.Create; SaString := Tstringlist.Create; SoString := Tstringlist.Create; MoString.Add('Montag'); DiString.Add('Dienstag'); MiString.Add('Mittwoch'); DoString.Add('Donnerstag'); FrString.Add('Freitag'); SaString.Add('Samstag'); SoString.Add('Sonntag'); For i := 0 to (Memo1.Lines.Count) do begin Prüfstring := Memo1.Lines[ZeilenZähler]; if(Prüfstring = #13#10) or (Prüfstring ='Serien Termine') then begin break; ZeilenZähler := 0; end Else MoString.Add(Memo1.Lines[ZeilenZähler]) ; Inc(ZeilenZähler); end; For i := 0 to (Memo2.Lines.Count) do begin Prüfstring := Memo2.Lines[ZeilenZähler]; if(Prüfstring = #13#10) or (Prüfstring ='Serien Termine') then begin break; ZeilenZähler := 0; end Else DiString.Add(Memo2.Lines[ZeilenZähler]) ; Inc(ZeilenZähler); end; For i := 0 to (Memo3.Lines.Count) do begin Prüfstring := Memo3.Lines[ZeilenZähler]; if(Prüfstring = #13#10) or (Prüfstring ='Serien Termine') then begin break; ZeilenZähler := 0; end Else MiString.Add(Memo3.Lines[ZeilenZähler]) ; Inc(ZeilenZähler); end; For i := 0 to (Memo4.Lines.Count) do begin Prüfstring := Memo4.Lines[ZeilenZähler]; if(Prüfstring = #13#10) or (Prüfstring ='Serien Termine') then begin break; ZeilenZähler := 0; end Else DoString.Add(Memo4.Lines[ZeilenZähler]) ; Inc(ZeilenZähler); end; For i := 0 to (Memo5.Lines.Count) do begin Prüfstring := Memo5.Lines[ZeilenZähler]; if(Prüfstring = #13#10) or (Prüfstring ='Serien Termine') then begin break; ZeilenZähler := 0; end Else FrString.Add(Memo5.Lines[ZeilenZähler]) ; Inc(ZeilenZähler); end; For i := 0 to (Memo6.Lines.Count) do begin Prüfstring := Memo6.Lines[ZeilenZähler]; if(Prüfstring = #13#10) or (Prüfstring ='Serien Termine') then begin break; ZeilenZähler := 0; end Else SaString.Add(Memo6.Lines[ZeilenZähler]) ; Inc(ZeilenZähler); end; For i := 0 to (Memo7.Lines.Count) do begin Prüfstring := Memo7.Lines[ZeilenZähler]; if(Prüfstring = #13#10) or (Prüfstring ='Serien Termine') then begin break; ZeilenZähler := 0; end Else SoString.Add(Memo7.Lines[ZeilenZähler]) ; Inc(ZeilenZähler); end; Zwischenspeicher.Text := MoString.Text; Zwischenspeicher.Add(DiString.Text); Zwischenspeicher.Add(MiString.text); Zwischenspeicher.Add(DoString.Text); Zwischenspeicher.Add(FrString.Text); Zwischenspeicher.Add(SaString.Text); Zwischenspeicher.Add(SoString.Text); Zwischenspeicher.SaveToFile(Textdatei); end; |
Re: Leerzeilen in Tstringlist
Erster Eindruck:
MfG, Bug |
Re: Leerzeilen in Tstringlist
okay
ich versuchs ^^ hoffentlich klappt das ^^ |
Re: Leerzeilen in Tstringlist
ich hab das jetzt so geändert wie ich dachte, dass du es meisnt.
Trotzdem hatte ich noch leerzeilen in der Textdatei drin. Also habe ich gedacht ich baue noch eine Prüf-For-Schleife ein ... aber selbst das bringt nichts .... im mom siehst so aus : (und es sind immernoch leerzeilen in der textdatei *grummel*)
Delphi-Quellcode:
procedure TForm1.SpeichernClick(Sender: TObject);
var MoString, DiSTring, MiString, DoString, FrString, SaString, SoString :Tstringlist; PrüfString : String; i : integeR ; begin MoString := Tstringlist.Create; DiSTring := Tstringlist.Create; MiString := Tstringlist.Create; DoString := Tstringlist.Create; FrString := Tstringlist.Create; SaString := Tstringlist.Create; SoString := Tstringlist.Create; MoString.Add('Montag'); DiString.Add('Dienstag'); MiString.Add('Mittwoch'); DoString.Add('Donnerstag'); FrString.Add('Freitag'); SaString.Add('Samstag'); SoString.Add('Sonntag'); For i := 0 to (Memo1.Lines.Count-1) do begin Prüfstring := Memo1.Lines[i]; if(Prüfstring = '') or (Prüfstring ='Serien Termine') then continue Else MoString.Add(Memo1.Lines[i]) ; end; For i := 0 to (Memo2.Lines.Count-1) do begin Prüfstring := Memo2.Lines[i]; if(Prüfstring = '') or (Prüfstring ='Serien Termine') then continue Else DiString.Add(Memo2.Lines[i]) ; end; For i := 0 to (Memo3.Lines.Count-1) do begin Prüfstring := Memo3.Lines[i]; if(Prüfstring = '') or (Prüfstring ='Serien Termine') then continue Else MiString.Add(Memo3.Lines[i]) ; end; For i := 0 to (Memo4.Lines.Count-1) do begin Prüfstring := Memo4.Lines[i]; if(Prüfstring = '') or (Prüfstring ='Serien Termine') then continue Else DoString.Add(Memo4.Lines[i]) ; end; For i := 0 to (Memo5.Lines.Count-1) do begin Prüfstring := Memo5.Lines[i]; if(Prüfstring = '') or (Prüfstring ='Serien Termine') then continue Else FrString.Add(Memo5.Lines[i]) ; end; For i := 0 to (Memo6.Lines.Count-1) do begin Prüfstring := Memo6.Lines[i]; if(Prüfstring = '') or (Prüfstring ='Serien Termine') then continue Else SaString.Add(Memo6.Lines[i]) ; end; For i := 0 to (Memo7.Lines.Count-1) do begin Prüfstring := Memo7.Lines[i]; if(Prüfstring = '') or (Prüfstring ='Serien Termine') then continue Else SoString.Add(Memo7.Lines[i]) ; end; Zwischenspeicher.Text := MoString.Text; Zwischenspeicher.Add(DiString.Text); Zwischenspeicher.Add(MiString.text); Zwischenspeicher.Add(DoString.Text); Zwischenspeicher.Add(FrString.Text); Zwischenspeicher.Add(SaString.Text); Zwischenspeicher.Add(SoString.Text); For i:= 0 To Zwischenspeicher.Count -1 do // das hier begin // ist If(Zwischenspeicher[i] = '') Then // jetzt Zwischenspeicher.Delete(i); // neu end; Zwischenspeicher.SaveToFile(Textdatei); end; |
Re: Leerzeilen in Tstringlist
Ich habe mir nicht alles in allen Einzelheiten angeschaut, aber beim Löschen musst Du die Schleife rückwärts laufen lassen.
Delphi-Quellcode:
For i:= Zwischenspeicher.Count -1 downto 0 do // das hier
begin // ist If(Zwischenspeicher[i] = '') Then // jetzt Zwischenspeicher.Delete(i); // neu end; |
Re: Leerzeilen in Tstringlist
nach dem speichern sieht der inhalt meiner textdatei aber immer noch so aus :
Montag Dienstag Mittwoch Donnerstag Freitag Samstag Sonntag also klappt es immer noch nicht .... nur (komischerweise) nach Montag ist keine Leerzeile ) |
Re: Leerzeilen in Tstringlist
Und so?
Delphi-Quellcode:
Übrigens machst Du zig mal quasi dasselbe, das würde ich in eine Funktion auslagern.
Zwischenspeicher.Add(trim(DiString.Text)); // das Gleiche für die anderen Listen
|
Re: Leerzeilen in Tstringlist
Jetzt klappt es
danke aber wenn ich das in eine Funktion auslager müsste ich doc hjedesmal übergeben, an welches Memo und Welche TStringlist. dann ist das doch auch umständlich odeR ? |
Re: Leerzeilen in Tstringlist
Finde ich nicht. Außerdem kannst Du dann sicher sein, dass Du immer exakt dasselbe machst und nicht mittendrin irgendwo eine Zeile vergisst oder sowas.
|
Re: Leerzeilen in Tstringlist
Hallo,
auch wenn schon eine Lösung da ist, mal ein anderer Ansatz: (bin halt mal wieder langsamer als DeddyH :cry: ) Zuerst alle Leerzeilen löschen und dann alles hinter 'Serien Termine' löschen. Dazu nehmen wir eine Funktion, um das alles nicht mehrfach implementieren zu müssen.
Delphi-Quellcode:
Im Programm dann so aufrufen:
function MachLeerWeg(Eingabe : TStrings) : String;
begin // Damit sind alle Leerzeilen weg. for i := Eingabe.Count - 1 DownTo 0 do if Eingabe[i] = '' then Eingabe.Delete(i); // Nun prüfen, ob die Zeichenfolge 'Serien Termine' vorhanden ist: if Pos('Serien Termine',Eingabe.Text) > 0 then begin repeat Eingabe.Delete(Eingabe.Count - 1); until Eingabe[Eingabe.Count - 1] = 'Serien Termine'; end; if (Eingabe.Count > 0) and (Eingabe[Eingabe.Count - 1]) = 'Serien Termine' then begin Eingabe.Delete(Eingabe.Count - 1); end; Result := Eingabe.Text; end;
Delphi-Quellcode:
(Das ist jetzt nur so hingedaddelt und nicht getestet.)
procedure TForm1.SpeichernClick(Sender: TObject);
begin Zwischenspeicher.Clear; Zwischenspeicher.Add('Montag'); Zwischenspeicher.Add(MachLeerWeg(Memo1.Lines)); Zwischenspeicher.Add('Dienstag'); Zwischenspeicher.Add(MachLeerWeg(Memo2.Lines)); Zwischenspeicher.Add('Mittwoch'); Zwischenspeicher.Add(MachLeerWeg(Memo3.Lines)); Zwischenspeicher.Add('Donnerstag'); Zwischenspeicher.Add(MachLeerWeg(Memo4.Lines)); Zwischenspeicher.Add('Freitag'); Zwischenspeicher.Add(MachLeerWeg(Memo5.Lines)); Zwischenspeicher.Add('Samstag'); Zwischenspeicher.Add(MachLeerWeg(Memo6.Lines)); Zwischenspeicher.Add('Sonntag'); Zwischenspeicher.Add(MachLeerWeg(Memo7.Lines)); Zwischenspeicher.SaveToFile(Textdatei); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08: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