AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

For Schleife über Set bringt Fehler!!

Ein Thema von Master_BB · begonnen am 16. Mai 2008 · letzter Beitrag vom 16. Mai 2008
Antwort Antwort
Master_BB

Registriert seit: 17. Mai 2003
285 Beiträge
 
Delphi 7 Professional
 
#1

For Schleife über Set bringt Fehler!!

  Alt 16. Mai 2008, 11:55
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ß
Wenn das Meer unruhig ist und der Wind die Wellen treibt, erfreut es, vom Strand aus die Mühen eines Anderen zu beobachten.
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#2

Re: For Schleife über Set bringt Fehler!!

  Alt 16. Mai 2008, 11:59
Das geht nicht. Nimm ein Array.
Gruß
Hansa
  Mit Zitat antworten Zitat
Master_BB

Registriert seit: 17. Mai 2003
285 Beiträge
 
Delphi 7 Professional
 
#3

Re: For Schleife über Set bringt Fehler!!

  Alt 16. Mai 2008, 12:02
laut
http://de.wikibooks.org/wiki/Program...:_Pascal:_Sets
gehts schon
Wenn das Meer unruhig ist und der Wind die Wellen treibt, erfreut es, vom Strand aus die Mühen eines Anderen zu beobachten.
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#4

Re: For Schleife über Set bringt Fehler!!

  Alt 16. Mai 2008, 12:07
Ne. 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
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#5

Re: For Schleife über Set bringt Fehler!!

  Alt 16. Mai 2008, 12:14
Zitat von Hansa:
Ne. 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;
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#6

Re: For Schleife über Set bringt Fehler!!

  Alt 16. Mai 2008, 12:25
Ab Delphi 9 kann man das Wiki-Program übersetzen (als Konsolapplikation).

Gammatester
  Mit Zitat antworten Zitat
Master_BB

Registriert seit: 17. Mai 2003
285 Beiträge
 
Delphi 7 Professional
 
#7

Re: For Schleife über Set bringt Fehler!!

  Alt 16. Mai 2008, 12:25
->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
Wenn das Meer unruhig ist und der Wind die Wellen treibt, erfreut es, vom Strand aus die Mühen eines Anderen zu beobachten.
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#8

Re: For Schleife über Set bringt Fehler!!

  Alt 16. Mai 2008, 12:26
Zitat von Master_BB:
->Ich nutze Delphi7. ...
Wie gesagt geht das erst seit Delphi 2005.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#9

Re: For Schleife über Set bringt Fehler!!

  Alt 16. Mai 2008, 12:28
Bei einem Enum würde es klappen bzw. einer Liste, aber nicht bei einer Menge (Set). Dort erst ab D2005, alles andere auch zuvor...
  Mit Zitat antworten Zitat
Antwort Antwort


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 11:24 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