Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Prozeduren ohne Buttons, Timer etc.
muzy - Mi 17.09.08 19:18
Titel: Prozeduren ohne Buttons, Timer etc.
Hey :)
Ich habe mal wieder eine Frage. In der Schule habe ich bsiher nur gelernt, das Prozeduren nur über Buttons und Timer aufgerufen werden können.
Aber ich brauche ca 20 Prozeduren und dafür immer einen Button wäre extrem doof.
Ich hab einfach mal versucht diese Prozedur selbst zu machen, jedoch haben diese nie die globalen Variablen angenommen, bzw kannten die nicht.
Deswegen bitte ich um eine Muster-prozedur die auch alle globalen Variablen anerkennt.
Mit besten Dank im Vorraus
Sebastian aka Muzy
PS: Ich hab die bekannten Suchmaschinen schon "befragt" aber ohne Erfolg. Deswegen helft bitte einem Anfänger :)
ub60 - Mi 17.09.08 19:22
Zeig doch am Besten mal den nicht funktionierenden Quelltext bzw. Ausschnitte. Ev. sieht man da den Fehler besser.
ub60
muzy - Mi 17.09.08 19:27
Delphi-Quelltext
1: 2: 3: 4: 5:
| procedure Ampelaenderung begin Autoimageint:=random(10); AutoImage.left:=AutoImage.left+2; end; |
Das Problem ist das er auf einmal die Variable Autoimageint nicht kennt. Was mache ich falsch?
muzy - Mi 17.09.08 20:11
Ahh, heißt das ich muss in jeder procedure nocheinmal extra sagen, was für ein Variablentyp das ist den ich benutze?
Obwohl ich die schon vorher deklariert habe? -- Komisch
also wäre eine gültige Procedure das hier:
Delphi-Quelltext
1: 2: 3: 4: 5:
| procedure Ampelaenderung (Autoimageint: Integer) begin Autoimageint:=random(10); AutoImage.left:=AutoImage.left+2; end; |
stimmt das?
Und was ist wenn ich mehrere Variablentypen habe z.B. Boolean + Integer und string zusammen?
Muzy
PS: Nachdem ich bereits meinen PC durch einige vermutete Programmteile zum abstürzen gebracht habe, lass ich meinen Vorschlag lieber durch Profis verifizieren.
Yogu - Mi 17.09.08 20:14
muzy hat folgendes geschrieben: |
Ahh, heißt das ich muss in jeder procedure nocheinmal extra sagen, was für ein Variablentyp das ist den ich benutze?
Obwohl ich die schon vorher deklariert habe? -- Komisch |
Wenn du die Variable bereits definiert hast, brauchst du das nicht mehr zu tun. Die Prozedur, die du hier gepostest hast, besitzt einen Parameter. Diesen müsstest du angeben, wenn du die Prozedur startest. Das dürfte nicht erwünscht sein, wenn du globale Variablen verwendest.
Zeig mal deinen ganze Quelltext, mir ist gerade nicht ganz klar, wo das Problem liegt.
Gausi - Mi 17.09.08 20:18
Das Problem ist, dass due Auf AutoImage zugreifst, was höchstwahrscheinlich ein Image auf der Form ist. Du solltest also die Prozedur, die du da hast zu einer Methode der Form machen. Dafür fügst du die Zeile
Delphi-Quelltext
1:
| procedure Ampelaenderung (Autoimageint: Integer); |
da ein, wo oben in der Unit auch die ganzen anderen Prozeduren untereinander stehen (Button1Click usw.) und änderst dann die Prozedur selbst zu
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| procedure TForm1.Ampelaenderung (Autoimageint: Integer) begin Autoimageint:=random(10); AutoImage.left:=AutoImage.left+2; end; |
Dann sollte es funktionieren.
Edit: Aber das Dingen macht so keinen Sinn. Der Parameter wird ignoriert bzw. neu berechnet, und dann überhaupt nicht verwendet.
jaenicke - Mi 17.09.08 20:23
Deine Prozedur muss zum Formular gehören, dann kennt es auch Variablen / Eigenschaften des Formulars ;-).
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:
| TForm1 = class(TForm) ... private DeineVariable: Integer; procedure ZaehleHinzu(uWert: Integer); public procedure Button1Click(Sender: TObject); end;
...
procedure TForm1.ZaehleHinzu(uWert: Integer); begin DeineVariable := DeineVariable + uWert; end;
procedure TForm1.Button1Click(Sender: TObject); begin DeineVariable := 10; ZaehleHinzu(4); ShowMessage(IntToStr(DeineVariable)); ZaehleHinzu(10); ShowMessage(IntToStr(DeineVariable)); end; |
Alternative: Vor jeden Zugriff auf die Variable Form1. davorschreiben.
muzy - Mi 17.09.08 20:23
Vielen Dank für die Hilfe, ich glaub ich weiß wo mein Fehler liegt.
Und die Prozedur macht qauf dem ersten Blick keinen bzw kaum Sinn, jedoch sollen wir nach 6 Wochen Delphi in Informatik eine Verkehrssimulation erstellen mit Ampelschaltung und Fußgänger.
Ich wette es geht bei mir auch einfacher, aber das klappt schon irgendwie.
Muzy
PS: Besten Dank, jetzt hab ich rund 1 Duzend Buttons weniger =)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!