![]() |
Pos, PosEx, Delete - RichEdit säubern Chaos
Moin,
ich musste feststellen ich stehe gerade vollkommen auf dem Schlauch. Ich habe ein Richedit, in welchem Text steht. Kann zum Beispiel zu aussehen: Zitat:
Hab mir das so gedacht: While Schleife solange test gefunden wird -> Suche nach test1 -> Löschen von test und test1. Aber irgendwie häng ich grad fest, genau wie mein Programm, dass hängt sich nach der Ausführung nämlich leider komplett auf. Jemand ne Idee?
Delphi-Quellcode:
function ClearEdit(StringBefore, StringAfter, Text: String): String;
var PosReturn, PosReturn1: Integer; temp: String; begin while Pos(StringBefore, Text) <> 0 do begin PosReturn := Pos(StringBefore, Text); PosReturn1 := PosEx(StringAfter, Text, PosReturn); if PosReturn1 <> 0 then begin //ShowMessage(IntToStr(PosReturn)); Delete(Text, PosReturn, Length(StringBefore)); Delete(Text, PosReturn1, Length(StringAfter)); result := Text; //Break; end; end; end; |
AW: Pos, PosEx, Delete - RichEdit säubern Chaos
Delphi-Quellcode:
PS:
function ClearEdit(StringBefore, StringAfter, Text: String): String;
var PosReturn, PosReturn1: Integer; temp: String; begin while Pos(StringBefore, Text) <> 0 do begin PosReturn := Pos(StringBefore, Text); PosReturn1 := PosEx(StringAfter, Text, PosReturn); if PosReturn1 <> 0 then begin Delete(Text, PosReturn1, Length(StringAfter)); Delete(Text, PosReturn, Length(StringBefore)); end; end; Result:=Text; end; -Du musst erst "test1" löschen bevor du "test" löscht sonst bleibt "1" stehen... -Result kannst du am Ende der Funktion beschreiben Edit: Der Grund das deine Schleife kann Ende hatte ist das du als Abbruchbedingung Pos('test', Text) <> 0 hattest und als Lösch Bedingung aber nach 'test1' gesucht hast. Wenn "test1" jetzt nicht mehr vorhanden hast, kann 'test' nicht gelöscht werden somit ist die Abbruchbedingung nie erfüllt. |
AW: Pos, PosEx, Delete - RichEdit säubern Chaos
Danke dir, da stand ich echt auf dem Schlauch. :wall:
|
AW: Pos, PosEx, Delete - RichEdit säubern Chaos
Ordentliches debuggen und du könntest das Problem mit dem Schlauch in Griff kriegen :)
|
AW: Pos, PosEx, Delete - RichEdit säubern Chaos
Delphi-Quellcode:
wenn die Bedingung ist, daß "test" und "test1" in der Zeile stehen sollen, dann sollte das auch im Source auftauchen.
function ClearEdit(StringBefore, StringAfter, Text: String): String;
var PosReturn, PosReturn1: Integer; temp: String; begin while Pos(StringBefore, Text) <> 0 do begin PosReturn := Pos(StringBefore, Text); PosReturn1 := PosEx(StringAfter, Text, PosReturn); if (PosReturn1 <> 0) and (PosReturn1<>Posreturn) then begin Delete(Text, PosReturn1, Length(StringAfter)); Delete(Text, PosReturn, Length(StringBefore)); end; end; Result:=Text; end; Gruß K-H |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:28 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