AGB  ·  Datenschutz  ·  Impressum  







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

for .. in -Schleife

Ein Thema von Shadow · begonnen am 22. Apr 2009 · letzter Beitrag vom 22. Apr 2009
Antwort Antwort
Seite 1 von 2  1 2      
Shadow

Registriert seit: 31. Aug 2007
Ort: Glinde
17 Beiträge
 
Turbo Delphi für Win32
 
#1

for .. in -Schleife

  Alt 22. Apr 2009, 09:46
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:
var ElementX : TAllItems ;

  for ElementX in [foWaermeuebergang1, foWaermeuebergang2] do
  begin
   ...
  end;
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

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
Andre
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: for .. in -Schleife

  Alt 22. Apr 2009, 09:49
Probiers mal so:

for ElementX = foWaermeuebergang1 to foWaermeuebergang2 do
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.139 Beiträge
 
Delphi 12 Athens
 
#3

Re: for .. in -Schleife

  Alt 22. Apr 2009, 09:54
also bei mir geht dein Code

D2009 ... sicher daß es in D2006 (TurboDelphi) auch schon drin ist?


[edit]
etwas unefektiver, aber dafür in allen Delphi-Versionen lauffähig:
Delphi-Quellcode:
for ElementX := Low(ElementX) to High(ElementX) do
  if ElementX in [foWaermeuebergang1, foWaermeuebergang2] then
  begin
    ...
  end;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Shadow

Registriert seit: 31. Aug 2007
Ort: Glinde
17 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: for .. in -Schleife

  Alt 22. Apr 2009, 09:55
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
Andre
  Mit Zitat antworten Zitat
Shadow

Registriert seit: 31. Aug 2007
Ort: Glinde
17 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: for .. in -Schleife

  Alt 22. Apr 2009, 09:56
Ab 2005 soll das drin sein ... und gibt ja auch kein Compilerfehler.
Andre
  Mit Zitat antworten Zitat
Shadow

Registriert seit: 31. Aug 2007
Ort: Glinde
17 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: for .. in -Schleife

  Alt 22. Apr 2009, 09:58
Zitat:
Delphi-Quellcode:
for ElementX := Low(ElementX) to High(ElementX) do
  if ElementX in [foWaermeuebergang1, foWaermeuebergang2] then
  begin
    ...
  end;
ja klar geht aber das andere muss ja auch gehen und ist halt etwas eleganter
Andre
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: for .. in -Schleife

  Alt 22. Apr 2009, 09:58
Dann musst du die Sequenz 2 mal ausführen und ElementX vorher entsprechenden Wert zuweisen
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.139 Beiträge
 
Delphi 12 Athens
 
#8

Re: for .. in -Schleife

  Alt 22. Apr 2009, 09:58
wie gesagt, bei mir geht es und es kommt 171717 raus ...
also je foWaermeuebergang1(1) und foWaermeuebergang2(7)
Delphi-Quellcode:
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;
[edit]
so, jetzt sollten nahezu alle "normalen" Lösungen vorhanden sein,
aber hast schon Recht, als FOR-IN sieht es schon eleganter aus
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: for .. in -Schleife

  Alt 22. Apr 2009, 10:04
Zitat:
Ab 2005 soll das drin sein ... und gibt ja auch kein Compilerfehler.
Höchstwahrscheinlich nur in Delphi.Net
Markus Kinzler
  Mit Zitat antworten Zitat
Shadow

Registriert seit: 31. Aug 2007
Ort: Glinde
17 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: for .. in -Schleife

  Alt 22. Apr 2009, 10:12
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 ?
Andre
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 20:58 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