![]() |
Function optimieren
kann man dieses optimieren bzw. kürzen?
Delphi-Quellcode:
r := '45_78_754#9254_486_715';
p1 := Pos('_', r); t := Copy(r, p1 + 1, Length(r)); s1 := Copy(r, 0, p1 - 1); p1 := Pos('_', t); t2 := Copy(t, p1 + 1, Length(t)); s2 := Copy(t, 0, p1 - 1); p1 := Pos('#', t2); t := Copy(t2, p1 + 1, Length(t2)); s3 := Copy(t2, 0, p1 - 1); p1 := Pos('_', t); t2 := Copy(t, p1 + 1, Length(t)); s4 := Copy(t, 0, p1 - 1); p1 := Pos('_', t2); t := Copy(t2, p1 + 1, Length(t2)); s5 := Copy(t2, 0, p1 - 1); rs := Format('%s.%s.%s %s:%s:%s', [s1, s2, s3, s4, s5, t]); |
Re: Function optimieren
Man könnte das mit ein bzw zwei StringListen machen:
Delphi-Quellcode:
sl := TStringList.Create;
sl1 := TStringList.Create; sl.Delimiter := '_'; sl.DelimitedText := '45_78_754#9254_486_715'; sl1.Delimiter := '#'; sl1.DelimitedText := sl[2]; showmessage(Format('%s.%s.%s %s:%s:%s',[sl[0],sl[1],sl1[0],sl1[1],sl[3],sl[4]]); sl.Free; sl1.Free; Vielleicht könnte man ja auch 'ne Kombination aus Deinem und meinem Code nehmen. (Eine Stringlist für 2 Zahlen lohnt sich irgendwie nicht) Christian |
Re: Function optimieren
Wie wärs damit:
Delphi-Quellcode:
Die StringList kannst du auch gegen ein array[0..5] of String ersetzen.
r := '45_78_754#9254_486_715';
txt := r; Lst := TStringList.Create; try for i := 0 to 5 do begin case i of 2: mySign := '#' else mySign := '_'; end; p1 := Pos(mySign, txt); if p1 > 0 then Lst.Add(Copy(txt, 1, p1 - 1)) else Lst.Add(txt); txt := Copy(txt, p1 + 1, Length(txt) - p1); end; rs := Format('%s.%s.%s %s:%s:%s',[Lst.Strings[0],Lst.Strings[1],Lst.Strings[2],Lst.Strings[3],Lst.Strings[4],Lst.Strings[5]]); finally Lst.Free; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:51 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