Forum: Algorithmen, Datenstrukturen und Klassendesign
by DieDolly,
24. Jan 2023
Das mit den Schleifen geht leider alles nicht bei Funktionen mitz generischer Übergabe oder wie das heißt wie ich es gemacht habe.
Forum: Algorithmen, Datenstrukturen und Klassendesign
by DieDolly,
23. Jan 2023
Ach so ja ok das ist klar.
Dann wäre es ja besser, den String zu parsen und zu prüfen, ob jeder Teilstring als Enum existiert.
Aber dafür müsste ich wieder durch das Set iterieren was ja irgendwie und scheinbar mit <T> nicht möglich zu sein scheint.
Eine Schummel-Lösung?
Ein weiteres, volles Set anlegen welches alle Werte enthält. Das übergebe ich meiner eigenen Funktion StrToSet.
Mein...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by DieDolly,
23. Jan 2023
Verstehe ich gerade nicht?
Ist das nur Zufall, dass der Code oben funktioniert?
Forum: Algorithmen, Datenstrukturen und Klassendesign
by DieDolly,
23. Jan 2023
Vielen Dank. Meine zwei Funktionen sehen nun so aus. Ein erster Test von Set zu String und zurück von String zu Set hat funktioniert.
function SetToStr<T>(Value: T; Brackets: Boolean): string;
begin
Result := SetToString(PTypeInfo(TypeInfo(T)), @Value, True);
end;
function StrToSet<T>(Value: string): T;
begin
StringToSet(PTypeInfo(TypeInfo(T)), Value, @Result);
Forum: Algorithmen, Datenstrukturen und Klassendesign
by DieDolly,
23. Jan 2023
Wenn ich ein Set fülle und es beispielsweise 5 Einträge hat, möchte ich daraus einen kommaseparierten String zusammenstellen. Diesen möchte ich in einer Textdatei dann abspeichern und später wieder laden.
Diese Funktion kann ich leider nicht verwenden, da ich hier explizit "TMyEnum" angeben muss. Ich brauche das aber so, dass ich Sets von verschiedenen Typen angeben kann.
Bin ich zu doof...
Forum: Algorithmen, Datenstrukturen und Klassendesign
by DieDolly,
23. Jan 2023
Ich stehe gerade auf dem Schlauch. Wie iteriert man durch einen Enum?
Aufruf
// TStreetTypeSet = set of TStreetType;
// StreetTypeSet: TStreetTypeSet;
s := GetSetAsString<TStreetType>(StreetTypeSet, ','));
Funktion