AGB  ·  Datenschutz  ·  Impressum  







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

Timer blocken -.-

Ein Thema von MasterTobi · begonnen am 8. Jun 2009 · letzter Beitrag vom 12. Jun 2009
Antwort Antwort
MasterTobi

Registriert seit: 29. Apr 2007
212 Beiträge
 
#1

Timer blocken -.-

  Alt 8. Jun 2009, 14:27
hallo hab da noch eine frage
un zwar

Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if taste =1 then else begin
  if (GetASYNCKeyState ($31) <> 0)then begin
    keybd_event(VKKeyScan('t'),0,0,0);
    text :=Edit1.Text;
    EnterText(text);
    keybd_event(239, 0, KEYEVENTF_KEYUP, 0);
    sendkeys('{ENTER}',true);
    end;

......
das funktioniert ja wunderbar =)

dieses "t" ist dafür da dass man ingame ein text eingeben kann << nur zur info

so wenn ich jetzt nun ingame einen manuellen text eingeben will sprich ich drücke "t" un dann ein text z.b. hallo test1. dann führt er mir den Code oben aus.
da habe ich mir gedacht unterbinden wir das mal =)

Delphi-Quellcode:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);

begin
case key of
Ord('T'): begin Timer1.Enabled:=false;taste:=1; end;
Ord(VK_Return): begin timer1.Enabled:=True;taste:=0 end;
end;

nun drücke ich "t" gebe einen text ein zb "hallo herr1" führt er mir den code nicht aus (siehe oben) aber sobald ich dann "enter" drücke führt er mir den aus =(


meine frage ist ob man irgendwie den timer bzw den binder blocken kann wenn ich "t" drücke und dann text+zahl!?

[edit=Matze]Delphi-Code von zu viel Copy&Paste-Text bereinigt. Bitte zukünftig vor dem Absenden die Vorschaufunktion nutzen. MfG, Matze[/edit]
MFG
Tobi
  Mit Zitat antworten Zitat
Benutzerbild von Die Muhkuh
Die Muhkuh

Registriert seit: 21. Aug 2003
7.332 Beiträge
 
Delphi 2009 Professional
 
#2

Re: Timer blocken -.-

  Alt 8. Jun 2009, 14:35
Wenn Du den Timer ausschaltet ist ja klar, dass der Code im Timer nicht ausgeführt wird, Du musst den Timer schon laufen lassen.
  Mit Zitat antworten Zitat
angos

Registriert seit: 26. Mai 2004
Ort: Rheine
549 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Timer blocken -.-

  Alt 8. Jun 2009, 14:40
hi,

ich verstehe leider nicht was du willst. Erkläre doch mal, was du überhaupt genau vorhast, und was du mit ingame meinst? Ingame in einem x-beliebigen spiel, oder programmierst du gerade ein spiel und ist das der Source aus dem Projekt??

Einen Timer an der automatischen Ausführung hindern kann man mit Timer.Enabled := False; @Muhkuh: ich bin mir nciht sicher, ob er das meint
Zitat:
da habe ich mir gedacht unterbinden wir das mal =)
Also nochmal, MasterTobi: Bitte erklär einmal grundsätzlich was du da machen möchtest


Gruß
Ansgar
Ansgar
  Mit Zitat antworten Zitat
MasterTobi

Registriert seit: 29. Apr 2007
212 Beiträge
 
#4

Re: Timer blocken -.-

  Alt 8. Jun 2009, 14:46
vll falsch ausgedrückt

ok ich programmiere ein keybinder für ein Spiel!
wenn ich dort ingame(im spiel) die taste "t" drücke öffnet sich eine eingabebox wo man einen text reinschreiben kann zb " hallo du " oder befehle zb "/muha". um mir und anderen gamern eine hilfe zuschaffen lege ich die befehle auf die tasten 1-0, sprich ich drücke ingame die taste 1 dann soll er zb "/muha" senden

mein problem ist allerdings das man ja auch manuel schreiben kann "hallo 1"
sprich ich drücke erst "t" dann meinen text << beinhaltet der der text allerdings eine zahl die ich über die tasten 1- 0 eingebe und nicht über die numpad tasten dann führt er mir dies aus:

Delphi-Quellcode:
  if (GetASYNCKeyState ($31) <> 0)then begin
    keybd_event(VKKeyScan('t'),0,0,0);
    text :=Edit1.Text;
    EnterText(text);
    keybd_event(239, 0, KEYEVENTF_KEYUP, 0);
    sendkeys('{ENTER}',true);
    end;
