![]() |
Delphi-Version: XE2
Leere MemoLines herausfiltern
Moin Moin,
Ich schreibe gerade an einem Programm, welches mit einer selbsterstellten Config.txt arbeiten soll. Diese lasse ich auslesen und splitte den Inhalt in verschiedene Memos auf. Nun sind in den Memos am Ende immer Leerzeichen, welche ich herausfiltern wollte, da ich sonnst beim Einlesen wieder Probleme hab. Mein Ansatz war:
Delphi-Quellcode:
jedoch sind in der Config.txt trotz
procedure TFEinstellungen.BSpeichernClick(Sender: TObject);
var List: TStrings; i : integer; k : integer; begin List := TStringList.Create; try List.Add('#Pfad der Vorlage'); List.Add(EVor.Text); List.Add('#Pfad des neuen Ordners'); List.Add(ENeu.Text); for i := 0 to MAnfangsDatum.Lines.Count-1 do if List[i] <> '' then List.Add(MAnfangsDatum.Lines[i]); for k := 0 to MEndDatum.Lines.Count-1 do if List[k] <> '' then List.Add(MEndDatum.Lines[k]); List.SaveToFile('*Beispielpfad*'); finally List.Free; end; ShowMessage('Ihre Konfiguration wurde gespiechert.'); Close; end;
Delphi-Quellcode:
noch Leerzeichen.
if List[i] <> '' then
Ich hoffe ihr könnt mir helfen Gruß Hendrik |
AW: Leere MemoLines herausfiltern
Delphi-Quellcode:
if TRIM(MAnfangsDatum.Lines[i]) <> '' then
'' ist eine komplett leere Zeile ' ' ist eine Zeile mit einem Leerzeichen ' ' ist eine Zeile mit zwei Leerzeichen etc .... |
AW: Leere MemoLines herausfiltern
Vielen Dank Bummi!
Es haut jetzt hin mit ' ', wobei ich nicht ganz verstehe, warum eine eigentlich komplett leere Zeile (also nur Enter gedrückt) erst bei ' ' gelöscht wird und nicht bei ''. Gruß Hendrik |
AW: Leere MemoLines herausfiltern
Zitat:
i wird durch MAnfangsDatum.Lines.Count bestimmt und it i greifst Du auf List zu. Das kann ganz schnell zu unerwünschten Reaktionen führen. gruß K-H |
AW: Leere MemoLines herausfiltern
Delphi-Quellcode:
Die Funktion löscht rückwärts; hat also den Bug, den mein Vorposter angesprochen hat nicht.
{**************************************************************************
* NAME: RemoveEmptyStrings * DESC: lösche leere Zeilen aus StringListe * RESULT: Anzahl der Löschungen *************************************************************************} function RemoveEmptyStrings(list : TStrings):Integer; var i : Integer; begin Assert(Assigned(list)); Result := 0; for i := list.Count-1 downto 0 do begin if TrimRight(list[i]) = '' then begin list.Delete(i); Inc(Result); end; end; end; |
AW: Leere MemoLines herausfiltern
Vielen Dank K-H!
Hatte ich vorher gar nicht bemerkt, was ich da für ein Mist zusammengeschrieben habe. |
AW: Leere MemoLines herausfiltern
Ich spiele jetzt mal himitsu und gebe dir den Tipp:
Delphi-Quellcode:
Auf 0 kann besser geprüft werden als auf ''.
if Length(TrimRight(list[i])) = 0 then
... |
AW: Leere MemoLines herausfiltern
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Delphi-Quellcode:
var
s : string; begin s := Trim(' '); if s = '' then // rot markiert, 1 X86-Befehl ShowMessage('1'); if Length(s) = 0 then // grün markiert, 3 X86-Befehle ShowMessage('2'); |
AW: Leere MemoLines herausfiltern
Willst du behaupten, dass himitsu nicht die Wahrheit sagt?
|
AW: Leere MemoLines herausfiltern
Zitat:
Die 3 Assemblerbefehle sind insgesamt viel schneller als der eine lausige Cmp-Befehl. Ausserdem brauchen die 3 Befehle auch weniger Platz im RAM. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:27 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 by Thomas Breitkreuz