Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi 2 unterschiedliche Bedingungen in einer while Schleife (https://www.delphipraxis.net/28821-2-unterschiedliche-bedingungen-einer-while-schleife.html)

lkz633 30. Aug 2004 19:16


2 unterschiedliche Bedingungen in einer while Schleife
 
Hallo,

ich steh grad auf dem Schlauch wie ich das lösen kann.

Ich habe bisher folgenden Code:
Code:
while not dm_data.aq_source.Eof do begin
// ganz viel code
end;
Jetzt kommt noch eine andere Quelle hinzu, ich möchte aber nun nicht haben:
Code:
if neuedatenquelle then begin
  while not quelle.eof do begin
     // der gleiche code
  end;
end
else begin
  while not dm_data.aq_source.Eof do begin
// ganz viel code
end;
end;
Kann ich das irgendwie eleganter lösen?

Ich hab als eine Möglichkeit überlegt dass ich eine Variable einführe, und die mit einer count Eigenschaft belege, also so:
Code:
if quelle = a do
  i:= quellea.count
else
  i:= quelleb.count
while x<i do begin
end
Wie löst ihr sowas, geht das eleganter?

Danke und Gruss
lkz633

Luckie 30. Aug 2004 19:20

Re: 2 unterschiedliche Bedingungen in einer while Schleife
 
Eventuell die Bedingungen im Schleifenkopf mit Delphi-Referenz durchsuchenand verknüpfen? Da ich nicht so ganz durch deinen Code durchblicke nur eine Vermutung.

lkz633 30. Aug 2004 19:26

Re: 2 unterschiedliche Bedingungen in einer while Schleife
 
Mit and verknüfen geht nicht, da beide Quellen komplett unabhaenig voneinander sind.
Stell dir vor, einmal kommen die Datensaetze aus einer Datei, einmal aus einer Datenbank.
Der Rumpf der while-Schleife ist jedoch derselbe, die while Schleife muss jedoch unterschiedlich lang durchlaufen werden, bis die Datenquelle am Ende ist.

glkgereon 30. Aug 2004 19:46

Re: 2 unterschiedliche Bedingungen in einer while Schleife
 
deine lösung ist doch völlig ok...

würd ich auch so machen...

nailor 30. Aug 2004 19:58

Re: 2 unterschiedliche Bedingungen in einer while Schleife
 
Ich schließ mich Luckie mit seinem "kapiers nicht ganz" an, und vermute mal, dass eine Subfunktion (scheiße, wie heißen die nochmal in Delphi *aufmschlauchsteh*) helfen könnte. Die hätte Zugriff auf alle lokalen Variablen der übergeordneten Prozedur, und könnte aus der jeweiligen Version der while-Schleife aufgerufen werden.

Treffnix 30. Aug 2004 20:50

Re: 2 unterschiedliche Bedingungen in einer while Schleife
 
Warum nicht so:

Delphi-Quellcode:
Procedure Machganzviel( qry: DeinQryTyp );
Begin
  while not qry.eof do Begin
    //ganz viel Code
  End;
End;

Begin
  Machganzviel( qry );
End;
Entweder als Subprozedur, wenn du auf lokale Variablen deiner Funktion zugreifen musst oder als "eigenständige"

Du könntest auch eine 3. prozedurinterne qryvariable hinzufügen, der du dann jeweils das benötigte qry zuweist und mit der du dann arbeitest.

WIng2005 23. Aug 2007 11:45

Re: 2 unterschiedliche Bedingungen in einer while Schleife
 
Hallo,

stehe vor einem ähnlichen Problem. Ich muss, je nach erfüllter Bedingung,
mit unterschiedlichen Querys arbeiten. Also irgendwie so:

Delphi-Quellcode:
if Bed1 then

 while not ZQuery1.Eof do

    Begin
  // Code (ca. 3 A4-Seiten)                    
    end
 ZQuery1.next
else

 while not ZQuery5.Eof do

    Begin
  // der gleiche Code                  
    end;
 ZQuery5.next
Diese zusammenzufassen, würde unheimlich viel Arbeit sparen...(und eleganter wirken).
Gibt es da eine Möglichkeit, oder eher weniger?
MFG
Steffen

jim_raynor 23. Aug 2007 11:54

Re: 2 unterschiedliche Bedingungen in einer while Schleife
 
Dann definiere dir einfache eine Variable vom gleichen Typ wie ZQuery1 und ZQuery5 und weise dann dieser Variablen ZQuery1 oder ZQuery5. In der schleife arbeitest du dann nur mit dieser Variablen. Oder du machst daraus eine Prozedur wie bereits Treffnix geschrieben hat.

mkinzler 23. Aug 2007 11:56

Re: 2 unterschiedliche Bedingungen in einer while Schleife
 
Dann lagere doch den Code in eine Prozedur/Funktion aus, welcher du den Query als Parameter übergibst.

Delphi-Quellcode:
procedure MachwasmitQuery( qr: TZQuery);
begin
    //Sehr viel Code
    qr.FieldByName( ...
end;
...
while not ZQuery1.Eof do

    Begin
      MachwasmitQuery( ZQuery1);                
    end
else

while not ZQuery5.Eof do

    Begin
      MachwasmitQuery( ZQuery5);                
    end;

WIng2005 23. Aug 2007 12:13

Re: 2 unterschiedliche Bedingungen in einer while Schleife
 
Habe es nun so gelöst:

Delphi-Quellcode:
Procedure Berechnen();
   qry:TZQuery;                                
Begin
 
  if Bed1=true then
  Begin
  qry:=ZQuery1;
     //Select-Abfrage
  end
  else if Bed2=true then
  Begin
  qry:=ZQuery5;
     //Select-Abfrage
  end;

 
  while not qry.Eof do
  Begin
   //
   //
   //
  end;
  qry.next

end;
Der Beitrag von Treffnix war eigentlich schon die Lösung (ich sollte erst lesen...)
Vielen Dank!!

MFG
Steffen


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