![]() |
AW: Suche String->Hex Funktion
@DeddyH
Warum so umständlich?
Delphi-Quellcode:
function StrToHex( const s: string ): string;
var i : integer; begin for i := 1 to Length( s ) do Result := Result + Format( '%.*x', [SizeOf( Char ) * 2, Ord( s[i] )] ); end; |
AW: Suche String->Hex Funktion
Zitat:
|
AW: Suche String->Hex Funktion
Bei Strings nicht, aber Du darfst das natürlich tun.
|
AW: Suche String->Hex Funktion
Zitat:
|
AW: Suche String->Hex Funktion
Lass es doch drin, und wenn es nur dem besseren Verständnis dient ;)
|
AW: Suche String->Hex Funktion
Zu 99% geht es auch ohne Initialisierung, aber darauf verlaß dich besser mal nicht. :roll:
Das Result ist leider ein ganz blöder Sonderfall, denn die automatisch Initialisierung von String, dyn. Array und Interface liegt nicht in der Methode, so wie bei den lokalen Variablen, sondern beim Aufrufer und da gibt es ganz nette Seiteneffekte, welche dafür sorgen, daß das Result nicht mit '' vorbelegt sein könnte. |
AW: Suche String->Hex Funktion
99% scheint mir eine mutige Schätzung, gerade für Delphi 6, denn
Delphi-Quellcode:
zeigt zB zuverlässig '42 oder so' an. Und im Assembler ist nix zu sehen vom Vorherlöschen.
function dummy: string;
begin result := result + ' oder so'; end; procedure TForm1.Button1Click(Sender: TObject); var s: string; begin s := '42'; s := dummy; showmessage(s); end; |
AW: Suche String->Hex Funktion
OK, dann maximal 50%?
Mir war das bisher nur in Schleifen aufgefallen. Aber das Fazit ist ganz einfach. Result-Variablen müssen/sollten immer initialisiert werden, wenn mit ihnen gerechnet wird. Also immer dann, wenn das Result, innerhalb der Funktion, ausgewertet und nicht nur stur gesetzt wird. Mam muß bedenken, daß bei diesen gemanagten Result-Typen vom Compiler eine Prozedur daraus gemacht wird. Aus
Delphi-Quellcode:
wird
function dummy(i: Integer): string;
Delphi-Quellcode:
, was man im Assembler gut erkennen kann.
procedure dummy(i: Integer; var Result: string);
|
AW: Suche String->Hex Funktion
Zitat:
(sizeof statt length nutzen?) Gruß K-H |
AW: Suche String->Hex Funktion
Besser beides: Length * SizeOf(Char)
Nee, Quatsch, es sind ja beides Strings. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:35 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