Ich habe einen String, welcher eine Vorzeichenbehaftete int16 Zahl darstellt. Dieser String sollte aber eigentlich eine Vorzeichenlose Int16 Zahl sein.
D.h. im Bereich 0.. 2^15-1 sind beide Interpretationen Gleich, danach wird die eine Negativ interpretiert, die andere entsprechend nicht. Zur Umwandlung habe ich mir die beiden Routinen
Code: Alles auswählen
Function convertsigned1(data: String): String;
Var
i: word;
s: Smallint;
v: variant;
Begin
s := strtoint(data);
v := s;
i := v;
result := inttostr(i);
End;
Function convertsigned2(data: String): String;
Var
i: ^word;
s: Smallint;
Begin
s := strtoint(data);
i := @s;
result := inttostr(i^);
End;
Code: Alles auswählen
Function convertsigned3(data: String): String;
Var
i: word;
s: Smallint;
Begin
s := strtoint(data);
If s >= 0 Then
i := s
Else
i := 65536 + s;
result := inttostr(i);
End;
Gruß
Corpsman