AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi 2 unterschiedliche Bedingungen in einer while Schleife
Thema durchsuchen
Ansicht
Themen-Optionen

2 unterschiedliche Bedingungen in einer while Schleife

Ein Thema von lkz633 · begonnen am 30. Aug 2004 · letzter Beitrag vom 23. Aug 2007
Antwort Antwort
lkz633

Registriert seit: 9. Jun 2002
Ort: Aachen
221 Beiträge
 
#1

2 unterschiedliche Bedingungen in einer while Schleife

  Alt 30. Aug 2004, 20:16
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
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: 2 unterschiedliche Bedingungen in einer while Schleife

  Alt 30. Aug 2004, 20:20
Eventuell die Bedingungen im Schleifenkopf mit Delphi-Referenz durchsuchenand verknüpfen? Da ich nicht so ganz durch deinen Code durchblicke nur eine Vermutung.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
lkz633

Registriert seit: 9. Jun 2002
Ort: Aachen
221 Beiträge
 
#3

Re: 2 unterschiedliche Bedingungen in einer while Schleife

  Alt 30. Aug 2004, 20:26
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.
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#4

Re: 2 unterschiedliche Bedingungen in einer while Schleife

  Alt 30. Aug 2004, 20:46
deine lösung ist doch völlig ok...

würd ich auch so machen...
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#5

Re: 2 unterschiedliche Bedingungen in einer while Schleife

  Alt 30. Aug 2004, 20:58
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.
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
Benutzerbild von Treffnix
Treffnix

Registriert seit: 25. Jun 2003
Ort: AC
740 Beiträge
 
Delphi 7 Professional
 
#6

Re: 2 unterschiedliche Bedingungen in einer while Schleife

  Alt 30. Aug 2004, 21:50
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.
  Mit Zitat antworten Zitat
WIng2005

Registriert seit: 20. Mär 2006
Ort: Thüringen
388 Beiträge
 
Delphi XE Starter
 
#7

Re: 2 unterschiedliche Bedingungen in einer while Schleife

  Alt 23. Aug 2007, 12:45
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
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#8

Re: 2 unterschiedliche Bedingungen in einer while Schleife

  Alt 23. Aug 2007, 12:54
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.
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: 2 unterschiedliche Bedingungen in einer while Schleife

  Alt 23. Aug 2007, 12:56
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;
Markus Kinzler
  Mit Zitat antworten Zitat
WIng2005

Registriert seit: 20. Mär 2006
Ort: Thüringen
388 Beiträge
 
Delphi XE Starter
 
#10

Re: 2 unterschiedliche Bedingungen in einer while Schleife

  Alt 23. Aug 2007, 13:13
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
  Mit Zitat antworten Zitat
Antwort Antwort


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 08:33 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