Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#2

AW: Warum gibt es hier einen VarCastError?

  Alt 20. Mai 2022, 21:03
Wenn es Ordinal (varSmallInt, varInteger, varBoolean, varShortInt, varByte, varWord, varUInt32, varInt64 oder varUInt64) ist, dann kann es niemals Empty oder Null (varEmpty oder varNull) sein.

Nunja, ein UInt32, Int64 oder UInt64 darin wird in den Integer (Int32) nicht rein passen.
Delphi-Quellcode:
var
  V: Variant;
  i: Integer;
begin
  V := Int64(1234567890123);
  if VarIsOrdinal(V) then
    i := V
  else
    i := 123;
  if i = 0 then ;
end;
Ergibt zwar keinen VarCastError, aber zumindestens ein ERangeError (Fehler bei Bereichsprüfung) kommt raus.

Warum schaust du also nicht selbst etwas in die Funkionen rein und guckst, wo/wann ein CastError geworfen wird?
System.Variants._VarToInteger liefert einen CastError bei Null oder bei einem unpassendem String, aber nichts davon kommt am VarIsOrdinal vorbei.

Fazit: Dein VarIsEmptyOrNull ist dran Schuld, auch wenn niemand weiß was das macht, weil jemand vergaß es zu sagen.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (20. Mai 2022 um 21:05 Uhr)
  Mit Zitat antworten Zitat