Entwickler-Ecke
Sonstiges (Delphi) - JvDice rotieren lassen
FiceGoesDelphi - Do 05.07.07 15:10
Titel: JvDice rotieren lassen
Hallöchen ;)
Ich hoffe ich habe das richtige Thema getroffen *gg*
Ich würde gerne meine JvDice Komponenten rotieren lassen.
Soweit so gut.. es gibt nen "Rotate (boolean)" und nen "AutoStopInterval (Cardinal)"
Aber aus irgendwelchen Gründen, stürzt das Programm IMMER ab, wenn ich ein Rotieren stopen will! :oops:
Delphi-Quelltext
1: 2:
| jvDice1.AutoStopInterval := 10; JvDice1.Rotate := True; |
So zum Bleistift ;)
Warum das so ist, weiß ich nicht! Wenn ich in dem Objektinspektor "Rotate" auf "True" setzen will,
stürzt mir sogar Delphi ab!
Kann mir irgendeiner helfen :?!?:
LG,
ZeitGeist87 - Do 05.07.07 15:47
Ähm :)
Probiers mal JvDice.Rotate:= false;
LG
Stefan
FiceGoesDelphi - Do 05.07.07 15:49
Könnte ich vllt schon ausprobiert haben oder? ;)
.. Der Nächste bitte ..
:tongue:
ZeitGeist87 - Do 05.07.07 15:51
Start mal Rechner neu :)
Ich hatte diesen Würfel auch schon, hatte allerdings keine Probleme damit..
FiceGoesDelphi - Do 05.07.07 15:52
Wie wärs, wenn du mir dann mal den Code, welchen du damals benutzt hast, zukommen lässt? ;)
Auf Buttonclick soll der bzw die 4 Würfel rotiert werden.
ZeitGeist87 - Do 05.07.07 15:57
Wir verwenden in der Arbeit keinerlei Fremdkomponenten :)
entwickeln alles selber...
Du könntest aber deinen Monitor rotieren lassen..geht auch mit delphi :P
Hmm..drück doch mal F1..oder geht das nicht?
Ich mein deine Tastatur war schon teuer genug.. :wink:
LG
Stefan
FiceGoesDelphi - Do 05.07.07 16:01
Natürlich kann ich F1 drücken ;)
Ich kann sogar F2 drücken! Und jetzt kommts .... F4 funktioniert auch :P
1. Meine Tasta ist zuhause zum zocken! Nicht auf der Arbeit :P
2. JV-Komponenten sind in der OH glaube ich nicht zu finden oder? bzw JvDice aufjedenfall nicht!
3. HAHAHA -.-
ZeitGeist87 - Do 05.07.07 16:07
FiceGoesDelphi hat folgendes geschrieben: |
Natürlich kann ich F1 drücken ;)
Ich kann sogar F2 drücken! Und jetzt kommts .... F4 funktioniert auch :P |
F3 haste nicht oda :)
Hmm..dachte immer, dass die auch dokumentiert sind..
Aber warum um alles in der Welt, benötigst du in der ARBEIT einen Würfel?
Ist euch in der Bank so langweilig?
Oder müssen die Kunden, die einen Kredit haben wollen würfeln? :P
Naja..ich schau in ner Stunde mal daheim nach ok?
FiceGoesDelphi - Do 05.07.07 16:09
Ich habs :D
War eigentlich ganz einfach oder? :tongue:
kann somit Closed werden :)
Thx an alle die mir nicht helfen konnten :rofl:
ZeitGeist87 - Do 05.07.07 16:13
FiceGoesDelphi hat folgendes geschrieben: |
Ich habs :D
War eigentlich ganz einfach oder? :tongue:
kann somit Closed werden :)
Thx an alle die mir nicht helfen konnten :rofl: |
Hast du das jetzt alles allein rausgefunden?
Björn!
Bin stolz :P
FiceGoesDelphi - Mo 09.07.07 08:21
Ich hab nen neues/altes Problem...
Ich möchte nun vor dem "Throw" den Würfel rotieren lassen!
Ich habe nun folgenden Code geschrieben:
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: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57:
| procedure TForm1.BitBtn1Click(Sender: TObject); var Range : 1111..9999; Text : Integer; begin Range := 9999; Randomize; Text:= Random(Range); if Text < 1000 then begin Text := Text + 1000; Edit1.Text := IntToStr(Text); JvDice1.Rotate := True; JvDice2.Rotate := True; JvDice3.Rotate := True; JvDice4.Rotate := True; Timer1.Enabled:= true; end else begin Edit1.Text := IntToStr(Text); JvDice1.Rotate := True; JvDice2.Rotate := True; JvDice3.Rotate := True; JvDice4.Rotate := True; Timer1.Enabled:= true; end; end;
procedure TForm1.FormShow(Sender: TObject); var Range : 1111..9999; Text : Integer; begin Range := 9999; Randomize; Text:= Random(Range); if Text < 1000 then begin Text := Text + 1000; Edit1.Text := IntToStr(Text); end else JvDice1.Throw; JvDice2.Throw; JvDice3.Throw; JvDice4.Throw; end;
procedure TForm1.Timer1Timer(Sender: TObject); begin Timer1.Enabled := false; JvDice1.rotate := false; JvDice2.rotate := false; JvDice3.rotate := false; JvDice4.rotate := false; end; |
Ich weiß... ich könnte nun alles wesentlich kürzer fassen..
Ich hab nen bestehenden Code nehmen sollen und ihn einfach auf Delphi2006 umschreiben sollen.
Mein Problem ist auch einfach nur, dass das Programm zwar nach Buttonclick wunderbar die Würfel rotieren lässt und dann auch wieder anhält, ABER dann auch abstürzt!
Ich verzweifle langsam :(
Liegts an fehlerhaften JV-Kompos!?
Oder habe ich mir da selber eine Grube gegraben?!
LG,
ZeitGeist87 - Mo 09.07.07 14:09
FiceGoesDelphi hat folgendes geschrieben: |
Ich hab nen neues/altes Problem...
Ich möchte nun vor dem "Throw" den Würfel rotieren lassen!
Ich habe nun folgenden Code geschrieben:
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: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59:
| procedure TForm1.BitBtn1Click(Sender: TObject); var Range : 1111..9999; Text : Integer; begin Range := 9999; Randomize; Text:= Random(Range); if Text < 1000 then begin Text := Text + 1000; Edit1.Text := IntToStr(Text); JvDice1.Rotate := True; JvDice2.Rotate := True; JvDice3.Rotate := True; JvDice4.Rotate := True; Timer1.Enabled:= true; end else begin Edit1.Text := IntToStr(Text); JvDice1.Rotate := True; JvDice2.Rotate := True; JvDice3.Rotate := True; JvDice4.Rotate := True; Timer1.Enabled:= true; end; end;
procedure TForm1.FormShow(Sender: TObject); var Range : 1111..9999; Text : Integer; begin Range := 9999; Randomize; Text:= Random(Range); if Text < 1000 then begin Text := Text + 1000; Edit1.Text := IntToStr(Text); end else begin JvDice1.Throw; JvDice2.Throw; JvDice3.Throw; JvDice4.Throw; end; end;
procedure TForm1.Timer1Timer(Sender: TObject); begin Timer1.Enabled := false; JvDice1.rotate := false; JvDice2.rotate := false; JvDice3.rotate := false; JvDice4.rotate := false; end; |
Ich weiß... ich könnte nun alles wesentlich kürzer fassen..
Ich hab nen bestehenden Code nehmen sollen und ihn einfach auf Delphi2006 umschreiben sollen.
Mein Problem ist auch einfach nur, dass das Programm zwar nach Buttonclick wunderbar die Würfel rotieren lässt und dann auch wieder anhält, ABER dann auch abstürzt!
Ich verzweifle langsam :(
Liegts an fehlerhaften JV-Kompos!?
Oder habe ich mir da selber eine Grube gegraben?!
LG, |
Was bewirkt dieses
.Throw?
FiceGoesDelphi - Mo 09.07.07 14:15
.Throw bewirkt ein einfaches "verändern" der Augenanzahl des Würfels!
Ein .Rotate := True lässt den Würfel rotieren.
Durch den Timer lasse ich den Würfel kurz rotieren und stoppe ihn dann
kurze Zeit später wieder mit dem 2. Timer.
Das funktioniert auch soweit ganz gut!
Nur das Programm stürzt nach dem False ab...
Wenn ich im Objektinspektor den Wert auf True setze und danach wieder auf
False stürzt sogar Delphi komplett ab :(
Ich will doch nur den Würfel rotieren lassen bevor er mir eine neue
Augenzahl anzeigt!
*verzweifel*
ZeitGeist87 - Mo 09.07.07 14:33
Wie wo 2. Timer?
Leg n neues Projekt an,
Tu einen Würfel drauf, und mach das Gleiche wie in dem Programm!
Spiel bissl rum..
Ich installier die Jedis dann mal und helf dir ausführlich
LG
Stefan
FiceGoesDelphi - Mo 09.07.07 14:37
Achso.. sehe gerade ich hab vor dem weiteren rumspielen hier gepostet!
Dann kommt nachher mal der Atkuelle Code.
Hab überflüssiges rausgenommen und das Starten und Stoppen jeweils in unterschiedliche
Timer gepackt!
Funktioniert nicht!
Hab auch schon ein neues Formular genommen und 1 Würfel draufgepackt, dann 2 Button
(Starten und Stoppen) genommen und nur ein := True und := False genommen!
Stürzt trotzdem ab!
Bevor du das ausprobierst, speichere bitte alles ab, was wichtig ist!
Nicht das dir da was verloren geht!
Und danke für deine Hilfe ;)
ZeitGeist87 - Mo 09.07.07 14:39
FiceGoesDelphi hat folgendes geschrieben: |
Bevor du das ausprobierst, speichere bitte alles ab, was wichtig ist!
Nicht das dir da was verloren geht!
Und danke für deine Hilfe ;) |
Speichern ist mein 2. Vorname :wink:
Nichts zu danken Björn..das weißt du
Dunkel - Mo 09.07.07 14:46
Hallo!
Ich hab' mir das Problem mal angeguckt und die entsprechende Klasse grob überflogen.
Folgendes in JVDice.pas ändern, dann funktioniert zumindest das Rotieren aus dem Quellcode heraus; Zuweisung im OI lässt immer noch Delphi abstürzen.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| procedure TJvDice.TimerFires(Sender: TObject); var Now: Longint; begin NewRandomValue; if not FRotate then begin FTimer.Enabled:= False; end else if AutoStopInterval > 0 then begin Now := GetTickCount; if (Now - FTickCount >= Integer(AutoStopInterval)) or (Now < FTickCount) then Rotate := False; end; end; |
FiceGoesDelphi - Mo 09.07.07 15:02
Ein Dankeschön sollte es trotzdem immer mal wieder geben ;)
FiceGoesDelphi - Mo 09.07.07 15:03
Dunkel hat folgendes geschrieben: |
Hallo!
Ich hab' mir das Problem mal angeguckt und die entsprechende Klasse grob überflogen.
Folgendes in JVDice.pas ändern, dann funktioniert zumindest das Rotieren aus dem Quellcode heraus; Zuweisung im OI lässt immer noch Delphi abstürzen.
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20:
| procedure TJvDice.TimerFires(Sender: TObject); var Now: Longint; begin NewRandomValue; if not FRotate then begin FTimer.Enabled:= False; end else if AutoStopInterval > 0 then begin Now := GetTickCount; if (Now - FTickCount >= Integer(AutoStopInterval)) or (Now < FTickCount) then Rotate := False; end; end; | |
Wow :) Dankeschön! :flehan:
Wenn das funktioniert könnte ich dich knutschen ;)
Edit: :dunce: :dance2: :dance: :party: :beer:
DANKE! Wenn du irgendwann mal lust und Zeit hast, kannst mir ja noch kurz erklären WARUM das jetzt so war *gg*
Dunkel - Mo 09.07.07 15:09
FiceGoesDelphi hat folgendes geschrieben: |
Wow :) Dankeschön! :flehan: Wenn das funktioniert könnte ich dich knutschen ;) |
:shock: Muss nicht unbedingt sein!!!! :wink:
FiceGoesDelphi hat folgendes geschrieben: |
Edit: :dunce: :dance2: :dance: :party: :beer: DANKE! Wenn du irgendwann mal lust und Zeit hast, kannst mir ja noch kurz erklären WARUM das jetzt so war *gg* |
Hmmm... ich finde die Komponente schlecht programmiert. Beim setzen von der Eigenschaft Rotate wird ein TTimer erstellt, beim Rücksetzen wird dieser, im OnTimer-Ereignis(!!!), wieder freigegeben. Da liegt wohl das Problem!
Wenn man den Timer aber nicht freet, sondern nur disabled, dann funzt es.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 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!