![]() |
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:
Jetzt kommt noch eine andere Quelle hinzu, ich möchte aber nun nicht haben:
while not dm_data.aq_source.Eof do begin
// ganz viel code end;
Code:
Kann ich das irgendwie eleganter lösen?
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; Ich hab als eine Möglichkeit überlegt dass ich eine Variable einführe, und die mit einer count Eigenschaft belege, also so:
Code:
Wie löst ihr sowas, geht das eleganter?
if quelle = a do
i:= quellea.count else i:= quelleb.count while x<i do begin end Danke und Gruss lkz633 |
Re: 2 unterschiedliche Bedingungen in einer while Schleife
Eventuell die Bedingungen im Schleifenkopf mit
![]() |
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. |
Re: 2 unterschiedliche Bedingungen in einer while Schleife
deine lösung ist doch völlig ok...
würd ich auch so machen... |
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.
|
Re: 2 unterschiedliche Bedingungen in einer while Schleife
Warum nicht so:
Delphi-Quellcode:
Entweder als Subprozedur, wenn du auf lokale Variablen deiner Funktion zugreifen musst oder als "eigenständige"
Procedure Machganzviel( qry: DeinQryTyp );
Begin while not qry.eof do Begin //ganz viel Code End; End; Begin Machganzviel( qry ); End; 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. |
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:
Diese zusammenzufassen, würde unheimlich viel Arbeit sparen...(und eleganter wirken).
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 Gibt es da eine Möglichkeit, oder eher weniger? MFG Steffen |
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.
|
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; |
Re: 2 unterschiedliche Bedingungen in einer while Schleife
Habe es nun so gelöst:
Delphi-Quellcode:
Der Beitrag von Treffnix war eigentlich schon die Lösung (ich sollte erst lesen...)
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; Vielen Dank!! MFG Steffen |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:01 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