AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

durch verschiede Sets iterieren

Ein Thema von haentschman · begonnen am 25. Mär 2017 · letzter Beitrag vom 27. Mär 2017
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.287 Beiträge
 
Delphi 12 Athens
 
#1

durch verschiede Sets iterieren

  Alt 25. Mär 2017, 07:39
Delphi-Version: 10 Berlin
Moin...

Es ist noch früh am Morgen...

Ich habe eine Schleife die in Abhängigkeit vom Jahr verschiedene Sets iterieren muß...
Delphi-Quellcode:
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;
Bitte helft mir auf die Sprünge...

Geändert von haentschman (25. Mär 2017 um 07:43 Uhr)
  Mit Zitat antworten Zitat
Der schöne Günther
Online

Registriert seit: 6. Mär 2013
6.108 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: durch verschiede Sets iterieren

  Alt 25. Mär 2017, 07:56
Und von welchem Typ soll i sein? TBlubb?

Verstehe das Low und High nicht. Warum nicht einfach

For myBlubb in BlubbSet Do ...
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.287 Beiträge
 
Delphi 12 Athens
 
#3

AW: durch verschiede Sets iterieren

  Alt 25. Mär 2017, 07:57
Moin...

lokale Schleifenvariable = I: Integer;
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#4

AW: durch verschiede Sets iterieren

  Alt 25. Mär 2017, 08:16
Ich bin auf dem gleichen Dampfer wie der schöne Mann. Warum behandelst Du ein Set wie ein Array?

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
10.977 Beiträge
 
Delphi 12 Athens
 
#5

AW: durch verschiede Sets iterieren

  Alt 25. Mär 2017, 08:40
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;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.287 Beiträge
 
Delphi 12 Athens
 
#6

AW: durch verschiede Sets iterieren

  Alt 25. Mär 2017, 08:44
Zitat:
Warum behandelst Du ein Set wie ein Array?
weil ich es grad nicht besser weiß. Ich habe normal mit Arrays nichts zu tun...

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];

Geändert von haentschman (25. Mär 2017 um 08:48 Uhr)
  Mit Zitat antworten Zitat
Der schöne Günther
Online

Registriert seit: 6. Mär 2013
6.108 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: durch verschiede Sets iterieren

  Alt 25. Mär 2017, 09:02
Dann ist das Standard-Delphi Set nicht das was du suchst.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#8

AW: durch verschiede Sets iterieren

  Alt 25. Mär 2017, 09:07
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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
10.977 Beiträge
 
Delphi 12 Athens
 
#9

AW: durch verschiede Sets iterieren

  Alt 25. Mär 2017, 09:13
Das for/in funktioniert. Aber die Sortierung ist immer so wie in der Deklaration. Aber auf die "gewünschte" Sortierung bin ich angewiesen...
Ein Set hat per Definition keine Sortierung. Lediglich der Basistyp hat eine. Wenn die Reihenfolge wichtig ist, dann sind Arrays der bessere Ansatz.

Delphi-Quellcode:
var
  BlubbSet: TArray<TBlubb>; // TBlubb = (bb1, bb2, bb3, bb4, bb5, bb6, bb7);
Der Rest kann eigentlich so bleiben.

Achtung! Es hindert dich niemand, ein TBlubb mehrmals in das Array zu setzen. Bei einem Set wäre das egal.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.287 Beiträge
 
Delphi 12 Athens
 
#10

AW: durch verschiede Sets iterieren

  Alt 25. Mär 2017, 09:24
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:
Wenn die Reihenfolge wichtig ist, dann sind Arrays der bessere Ansatz.
... aber wie weise ich das Array, welches je Jahrgang verschiedene Dimensionen hat, einer Variablen zu um das Array durchzuiterieren.

Geändert von haentschman (25. Mär 2017 um 09:32 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz