AGB  ·  Datenschutz  ·  Impressum  







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

Random Probelm

Ein Thema von Crazymodder · begonnen am 14. Jan 2007 · letzter Beitrag vom 14. Jan 2007
Antwort Antwort
Crazymodder

Registriert seit: 28. Dez 2006
69 Beiträge
 
#1

Random Probelm

  Alt 14. Jan 2007, 14:42
So hi habe wieder ein Problem und hoffe hier auf Hilfe.
Ich möchte folgendes erreichen:
Das Programm soll immer random buchstaben ausgeben!
Lösung:
Ich habe einen Timer genommen der jede Minute "zuschlägt".
Delphi-Quellcode:

procedure Timer.....
begin
Randomize;
Zufall := random (51) + 1;
if Zufall = 1 then
Keybd_Event(ord('A),0,0,0);
if Zufall = 2 then
Keybd_Event(ord(
'B'),0,0,0);
....... usw.
end;
So also er soll ebend die Buchstaben immer im random ausgeben cool wäre noch wenn ihr mir erklären könnten wie ich den timer auch noch über random "steuern" kann. Also in ner zeitspanner von 1 sekunde bis 3 min.
  Mit Zitat antworten Zitat
Benutzerbild von zecke
zecke

Registriert seit: 17. Jan 2004
494 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Random Probelm

  Alt 14. Jan 2007, 14:46
Nun zuerst solltest Du ein ' nach A bei "Keybd_Event(ord('A),0,0,0);" hinzufügen.

Der Timer besitzt eine Einstellung Intervall (im OI). Diese gibt die Zeit in ms an.
mfg zecke
  Mit Zitat antworten Zitat
Benutzerbild von ste_ett
ste_ett

Registriert seit: 10. Sep 2004
Ort: Dülmen
464 Beiträge
 
Delphi 7 Professional
 
#3

Re: Random Probelm

  Alt 14. Jan 2007, 14:47
Über die Property "Intervall" der Instanz der TTimer-Klasse kannst du das Intervall setzen, bis das nächste Mal die Prozedur ausgeführt wird.

Name.Intervall := (Random(180) +1) * 1000; // 180 Sekunden = 3 Min Das setzt du entweder einmal, damit das Intervall fest ist, oder am Ende jedes Prozedur-Aufrufs, dann verändert sich das Intervall jedes Mal.
Stefan
"Geht nicht!" ist keine Fehlerbeschreibung und "Hab ich schon versucht!" keine Antwort!

Hey, it compiles! Ship it!
  Mit Zitat antworten Zitat
fwsp
(Gast)

n/a Beiträge
 
#4

Re: Random Probelm

  Alt 14. Jan 2007, 14:48
auch solltest du das randomize nur einmal aufrufen, am besten im OnCreate der Form.
es gibt auch noch die case anweisung, damit sparst du dir die ganzen ifs.
  Mit Zitat antworten Zitat
Eichhoernchen

Registriert seit: 22. Apr 2004
Ort: Hagen
322 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Random Probelm

  Alt 14. Jan 2007, 14:53
du könntest dir die ganzen If Anweisungen sparen indem du den Randombereich auf die ASCII Zeichen einschränkst..so:

Delphi-Quellcode:
procedure Timer.....
begin
Randomize; //nur 1mal aufrufen pack das ins OnCreate
Zufall := random (26) + 65; //Alle Großbuchstaben aus der ASCII-Tabelle von 65 bis 90
Keybd_Event(Zufall, 0, 0, 0);
end;
du kannst das natürlich noch erweitern: Ascii-Tabelle

Ich hoffe das hilft dir....
Jan
  Mit Zitat antworten Zitat
Crazymodder

Registriert seit: 28. Dez 2006
69 Beiträge
 
#6

Re: Random Probelm

  Alt 14. Jan 2007, 14:58
Ja super thx für die schnelle Antwort. Aber wie sage ich ihm den wann er welchen Buchstaben drücken soll also hab hier irgendwas von case Anweisung gelsesen wäre nett wenn jmd das nochmal kurz erklären könnte. Also wie ich ihm nun sage wenn die Zufallszahl 7 ist soll er z.B K schreiben oder so?
Danke in Vorraus
Crazymodder
  Mit Zitat antworten Zitat
Eichhoernchen

Registriert seit: 22. Apr 2004
Ort: Hagen
322 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Random Probelm

  Alt 14. Jan 2007, 15:04
ich dachte es ist schnuppe, welchen Buchstaben er schreibt, ich denke das soll Zufall sein?

Der Befehl Ord('X'), gibt im Endeffekt 88 Zurück, was wiederum in der ASCII-Tabelle steht.
Also generierst du dir einfach eine Zahl aus der ASCII-Tabelle und das umformen sparst du dir dann, genauso wie die ganzen IF oder Case Anweisungen, weil du musst nicht mehr Prüfen, wenn 7 dann mach nen K, sondern wir generieren gleich das Ord('K').
Du kannst auch den ganzen Zeichensatz so benutzen, dazu machste dir nen Constantes Array mit allen ASCII-Werten die du willst du sprichst das dann per Random an.

Falls du aber alles einzeln machen willst, nimm Case, dass funktioniert so:

Delphi-Quellcode:
case VARIABLE of
  WERT1:
    begin
      ...
    end;
  WERT2: ...
  WERT3: ...
  ...
  WERTN: ...
  else ...
end;
Jan
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.767 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: Random Probelm

  Alt 14. Jan 2007, 15:07
[quote="Crazymodder"]
Delphi-Quellcode:

procedure Timer.....
begin
Randomize;
Zufall := random (51) + 1;
if Zufall = 1 then
Keybd_Event(ord('A),0,0,0);
if Zufall = 2 then
Keybd_Event(ord(
'B'),0,0,0);
....... usw.
end;
Mir ist nicht so recht klar warum Du
bei random einen Maximalwert von 51 nimmst.

Du könntest doch auch mit der Funktion
randomRange arbeiten:

Delphi-Quellcode:
procedure Timer.execute
var
 zufall:Integer;
begin
  zufall:=randomRange(ord('A'),ord('Z'));
  keybd_Event(zufall,0,0,0);
end;
Dann schenkst Du dir die ganzen if oder case Abfragen.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Crazymodder

Registriert seit: 28. Dez 2006
69 Beiträge
 
#9

Re: Random Probelm

  Alt 14. Jan 2007, 15:12
Gut okay ich glaube ich weiß jetzt wie aber ich will ja nur bestimmt buchstaben nämlich a,s,d,w,lerrzeichen,o,p,c,y und die sollen random gedrückt werden und manchmal halt auf 2 oder 3 gleichzeitig
Hierzu wäre ne kleine Hilfestellung nochmal ganz nett
Danke im Vorruas
Crazymodder
  Mit Zitat antworten Zitat
Eichhoernchen

Registriert seit: 22. Apr 2004
Ort: Hagen
322 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: Random Probelm

  Alt 14. Jan 2007, 15:19
dann machdas doch so:

Delphi-Quellcode:
procedure mach;
const
  chars: array[0..8] of integer = (97, 100, 115, 119, 32, 111, 112, 99, 121);
begin
 Keybd_Event(chars[random(9)],0,0,0);
end;

was du aber mit dem Gleichzeitig meinst, weiß ich net... soll das nen Bot für nen PC spiel werden? Damit du AFK gehen kannst? Die Tasten könnten passen....
Jan
  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 03:45 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