![]() |
Delphi-Version: 2006
Problem mit Schleife und Zufallszahl
Hallöchen,
für mein "Bürospielchen" ärgert mich folgendes Problem:
Delphi-Quellcode:
Hin und wieder kommt dann eine Fehlermeldung
auslosung(ausquer:TADOQuery;auskw,jahr:String;anzahl:Integer)
... if gefun > 3 then begin i:=0; ... while (i < anzahl) do begin Randomize; gezog:=Random(gefun-1);//zufälliger DS ausquer.RecNo:=gezog;// DSZeiger setzen auswahl.Add(ausquer.fieldbyname('Kollege').AsString+' '+ausquer.fieldbyname('Phrasenschwein').AsString); inc(i); end; "Die Argumente sind vom falschen Typ,liegen außerhalb des Gültigkeitsbereiches oder sind miteinander unvereinbar" Nun habe ich per Test eingegrenzt dass die Schleife der Übeltäter ist. Aus einer DB werden DS ermittelt und aus diesen zufällig anzahl x gezogen. Die Variablen: anzahl wird der procedure übergeben gefun ist ein Recordcount auswahl ist TStrings Warum klappt das mehrfach dann aber wieder knallts??? Hat jemand eine Idee? PS: ich weiß, ja ich hab Langeweile.... |
AW: Problem mit Schleife und Zufallszahl
Na, was für einen Wert hat denn 'gezog', 'gefun' und 'ausquer.Recordcount' wenn der Fehler kommt?
Tipp:
Delphi-Quellcode:
Aber ei viel wicht Frag ist do, wies besteh dei Varnam nu au den ers Silb? :stupid: (Rethorische Frage)
while (i < anzahl) do begin
Randomize; // <<<<<< sowieso überflüssig hier gezog:=Random(gefun-1);//zufälliger DS try ausquer.RecNo:=gezog;// DSZeiger setzen auswahl.Add(ausquer.fieldbyname('Kollege').AsString+' '+ausquer.fieldbyname('Phrasenschwein').AsString); {*} except {*} ausquer.RecNo:=gezog;// <<<<<<<< Breakpoint auf diese Stelle {*} auswahl.Add(ausquer.fieldbyname('Kollege').AsString+' '+ausquer.fieldbyname('Phrasenschwein').AsString); {*} end; inc(i); end; |
AW: Problem mit Schleife und Zufallszahl
In welcher Zeile?
|
AW: Problem mit Schleife und Zufallszahl
Man sollte Randomize nur einmalig aufrufen, und Random kann auch 0 zurückgeben. Wenn man da 1 subtrahiert, welchen Datensatz liest Du denn dann aus?
|
AW: Problem mit Schleife und Zufallszahl
Menno, Spielverderber. Er sollte selber drauf kommen.
|
AW: Problem mit Schleife und Zufallszahl
Viel Dank Leute,
ihr habt natürlich Recht. Recordcount -1 ist Unsinn. Randomize wird nun vor der Schleife initialisiert. Exception ist natürlich besser, wie macht man dass ungültiges übersprungen wird so das auf jeden Fall anzahl x wiederholt wird? Viele Grüße |
AW: Problem mit Schleife und Zufallszahl
Schließ doch Ungültiges von vornherein aus, das ist doch besser als eine Exception.
|
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