Einzelnen Beitrag anzeigen

R2009

Registriert seit: 9. Mär 2009
Ort: Heidelberg
440 Beiträge
 
Delphi 2007 Professional
 
#1

Funktion gibt falschen Typ zurück

  Alt 25. Nov 2010, 09:21
Delphi-Version: 5
Hallo DP'ler,

wir haben eine Funktion:
Delphi-Quellcode:
Function INVHEXDW(a:string):int64;
Begin
    If a='then a:='00000000';
    while length(a)<8 do
        a:='0'+a;
    result:= INVHEXB(a[1]+a[2])* 16777216 + INVHEXB(a[3]+a[4]) * 65536 +
             INVHEXB(a[5]+a[6])* 256 + INVHEXB(a[7]+a[8]);
end;

Aufruf mit:
var n:integer;
  begin
    n:=INVHEXDW(a:string):
  end;
Der Funktionsaufruf funktioniert einwandfre solange ich mit meinen Rückgabewert im Wertebereich des integer bleibe. Leider ist dem bei grossen Hex Zahlen nicht so. Beim casten auf n gibts dann einen rangecheck error.
Gibt es irgendeine Möglichkeit aus der aufgerufenen Funktion heraus festzustellen ob der Übergabetyp stimmt oder nicht?
Oder gibt es eine andere Möglichkeit, von der Funktionsseite diesen Fehler zu verhindern?
Es ist mir nicht möglich jeden Aufruf abzuchecken.

Grüsse
rainer
Rainer Unger
Mein Profil:
Studium Allgemeine Elektrotechnik TH Darmstadt
Entwicklung von Tools für die Rundsteuer und Zählertechnik.
uP's Atmel Prozessoren (ATmega16,32,88...) in C und Assembler.
  Mit Zitat antworten Zitat