AGB  ·  Datenschutz  ·  Impressum  







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

Problem mit Schleife und Zufallszahl

Ein Thema von Privateer3000 · begonnen am 19. Jul 2012 · letzter Beitrag vom 19. Jul 2012
Antwort Antwort
Benutzerbild von Privateer3000
Privateer3000

Registriert seit: 10. Jun 2002
Ort: Jena
1.128 Beiträge
 
Delphi 10.4 Sydney
 
#1

Problem mit Schleife und Zufallszahl

  Alt 19. Jul 2012, 06:50
Delphi-Version: 2006
Hallöchen,
für mein "Bürospielchen" ärgert mich folgendes Problem:
Delphi-Quellcode:
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;
Hin und wieder kommt dann eine Fehlermeldung
"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....
Peter
+++Versuch es nicht mit Gewalt + Nimm einen größeren Hammer! +++
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#2

AW: Problem mit Schleife und Zufallszahl

  Alt 19. Jul 2012, 06:57
Na, was für einen Wert hat denn 'gezog', 'gefun' und 'ausquer.Recordcount' wenn der Fehler kommt?
Tipp:
Delphi-Quellcode:
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;
Aber ei viel wicht Frag ist do, wies besteh dei Varnam nu au den ers Silb? (Rethorische Frage)

Geändert von Furtbichler (19. Jul 2012 um 07:00 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

AW: Problem mit Schleife und Zufallszahl

  Alt 19. Jul 2012, 06:58
In welcher Zeile?
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Problem mit Schleife und Zufallszahl

  Alt 19. Jul 2012, 06:59
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?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#5

AW: Problem mit Schleife und Zufallszahl

  Alt 19. Jul 2012, 07:03
Menno, Spielverderber. Er sollte selber drauf kommen.
  Mit Zitat antworten Zitat
Benutzerbild von Privateer3000
Privateer3000

Registriert seit: 10. Jun 2002
Ort: Jena
1.128 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Problem mit Schleife und Zufallszahl

  Alt 19. Jul 2012, 18:38
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
Peter
+++Versuch es nicht mit Gewalt + Nimm einen größeren Hammer! +++
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Problem mit Schleife und Zufallszahl

  Alt 19. Jul 2012, 18:41
Schließ doch Ungültiges von vornherein aus, das ist doch besser als eine Exception.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  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 16:47 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