Einzelnen Beitrag anzeigen

DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#13

AW: Ungelöst: TMeinSet(Byte(1)) in Variable > ungültige Typumwandlung

  Alt 4. Jun 2019, 14:36
Was ich vor habe.

In irgendeiner Datei steht eine Zahl 3. Oder irgendeine andere. Welche ist egal.
Die 3 steht in diesem Fall für g2 und g3 zusammen. Glaube ich jedenfalls. Das ist aber auch alles total egal denn in einem anderen Projekt funktioniert das mit Wochentagen seit Jahren. Ich habe ein Set of TWochenTage beginnend mit Montag und statt eine lange Liste von Wochentagen als string speichere ich die angeklickten Werte als Byte Wert ab.
Einfacher gesagt speichere ich die Byte-Werte der Indexe der Enums ab und prüfe später mit in ob Enum 123 in diesem Wertebereich liegt.

GroupSet := [TGroups(2)] So habe ich es noch nie gemacht und das lässt sich auch nicht kompilieren. So wie es im Eingangspost steht mache ich das seit Jahren aber wieso funktioniert das jetzt nicht mehr? Das ist doch verhext!

Von Stackoverflow habe ich dieses Beispiel rauskopiert und in einer leeren Konsolenanwendung übernommen. Was erhalte ich? Ja, eine ungültige Typumwandlung. Ich habe absolut keine Ahnung mehr woran das liegen soll
Delphi-Quellcode:
type
  TXSamples = set of TXSample;
var
  XSamples: TXSamples;
begin
  ValueToStoreInDB := Integer(XSamples);
  Integer(XSamples) := ValueReadFromDB;
end;
Wer mir nicht glaubt, versucht es selbst. Hier ist die minimale Anwendung
Delphi-Quellcode:
program Project1;

{$APPTYPE CONSOLE}
{$R *.res}

uses
 System.SysUtils;

type
 TGroups = (g1, g2, g3);
 TGroupSet = set of TGroups;


var
 GroupSet: TGroupSet;

begin
 GroupSet := TGroupSet(Byte(2));
end.

Geändert von DieDolly ( 4. Jun 2019 um 14:47 Uhr)
  Mit Zitat antworten Zitat