![]() |
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 ? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:59 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