Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

AW: Warum gibt es hier einen VarCastError?

  Alt 20. Mai 2022, 20: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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

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