Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   DELPHI : Funktion für Ursprungliche String (https://www.delphipraxis.net/206253-delphi-funktion-fuer-ursprungliche-string.html)

Gandimann 4. Dez 2020 01:49

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 ?!!

Andreas13 4. Dez 2020 09:17

AW: DELPHI : Funktion für Ursprungliche String
 
Versuche es mit:
Delphi-Quellcode:
System.SysUtils.IntToStr(Value: Integer): string;)
und
Delphi-Quellcode:
System.SysUtils.IntToStr(Value: Int64): string;)
Gruß, Andreas

Gandimann 4. Dez 2020 15:30

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;

himitsu 4. Dez 2020 15:39

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:
#0
(dezimal) oder
Delphi-Quellcode:
#$0
(hexadezimal)
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.

Andreas13 4. Dez 2020 15:52

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

Gandimann 4. Dez 2020 17:57

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 13:52 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz