![]() |
for .. in -Schleife
Irgendwie sitze ich auf dem Schlauch ... scheint noch zu früh zu sein ;)
folgendes .... Die FOR IN Schleife :
Delphi-Quellcode:
type
TAllItems = ( foFlaeche1, foWaermeuebergang1, foMenue1, foT01, foT11, foTT1, foFlaeche2, foWaermeuebergang2, foMenue2, foT02, foT12, foTT2, foFlaeche3, foWaermeuebergang3, foMenue3, foT03, foT13, foTT3 ) ;
Delphi-Quellcode:
Jetzt zum Verständnis ... ElementX sollte doch den Wert foWaermeuebergang annehmen und den Schleifenrumpf ausführen und dannach den Schleifenrumpf mit ElementX:=foWaermeuebergang2 ausführen oder verstehe ich da jetzt was falsch .... bei mir wird der Schleifenrumpf jedoch nicht betreten :(
var ElementX : TAllItems ;
for ElementX in [foWaermeuebergang1, foWaermeuebergang2] do begin ... end; Oh man ... manchmal .. ach .. *nicht aufregen ;)* werd mir mal nen Kaffee holen und wenn ich wieder am Rechner bin hat wohl schon jemand ne Antwort für mich *hoffentlich* :) Lg Andre |
Re: for .. in -Schleife
Probiers mal so:
Delphi-Quellcode:
for ElementX = foWaermeuebergang1 to foWaermeuebergang2 do
|
Re: for .. in -Schleife
also bei mir geht dein Code :gruebel:
D2009 ... sicher daß es in D2006 (TurboDelphi) auch schon drin ist? [edit] etwas unefektiver, aber dafür in allen Delphi-Versionen lauffähig: :stupid:
Delphi-Quellcode:
for ElementX := Low(ElementX) to High(ElementX) do
if ElementX in [foWaermeuebergang1, foWaermeuebergang2] then begin ... end; |
Re: for .. in -Schleife
Aber dadurch würde der Schleifenrumpf mit jedem Element von foWaermeuebergang1 bis foWaermeuebergang2 ausgeführt werden, also auch z.b. mit foMenue1 und das möchte ich ja nicht ;)
|
Re: for .. in -Schleife
Ab 2005 soll das drin sein ... und gibt ja auch kein Compilerfehler.
|
Re: for .. in -Schleife
Zitat:
|
Re: for .. in -Schleife
Dann musst du die Sequenz 2 mal ausführen und ElementX vorher entsprechenden Wert zuweisen
|
Re: for .. in -Schleife
wie gesagt, bei mir geht es und es kommt 171717 raus ...
also je foWaermeuebergang1(1) und foWaermeuebergang2(7)
Delphi-Quellcode:
[edit]
procedure TForm1.FormCreate(Sender: TObject);
var ElementX: TAllItems ; i: Integer; begin Caption := ''; for ElementX in [foWaermeuebergang1, foWaermeuebergang2] do begin Caption := Caption + IntToStr(Ord(ElementX)); end; for ElementX := Low(ElementX) to High(ElementX) do if ElementX in [foWaermeuebergang1, foWaermeuebergang2] then begin Caption := Caption + IntToStr(Ord(ElementX)); end; for i := 0 to 1 do begin case i of 0: ElementX := foWaermeuebergang1; 1: ElementX := foWaermeuebergang2; end; Caption := Caption + IntToStr(Ord(ElementX)); end; for i := 0 to 1 do begin //ElementX := ElementA[i]; //Caption := Caption + IntToStr(Ord(ElementX)); Caption := Caption + IntToStr(Ord(ElementA[i])); end; end; so, jetzt sollten nahezu alle "normalen" Lösungen vorhanden sein, aber hast schon Recht, als FOR-IN sieht es schon eleganter aus :angel: |
Re: for .. in -Schleife
Zitat:
|
Re: for .. in -Schleife
Aber wenn das nur in .Net der Fall wäre sollte mein Compiler den Konstrukt doch nicht zulassen oder?
Noch was sehr komisches ... Neue Typdeklaration :
Delphi-Quellcode:
type TAllItems = ( foFormteil, foTyp, foMaschinennummer, foAuftragskennzeichen, foArtikelBezeichnung, foAnzahlNester, foGeometrie, foGrundgeometrie, foAbmessungHoehe, foAbmessungBreite, foAbmessungTiefe, foGrundgeometrieAnpassen, foNeueSeite1, foFlaeche1, foWaermeuebergang1, foMenue1, foT01, foT11, foTT1, foFlaeche2, foWaermeuebergang2, foMenue2, foT02, foT12, foTT2 ) ; for ElementX in [foWaermeuebergang1, foWaermeuebergang2] do begin ShowMessage(IntToStr(ord(ElementX))) ; //Hier geht er wieder nicht rein !!!! end; for ElementX in [foFormteil, foWaermeuebergang1, foWaermeuebergang2] do begin ShowMessage(IntToStr(ord(ElementX))) ; //Hier geht er rein !!!! mit 0, 14, 20 was auch richtig ist ?! end; frag mich nur wieso .. also kann ja irgendwie nicht angehen oder ? |
Re: for .. in -Schleife
hmmm wenn ich den Code separiere läuft er scheinbar korrekt ... der Fehler muss woanders liegen denke ich ... weiß nur noch nicht wo und wieso ... die Nadel im Heu Haufen ... :wall:
Danke für alle die mit drauf geguckt haben :thumb: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:03 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