dies ausführen

deswegen dachte ich gut sage ich wenn ich "t" drücke soll er mir den Timer deaktivieren um die eingaben nicht mehr zu registrieren. aber dies macht er nicht =(

der Code:
Delphi-Quellcode:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);

begin
case key of
Ord('T'): begin Timer1.Enabled:=false;taste:=1; end;
Ord(VK_Return): begin timer1.Enabled:=True;taste:=0 end;
end;
MFG
Tobi
  Mit Zitat antworten Zitat
MasterTobi

Registriert seit: 29. Apr 2007
212 Beiträge
 
#5

Re: Timer blocken -.-

  Alt 10. Jun 2009, 12:36
ok da ich es nicht hinbekommen habe habe ich es etwas anders gemacht.

un zwar :
habe ich nur 7 Buttons, in jedem Button ändert sich text := Edit1.text um 1, also ..:=edit1, edit2, edit3 etc.



Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
if taste = 1 then
  begin
    keybd_event(VKKeyScan('t'),0,0,0);
    text :=Edit1.Text;
    EnterText(text);
    sendkeys('{ENTER}',true);
    taste:=0;
    exit;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if taste = 1 then else begin
    keybd_event(VKKeyScan('t'),0,0,0);
    text :=Edit2.Text;
    EnterText(text);
    sendkeys('{ENTER}',true);
    taste:=0;
    exit;
end;
end;
....
procedure TForm1.Button3Click(Sender: TObject);
procedure TForm1.Button7Click(Sender: TObject);
nun noch 2 Timer
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if (GetASYNCKeyState ($31) <> 0)then begin
  button1.Click;
  end;

  if (GetASYNCKeyState ($32) <> 0)then begin
  button2.Click;
  end;

  if (GetASYNCKeyState ($33) <> 0)then begin
  button3.Click;
  end;

  if (GetASYNCKeyState ($34) <> 0)then begin
  button4.Click;
  end;
  if (GetASYNCKeyState ($35) <> 0)then begin
  button5.Click;
  end;
  if (GetASYNCKeyState ($36) <> 0)then begin
  button6.Click;
  end;
  if (GetASYNCKeyState ($37) <> 0)then begin
  button7.Click;
  end;
end;
procedure TForm1.Timer2Timer(Sender: TObject);
begin
  if (GetASYNCKeyState (VK_return) <> 0) then begin
  taste:=0;
  end;
  if (GetASYNCKeyState (Ord('T')) <> 0)then begin
  taste:=1;
  end;

alles geht wunderbar bis Button6 bzw. bis Taste 6
sobald ich taste7 drücke oder button7 hängt sich alles auf, er gibt mir dann irgendwie button1 aus un das immer hintereinander bis ich das programm dann schließe.

weiß jemand wieso das so ist?
MFG
Tobi
  Mit Zitat antworten Zitat
MasterTobi

Registriert seit: 29. Apr 2007
212 Beiträge
 
#6

Re: Timer blocken -.-

  Alt 10. Jun 2009, 14:18
ok der fehler liegt darin das wenn in einem edit eine zahl steht erkennt der timer diese un führt dann den dazugehörigen button aus =(

kann man dies verhindern also das wenn im edit eine zahl steht das der timer das nicht erkennt?
MFG
Tobi
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.944 Beiträge
 
Delphi 12 Athens
 
#7

Re: Timer blocken -.-

  Alt 10. Jun 2009, 14:35
1. du brauchst nur einen Timer. Dieser Timer wird nur bei Spielende gestoppt.
2. Du musst dir einen Automaten entwerfen.
3. Du nimmst dir eine Zustandsspeicher z.B. eine Variable vom Aufzählungstyp oder wenn du mehrere Zustände paralell hast vom
Mengentyp .
type tgamestate=(gsPause, gsPlaying, gsChatstartet ); so kannst du im Timer je nach spielstatus unterschiedlich reagieren.

Delphi-Quellcode:
case gamestate of
  gsPause:; //do nothing

  gsPlaying:
  Begin
    ;//Spiellogik
     (*z.b. warten das t gedrückt wird und dann gamestate anpassen *)
  end;
  gsChatstartet:
  Begin
    ;//texteingaben entgegen nehmen oder z.b. auf ENTER warten und dann gamestate anpassen
  end;
end;
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
fui-tak

Registriert seit: 24. Okt 2008
117 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Timer blocken -.-

  Alt 12. Jun 2009, 15:07
Anmerkung: Den ganzen Thread gibt's hier nochmal. Ab Post #4
  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 11:40 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