Hallo zusammen,
ich habe eine vermutlich ganz triviale Frage. Der Laufzeitfehler bezüglich Typkonvertierung beschäftigt mich allerdings schon eine Weile, ohne dass ich bisher eine Lösung gefunden hätte.
Delphi-Quellcode:
type
TBankFlag = (fbfEinzahlung, fbfAuszahlung);
type
TBankFlags = set of TBankFlag;
// Diese in im Objekt als Property vorhanden
type
TFoo = type(TObject)
FFlags: TBankFlags;
published
Flags: TBankFlags read FFlags write FFlags;
end;
Den Wert bestimme ich per
RTTI und bekomme einen Wert vom Typ TValue zurück. Jetzt möchte ich diesen in der Datenbank als Integer speichern. Dabei kommt aber immer ein Laufzeitfehler "Ungültige Typumwandlung", obwohl ich in value.AsInteger den korrekten Wert im Debugger sehen kann. Das Feld Flags ist in der Datenbank als Integer angelegt.
foo.Flags := [fbfEinzahlung, fbfAuszahlung] -> value.AsInteger = 3
foo.Flags := [fbfEinzahlung] -> value.AsInteger = 1
Delphi-Quellcode:
..
var value: TValue;
begin
// ...value-Bestimmung...
qry.ParamByName('FLAGS').AsInteger := value.AsInteger;
end;
Egal welchen Typ ich mir von TValue mit .AsXXX geben lasse, es knallt beim Zuweisen dieses Parameters. Noch eine Anmerkung, Flags kann je nach Objekt verschiedene ENum-Bedeutungen haben. Also ist AsType<T> für mich nicht so zielführend.
Geht das überhaupt, was ich da vorhabe?