Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.323 Beiträge
Delphi XE2 Professional
|
Re: Was ist schneller? function oder 3x stringreplace?
24. Jan 2007, 21:28
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:
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);
Wie man sieht, wird dort 10x StringReplace aufgerufen, um jeweils ein Char gegen ein Char aus Hex-Werten zu ersetzen.
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:
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);
Ich vermute mal, dass dieser Code schneller ist als 10x StringReplace.
Was vermutet ihr?
Auch wenn´s etwas OT ist, bringt diese Zeile überhaupt was
SetLength(S_Text, length(Text));
mfg
Helmi
>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
|