Hallo zusammen,
folgendes Problem: Ich erhalte über eine Kommunikation einen Byte-Stream. In diesem Stream sind die verschiedensten Variablentypen enthalten (Words, Single usw.). Das ganze wird dann über Offset-Adressen konvertiert. z.B.:
Delphi-Quellcode:
function GetReal(P: Pointer): Single;
Var
V: array [0 .. 3] of Byte absolute Result;
begin
V[0] := PByte(NativeInt(P) + 3)^;
V[1] := PByte(NativeInt(P) + 2)^;
V[2] := PByte(NativeInt(P) + 1)^;
V[3] := PByte(P)^;
end;
Nun kann es aber vorkommen, dass Pointer in einen falschen Bereich zeigt oder im Stream nicht steht was erwartet wurde. Das ist ein reguläres Verhalten welches zur Analyse verwendet wird. Wie kann ich (ohne
Exception) feststellen, ob "Result" einen gültigen Wert beinhaltet?
Ich würde gerne bei ungültigem Inhalt die Variable zu NaN oder zu 0.0 machen. Leider weiß ich nicht wie ich möglichst einfach rausbekomme ober der Inhalt gültig ist.
Alex
Man sollte nie so viel zu tun haben, dass man zum Nachdenken keine Zeit mehr hat. (G.C. Lichtenberg)