![]() |
Re: Was ist schneller? function oder 3x stringreplace?
Zitat:
|
Re: Was ist schneller? function oder 3x stringreplace?
Zitat:
|
Re: Was ist schneller? function oder 3x stringreplace?
Wieso funktioniert denn das?
Delphi-Quellcode:
Woher weiss er welcher char in der schleife bearbeitet werden soll?
CurrentChar := PChar(aSearchString);
for i := 1 to Length(aSearchString) do begin if CurrentChar^ in ['0'..'9'] then begin inc(NumberLength); if not NumberFound then begin NumberStart := i; NumberFound := True; end; end else if NumberFound then break; inc(CurrentChar); end; |
Re: Was ist schneller? function oder 3x stringreplace?
CurrentChar ist ein zeiger auf das aktuelle zeichen.
inc(CurrentChar) setzt den zeiger eine addresse weiter. |
Re: Was ist schneller? function oder 3x stringreplace?
Danke für die Erklärung!
Aber nochmal zu Robert´s Code. Ich hab den heut mal ausprobiert - der hat nen kleinen Nachteil. Der gibt nur Vorwahl aus. |
Re: Was ist schneller? function oder 3x stringreplace?
Zitat:
Zu schnell irgendwas runtergetippt... (Wäre ja auch langweilig wenn geposteter Code einfach so funktioniert... :mrgreen: ) |
Re: Was ist schneller? function oder 3x stringreplace?
Hallo,
ich möchte an meinen alten Thread anknüpfen, da meine jetzige Frage im Grunde auch was damit zu tun hat. Folgendes: Ich muss Chars gegen Chars im Hex-Format austauschen. Soweit so gut. Meine erste Version schaut so aus:
Delphi-Quellcode:
Wie man sieht, wird dort 10x StringReplace aufgerufen, um jeweils ein Char gegen ein Char aus Hex-Werten zu ersetzen.
Text := StringReplace(Text, 'ü', Chr($81), [rfReplaceAll]);
Text := StringReplace(Text, 'ä', Chr($84), [rfReplaceAll]); Text := StringReplace(Text, 'ö', Chr($94), [rfReplaceAll]); Text := StringReplace(Text, 'Ü', Chr($9A), [rfReplaceAll]); Text := StringReplace(Text, 'Ä', Chr($8E), [rfReplaceAll]); Text := StringReplace(Text, 'Ö', Chr($99), [rfReplaceAll]); Text := StringReplace(Text, 'ß', Chr($E1), [rfReplaceAll]); Text := StringReplace(Text, '²', Chr($FD), [rfReplaceAll]); Text := StringReplace(Text, '³', Chr($FE), [rfReplaceAll]); Text := StringReplace(Text, 'µ', Chr($E6), [rfReplaceAll]); Serial.TransmittText(Text); Funktioniert auch - nur da StringReplace langsam ist, dacht ich mir ich könnt es anders machen. Dafür hab ich mir diesen Code ausgedacht:
Delphi-Quellcode:
Ich vermute mal, dass dieser Code schneller ist als 10x StringReplace.
const
Chars: array[1..10] of Char = ('ä', 'ö', 'ü', 'Ä', 'Ö', 'Ü', 'ß', '²', '³', 'µ'); Bytes: array[1..10] of Byte = ($84, $94, $81, $8E, $99, $9A, $E1, $FD, $FE, $E6); var i: Integer; j: Integer; S_Text: String; C_Char: Char; begin SetLength(S_Text, length(Text)); S_Text := ''; for i := 1 to length(Text) do begin C_Char := Text[i]; for j := Low(Chars) to High(Chars) do If Chars[j] = C_Char then begin C_Char := Chr(Bytes[j]); break; end; S_Text := S_Text + C_Char; end; Serial.TransmittText(S_Text); Was vermutet ihr? Auch wenn´s etwas OT ist, bringt diese Zeile überhaupt was :?:
Delphi-Quellcode:
SetLength(S_Text, length(Text));
|
Re: Was ist schneller? function oder 3x stringreplace?
Zitat:
|
Re: Was ist schneller? function oder 3x stringreplace?
Zitat:
Zum zeitmessen einfach mal nach GetTickCount suchen. Gruß |
Re: Was ist schneller? function oder 3x stringreplace?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:57 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