![]() |
Delphi-Version: 10 Berlin
durch verschiede Sets iterieren
Moin...:P
Es ist noch früh am Morgen...:wink: Ich habe eine Schleife die in Abhängigkeit vom Jahr verschiedene Sets iterieren muß...
Delphi-Quellcode:
Bitte helft mir auf die Sprünge... :oops:
var
BlubbSet: Set of Blubb; // TBlubb = (bb1, bb2, bb3, bb4, bb5, bb6, bb7); ... case FYear of 2016: begin BlubbSet := [bb1, bb2, bb3, bb4, bb5]; end; 2017: begin BlubbSet := [bb1, bb3, bb5]; end; end; // Das Set wird wie erwartet angelegt. ... for I := Low(BlubbSet) to High(BlubbSet) do // <- Inkompatible Typen. ???? begin // end; |
AW: durch verschiede Sets iterieren
Und von welchem Typ soll i sein? TBlubb?
Verstehe das Low und High nicht. Warum nicht einfach For myBlubb in BlubbSet Do ... |
AW: durch verschiede Sets iterieren
Moin...:P
lokale Schleifenvariable = I: Integer; |
AW: durch verschiede Sets iterieren
Ich bin auf dem gleichen Dampfer wie der schöne Mann. Warum behandelst Du ein Set wie ein Array?
Gruß K-H |
AW: durch verschiede Sets iterieren
Delphi-Quellcode:
var
iBlubb: TBlubb; ... for IBlubb in BlubbSet do // <- Inkompatible Typen. ???? begin I := ord(iBlubb); // falls das I als Integer überhaupt gebraucht wird // end; |
AW: durch verschiede Sets iterieren
Zitat:
Das for/in funktioniert. Aber die Sortierung ist immer so wie in der Deklaration. :? Aber auf die "gewünschte" Sortierung bin ich angewiesen...
Delphi-Quellcode:
case FYear of
2016: begin BlubbSet := [bb1, bb2, bb3, bb4, bb5]; end; 2017: begin BlubbSet := [bb5, bb1, bb3]; // Reihenfolge egal :-( end; end; // immer BlubbSet := [bb1, bb3, bb5]; |
AW: durch verschiede Sets iterieren
Dann ist das Standard-Delphi Set nicht das was du suchst.
|
AW: durch verschiede Sets iterieren
Einmal anders herum, was willst Du erreichen?
Ein Set ist normal nicht sortiert. Es enthält irgendetwas oder nicht. Natürlich haben die Daten intern eine Reihenfolge, aber das sollte für Dich irrelevant sein. Gruß K-H |
AW: durch verschiede Sets iterieren
Zitat:
Delphi-Quellcode:
Der Rest kann eigentlich so bleiben.
var
BlubbSet: TArray<TBlubb>; // TBlubb = (bb1, bb2, bb3, bb4, bb5, bb6, bb7); Achtung! Es hindert dich niemand, ein TBlubb mehrmals in das Array zu setzen. Bei einem Set wäre das egal. |
AW: durch verschiede Sets iterieren
Was ich möchte:
Die ausgewählten Enumerations (z.B. bb4, bb2, bb7 = "Set" = beliebige Reihenfolge) aus TBlubb = (bb1, bb2, bb3, bb4, bb5, bb6, bb7) in dieser Reihenfolge durchiterieren. Hintergrund: In der Reihenfolge des gewünschten "Sets" werden komplexe Objekte erzeugt die dann in einer Combobox angehängt/eingefügt verden sollen. Die Reihenfolge (früher in der DB als "Position" abgelegt) ist nicht mehr definiert, da eine generische Erzeugung der Objekte anhand des "Sets" erfolgen soll. Ich will mir aber die Möglichkeit Definition der Reihenfolge, unabhängig von der Position in TBlubb, offen halten. Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz