Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi For Schleife über Set bringt Fehler!! (https://www.delphipraxis.net/113893-schleife-ueber-set-bringt-fehler.html)

Master_BB 16. Mai 2008 11:55


For Schleife über Set bringt Fehler!!
 
Hallo,
bei Folgendem Code kommt folgende Fehlermeldung, aber eigentlich sollte es doch möglich sein eine For schleife über ein Set
laufen zu lassen.

Delphi-Quellcode:
procedure bla;
type
  TTIMSet = 'A'..'D';
var
  ASetIndex  : TTIMSet;
  ATIMSet    : Set of TTIMSet;
begin
  for ASetIndex in ATIMSet do
  begin
     //mache was
  end;
end;
Fehlermeldung für die zeile mit "for ASetIndex in ATIMSet do" ist
"FOR-Schleifenvariable muss eine einfache lokale Variable sein".

Warum geht es nicht? Ich will durch ein Set mit Buchstaben A bis D laufen mehr nicht.

Gruß

Hansa 16. Mai 2008 11:59

Re: For Schleife über Set bringt Fehler!!
 
Das geht nicht. :mrgreen: Nimm ein Array.

Master_BB 16. Mai 2008 12:02

Re: For Schleife über Set bringt Fehler!!
 
laut
http://de.wikibooks.org/wiki/Program...:_Pascal:_Sets
gehts schon

Hansa 16. Mai 2008 12:07

Re: For Schleife über Set bringt Fehler!!
 
Ne. :-D Die for-Schleife geht über das i und nicht über das SET. Kleiner, aber feiner Unterschied !

P.S.: lese mal den letzten Satz aus dem Wiki-Link. Das Bsp. ist übrigens keine Lotto-Ziehung, da gibts jede Zahl nur einmal. Der simuliert da eine "Ziehung mit zurücklegen". Das ist 11er/13er Wette

Sharky 16. Mai 2008 12:14

Re: For Schleife über Set bringt Fehler!!
 
Zitat:

Zitat von Hansa
Ne. :-D Die for-Schleife geht über das i und nicht über das SET. Kleiner, aber feiner Unterschied !...

Über welches i?

Delphi-Quellcode:
 
type
  TLottozahlen = 1..49;

var
  Lottozahlen: set of TLottozahlen = []; // leere Menge
  z: TLottozahlen;


for z in Lottozahlen do
    Writeln(z);

EDIT!!
Diesen Code hier kann ich ohne Fehler compilieren:
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
type
  TLottozahlen = 1..49;
var
  Lottozahlen: set of TLottozahlen; // leere Menge
  z: TLottozahlen;
  i: Integer;
begin
  for i := 1 to 49 do // Ersteinmal Werte in das SET schreiben.
  begin
    Lottozahlen := Lottozahlen + [i];
  end;

  for z in Lottozahlen do // Und jetzt über jeden Eintrag des Set laufen
  begin
     ListBox1.Items.Add(IntToStr(z));
  end;
end;

gammatester 16. Mai 2008 12:25

Re: For Schleife über Set bringt Fehler!!
 
Ab Delphi 9 kann man das Wiki-Program übersetzen (als Konsolapplikation).

Gammatester

Master_BB 16. Mai 2008 12:25

Re: For Schleife über Set bringt Fehler!!
 
->Ich nutze Delphi7 ->ich kann das Wiki Programm nicht compilieren selber fehler

also für micht sieht das so aus als ob der in der For schleife einmal
jedes Set Element durchgeht. Und genau das will ich nicht mit zahlen sondern
buchstaben. ich bin wirklich der meinung das dies gehen sollte.

eine Forschleife läuft über eine begrenzte menge, wenn ich einen typ
TBla = 'a'..'d';
anlege ist das eine endliche menge und darüber sollte man eine schleife laufen
lassen können.



->OK damit haben wir den Übeltäter, Delphi7 kann es nicht spätere schon

Sharky 16. Mai 2008 12:26

Re: For Schleife über Set bringt Fehler!!
 
Zitat:

Zitat von Master_BB
->Ich nutze Delphi7. ...

Wie gesagt geht das erst seit Delphi 2005.

Muetze1 16. Mai 2008 12:28

Re: For Schleife über Set bringt Fehler!!
 
Bei einem Enum würde es klappen bzw. einer Liste, aber nicht bei einer Menge (Set). Dort erst ab D2005, alles andere auch zuvor...


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:10 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