Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Das Label wird nach einer bestimmten Zeit nicht mehr aktual. (https://www.delphipraxis.net/85438-das-label-wird-nach-einer-bestimmten-zeit-nicht-mehr-aktual.html)

Darkchild 30. Jan 2007 20:14


Das Label wird nach einer bestimmten Zeit nicht mehr aktual.
 
Nabend zusammen,

folgendes Problem:

Ich habe ein Programm welches Rechenaufgaben erstellt diese in einem Label Anzeigt und das war es fast schon. Das errechnete Ergebnis wird in ein Editfeld eingetragen und beim klick auf OK wird das eingetragene Ergebnis mit dem Korrekten verglichen, stimmts dann gibts Punkte, stimmts nicht dann hat man pech gehabt.
So das klappt auch alles, nur nach einer bestimmten Zeit werden die Aufgaben im Label nicht mehr neu Angezeigt, es bleibt ab einem bestimmten Punkt immer ein und die selbe Aufgabe stehen.
Die Zahlen für die Aufgabe werden über eine Variable die einen Randomwert erhält erstellt, also Zufallszahlen, auch der Operator (+,-,*,/) werden Zufällig ausgewählt.

Nur wie gesagt ab der ca 15 bis 20 Aufgabe bleibt immer die selbe Augabe stehen und ändert sich nicht mehr.
Muss ich da irgendeinen Puffer leeren oder label.free oder was auch immer, ich weis es im moment echt nicht, aber irgendwie sowas muss es sein.

Wisst ihr vieleicht weiter ?

Gruss
Darkchild

Helmi 30. Jan 2007 20:16

Re: Das Label wird nach einer bestimmten Zeit nicht mehr akt
 
Hallo,

zeig doch mal etwas Code - so machst du es uns einfacher

Darkchild 30. Jan 2007 20:23

Re: Das Label wird nach einer bestimmten Zeit nicht mehr akt
 
Sorry, ganz vergessen !

Denke das sollte in diesem teil des Codes verborgen sein :

Delphi-Quellcode:
procedure Tfrmgrundrechenarten.Rechnen();
var
x1,x2,x3,x4,x5,x6:integer;
geteilt:string;
begin
//Rechenarten
edtgrundrechenergebniss.SetFocus;
case Punkte of
    0..10: begin;
           randomize;
           x1 := random(9999);
           x2 := random(6666);
           Operatorauswahl();
           case Operatorzeichen of
                '+':begin;
                    lblAufgabe.Caption := (inttostr(x1)+' '+ Operatorzeichen +' '+inttostr(x2));
                    Ergebnis := x1 + x2;
                    end;
                '-':begin;
                    while x1 < x2 do
                    begin;
                         x1 := random(9999);
                         x2 := random(6666);
                    end;
                    lblAufgabe.Caption := (inttostr(x1)+' '+ Operatorzeichen +' '+inttostr(x2));
                    Ergebnis := x1 - x2;
                    end;
                '*':begin;
                    lblAufgabe.Caption := (inttostr(x1)+' '+ Operatorzeichen +' '+inttostr(x2));
                    Ergebnis := x1 * x2;
                    end;
                '/':begin;
                    while x1 < x2 do
                    begin;
                    x1 := random(9999);
                    x2 := random(6666);
                    end;
                    lblAufgabe.Caption := (inttostr(x1)+' '+ Operatorzeichen +' '+inttostr(x2));
                    Ergebnis := x1 / x2;
                    Ergebnis := Ergebnis * 1000;
                    Ergebnis := trunc(Ergebnis);
                    Ergebnis := Ergebnis / 1000;
                    geteilt := vartostr(Ergebnis);
                    end;
           end;
           end;
    11..20:begin;

           end;
end;
end;
Gruss
Darkchild

Helmi 30. Jan 2007 20:32

Re: Das Label wird nach einer bestimmten Zeit nicht mehr akt
 
Hallo,

erstens solltest du das Randomize ins OnCreate der Form tun:
Delphi-Quellcode:
procedure Tfrmgrundrechenarten.OnCreate(Sender: TObject);
begin
  //Randomize nur einmal aufrufen - am besten hier im OnCreate der Form
  randomize;
end;
Was ich auch nicht versteh ist, wieso du
Delphi-Quellcode:
           x1 := random(9999);
           x2 := random(6666);
so oft aufrufst.

Kann es sein dass Operatorzeichen auch mal ein anderes Zeichen ausgeben kann, ausser +, -, /, *?

Darkchild 30. Jan 2007 20:49

Re: Das Label wird nach einer bestimmten Zeit nicht mehr akt
 
Nein, Operatorzeichen kann nur +,-,*,: und nicht mehr.

Und Random wird immer wieder aufgerufen um eine möglichst grosse Anzahl unterschiedlicher Zufallswerte zu bekommen.
Und um eine "Unendliche" Anzahl an Aufgaben zu erhalten.

Aber ich glaube auch nicht das eines dieser beiden Elemente zu meinem Problem führt.

Ich kann gerne mal die exe zum Dowload stellen und dann könnt ihr mal ein paar Aufgaben rechnen und nach einer weile wirst Du sehen was ich meine, vieleicht hilft das ja weiter.

Gruss
Darkchild

Helmi 30. Jan 2007 20:50

Re: Das Label wird nach einer bestimmten Zeit nicht mehr akt
 
stelle aber auch den code zur verfügung

Darkchild 30. Jan 2007 20:58

Re: Das Label wird nach einer bestimmten Zeit nicht mehr akt
 
Liste der Anhänge anzeigen (Anzahl: 2)
Also gut, hier erst mal die exe und gleich kommt noch der Code dazu, dann editiere ich das ganze nochmal.

Gruss
Darkchild

P.S: So habe die Grundrechnen.pas dabei gelegt, sollte reichen, oder ?

Nicolai1234 30. Jan 2007 21:03

Re: Das Label wird nach einer bestimmten Zeit nicht mehr akt
 
Zitat:

Zitat von Darkchild
Nur wie gesagt ab der ca 15 bis 20 Aufgabe bleibt immer die selbe Augabe stehen und ändert sich nicht mehr.
Muss ich da irgendeinen Puffer leeren oder label.free oder was auch immer, ich weis es im moment echt nicht, aber irgendwie sowas muss es sein.

Was ist denn Punkte für eine Variable. Veilleicht hast du ja nach 15 bis 20 Aufgaben mehr als 10 Punkte erreicht und die case-Struktur greift nicht mehr...

Darkchild 30. Jan 2007 21:06

Re: Das Label wird nach einer bestimmten Zeit nicht mehr akt
 
@Nicolai1605

Jo, das könnte es sein, muss ich direkt mal testen. Wenn dem so ist dann muss ich mich :wall: :oops: .
Aber mitten im Proggen und Testen habe ich da garnicht dran gedacht.

Gruss
Darkchild

Darkchild 30. Jan 2007 21:11

Re: Das Label wird nach einer bestimmten Zeit nicht mehr akt
 
@Nicolai1605

Hattest recht, genau daran lag es :oops: .
Danke für die Hilfe, da habe ich den Wald vor lauter Bäumen nicht gesehen.

Gruss
Darkchild


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