Entwickler-Ecke

Sonstiges (Delphi) - Problem mit Variable


Blackheart - Sa 20.03.04 15:42
Titel: Problem mit Variable
Habe folgendes Problem!
Habe sechs Bilder und die soll'n Zufällig gewählt werden das klappt ja.
das sind Würfel, also bei 0 wäre es das Bild mit der Eins usw.
Das mit dem Label hab ich nur eingebaut um zu sehen welche zufallsvariable grad erzeugt wurde,und ob das klappt.
Jetzt mein Problem
Ich möchte gern bei Image.klick das ich weiss welches Bild gerade da ist,so wie ich das hier gemacht habe erkennt er nur 0 oder 1 irgendwie muss ich die Variable an die Image.klick Methode übergeben aber wie ?


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
procedure TForm1.Button1Click(Sender: TObject);
 var
   a: integer;
begin
  randomize;
a:=Random(6);

  if a=0   then
     Label1.Caption:='1';// Das ist nur zur Überprüfung !
  if a=1   then  
     Label1.Caption:='2';
  if a=2   then 
     Label1.Caption:='3';
  if a=3   then 
     Label1.Caption:='4';
  if a=4   then 
     Label1.Caption:='5';
  if a=5   then
     Label1.Caption:='6';

  if a=0  then
    image1.Picture.LoadFromFile(ExtractFilePath(paramStr(0)) + '1.bmp');
  if a=1  then
   image1.Picture.LoadFromFile(ExtractFilePath(paramStr(0)) + '2.bmp');
  if a=2  then
   image1.Picture.LoadFromFile(ExtractFilePath(paramStr(0)) + '3.bmp');
  if a=3 then
   image1.Picture.LoadFromFile(ExtractFilePath(paramStr(0)) + '4.bmp');
  if a=4 then
   image1.Picture.LoadFromFile(ExtractFilePath(paramStr(0)) + '5.bmp');
  if a=5 then
   image1.Picture.LoadFromFile(ExtractFilePath(paramStr(0)) + '6.bmp');

procedure TForm1.Image1Click(Sender: TObject);
 begin
  if a=0  then
   image2.Picture.LoadFromFile(ExtractFilePath(paramStr(0)) + '1.bmp');
end;


Moderiert von user profile iconPeter Lustig: Topic verschoben


Anonymous - Sa 20.03.04 15:53

wieso schreibst du a nicht einfach global?


ixtreme.de


adler - Sa 20.03.04 15:54

Ist so da dein Code?
Sieht komisch aus, aber wenns funzt... declarier mal die variable a global...

Edit: Oh nein er war schneller ^^


Christian S. - Sa 20.03.04 16:07

Wenn ich das Problem richtig verstanden habe, kannst Du auch die Tag-Eigenschaft des Images beim Laden auf die Nummer des Bildes setzen und im OnClick abfragen.


Blackheart - Sa 20.03.04 16:42

Mein Problem ist beim Button.klick möchte ich sechs verschiedene Bilder laden im zufallsprinzip das war ja nicht das Problem.
Da ich wissen wollte ob auch das richtige Bild zum Wert geladen wird hab ich das mit dem Label eingefügt also das Label zeigt dann 1 an wenn der wert der Variablen 0 ist also weiss ich das mein Bild 1.bmp geladen wird.
Das sollte dazu sein ob die werte auch hinhaun also bei 0 kommt das Bild mit Würfel1 usw.
Aber jetzt kommts ich möchte gern das wenn das Image1 den wert 0 hat also mein Bild 1.bmp lädt auch die Image1.klick Methode das mitkriegt das der wert 0 ist.
Ich möchte dann nähmlich mit diesem wert weiter arbeiten aber das klappt nun mal nicht auch wenn ichs global vereinbare.
Die klick Methode erkennt nur den wert 0 oder 1
Ich hab ja angegeben in Button.klick if a=0 then aber !!!???

Danke für die Antwort!!!


Christian S. - Sa 20.03.04 17:08

Hast Du mein Posting gelesen? Damit sollte das auch ohne globale Variable gehen.


Delete - Sa 20.03.04 18:48

Deklarier dein 'a' global, also direkt da wo "Form1:TForm1;" steht und gib ihm dabei gleich einen aussagekräftigen Namen wie 'Würfelzahl'.

Und sieh dir auch mal die Funktion IntToStr an. --> Label1.Caption:=IntToStr(a);
Das ist um einiges sparsamer als deine zig if hintereinander... besonders da wo du dann deine Images laden willst.

Ach ja und randomize solltest du nur einmal beim Start der Anwendung aufrufen.


Christian S. - Sa 20.03.04 18:54

Ich finde, es ist mit der Tag-Eigenschaft übersichtlicher, weil die Information dort ist, wo sie hingehört: beim entsprechenden Objekt.


Delete - Sa 20.03.04 19:59

klar... auch gut