![]() |
DELPHI : Funktion für Ursprungliche String
Hello Freunde,
ich versuche dieser Funktion genau umgekehrt mit Delphi zu schreiben leider krige ich nicht hin kann bitte jemand mal schauen ? Function StrToLong(const S: AnsiString): LongWord; var i: Integer; begin Result := 0; for i := 1 to Length(S) do Inc(Result, Ord(S[i]) shl (32 - 8*i)) end; Also ich versuche LongToStr darus zu machen sodass man ursprunglicher String wieder erhält. Mit visual basic habe ich so realiziert aber braue jetzt in Delphi: Public Function ToString(ByVal L As Long, n As Integer) As String ' Convert a long value to a string, left padded with chr$(0) Dim s As String Dim i As Integer s = "" Do While L > 0 i = l Mod 256 s = Chr$(i) & s L = CLng((L - i) / 256) Loop ToString = Right$(String$(n, Chr$(0)) & s, n) End Function Mit Delphi bekomme ich leider nicht hin !!!! Can you please help me ?!! |
AW: DELPHI : Funktion für Ursprungliche String
Versuche es mit:
Delphi-Quellcode:
und
System.SysUtils.IntToStr(Value: Integer): string;)
Delphi-Quellcode:
Gruß, Andreas
System.SysUtils.IntToStr(Value: Int64): string;)
|
AW: DELPHI : Funktion für Ursprungliche String
Danke Andreas13,
intToStr war leider nicht einsetzbar. Ich habe so hinbekommen: Function LongToStr(L: LongWord; N : integer): String; var S: String; i:integer ; begin Result := ' '; while L > 0 do begin i := L mod 256; s := Char(i) + s ; L := Round((l-i)/256); end; Result := RightStr(StringOfChar(String(Char(0))[1], n)+s, n); end; |
AW: DELPHI : Funktion für Ursprungliche String
Delphi-Quellcode:
Round((l-i)/256)
(l-i) div 256 // Ganzzahldivision (passend zum MOD)
Delphi-Quellcode:
?
String(Char(0))[1]
Char zu String und dann wieder zum gleichen Char zurück? Wobei dieses letzte Char auch wieder "implizit" in einen String konvertiert wird, da der Parameter vom StringOfChar ein "String" ist, also Char->String->Char->String. :stupid:
Delphi-Quellcode:
,
Char(0)
Delphi-Quellcode:
,
Chr(0)
Delphi-Quellcode:
(dezimal) oder
#0
Delphi-Quellcode:
(hexadezimal)
#$0
c=Chr(x) ist das Gegenstück zum x=Ord(c) und Char das Gegenstück zum Byte bzw. Word (jenachdem ob Unicode oder ANSI) und Ord geht ebenfalls sowie explizit AnsiChar <-> Byte und WideChar <-> Word Wieso abschneiden (RightStr), wenn man die Länge auch direkt ausrechnen kann?
Delphi-Quellcode:
Result := StringOfChar(#0, n - Length(s)) + s;
Und bitte mach [delphi] ... [/delphi] um deine Quellcodes drumrum, bzw. oben die passenden Knöpfe im Editor benutzen. |
AW: DELPHI : Funktion für Ursprungliche String
Hallo Gandimann,
Du kannst Deinen Quellcode etwas übersichtlicher formatieren, wenn Du das Delphi-Symbol (= gelber Helm mit dem roten Kamm) vom Menü direkt über dem Editorfenster benutzt. Gruß, Andreas |
AW: DELPHI : Funktion für Ursprungliche String
Wieder was dazu gelernt....... Vielen Dank für die ausführliche Erklärung und nette Anweisungen:thumb:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:01 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