Hallo Alex!
Zitat von
junale:
Hmm.. Aber wenn ich zum Besipiel nur einen ShortInt zurückgeben will, liefert mir "Val ('128', aShortInt, Code);" als Code 0 und als aShortInt -128 was durch den Überlauf geschieht. Wie kann ich dieses Fehlverhalten umgehen?
Dann lasse das Ganze doch in eine lokale Longint- oder besser Int64-Variable umwandeln.
Danach prüfst Du einfach, ob das größer als High(ShortInt) oder kleiner als Low(ShortInt) ist - wenn ja, war der Wert überschritten! Vorher noch die Länge prüfen, damit der DAU nicht 30mal auf die 9 gehämmert hat - das sprengt nämlich auch einen Int64.
Außerdem ist es ja oft so, daß man einen ShortInt nimmt, weil z.B. nur Werte von -30 bis +95 zugelassen sind - dann brauchst Du die technischen Grenzen ja gar nicht zu prüfen.
Übrigens, die dämliche TRY/EXCEPT-Variante liefert Dir unter den Umständen auch den falschen Wert!
In einem Edit ist das tatsächlich vernachlässigbar mit dem Preformance-Verlust - aber wenn man eine Datendatei mit mehreren 1000 Text-Integern einlesen muß, bremst das doch ganz schön.
Gruß
Dietmar Brüggendiek