![]() |
Hilfe bei If then else
Ich habe folgendes Problem. Ich habe in einer schleife extra noch eine If then else abfrage drin. Nur komisch ist, wenn die Aussage unwahr ist macht er alles wie er sollte, aber im nächsten Loop ist die Aussage dann Wahr, aber trotzdem werden die Befehle von Else ausgeführt!
Habsch irgendwie ein Denkfehler?
Delphi-Quellcode:
[edit=mkinzler]Code-Tag durch Delphi-Tag ersetzt Mfg, mkinzler[/edit]
if RadioButton2.Checked then
begin for i := 1 to 2 do begin {anweisung} if xxx and xxy then begin if xxx = Text then begin {Anweisung} end else PostMessage(handle4, WM_KEYUP, Integer('P'), 0); {Selbe Anweisung wie bei wahr} end; end; end; [edit=mkinzler] Mfg, mkinzler[/edit] |
Re: Hilfe bei If then else
Zitat:
|
Re: Hilfe bei If then else
Da ich nich weiss, was genau gemacht wird, kann ich zum eigentlichen Problem nichts sagen aber schreibe besser
Delphi-Quellcode:
if xxx <> Text then
PostMessage(handle4, WM_KEYUP, Integer('P'), 0); {Anweisung} |
Re: Hilfe bei If then else
Dann hättest du die Abfrage lediglich negiert und müsstest dann deinen vorherigen Else-Block mit dem obigen vertauschen.
Edit: und wenn bei Wahr und Falsch jeweils selbiger Code steht, kannst du diesen auch aus den Blöcken der IF-Abfrage herausnehmen. |
Re: Hilfe bei If then else
Ok, dann geh ich mal näher ins Detail
Am Anfang werden handles und texte von einer Anwendung geholt Es wird geprüft ob eine Combobox ein bestimmten text hat Sollte der Text der Combobox eben grad xxx soll er eben seine anweisungen machen wenn nicht, kommt dann else ins spiel und drückt die taste P um das bestimmte wort zu bekommen und dann weiterzumachen. Am Anfang ist der Wert immer unwahr und er macht im ersten zug ihm eben war aber bei der wiederholung nutz er wieder else selbe ist wenn
Delphi-Quellcode:
drückt er jedesmal P obwohl der text eigentlich wahr ist!
if xxx and xxy then
begin if xxx = Text then begin {Anweisung} end if xxx <> Text then begin PostMessage(handle4, WM_KEYUP, Integer('P'), 0); {Anweisung} end; |
Re: Hilfe bei If then else
Gut dass du die Verbesserungsvorschläge ( auch wenn mehrmals der selbe komtt, einfach ignorierst).
Da wir nicht wissen, was der Code im Detail macht, wäre eine hilfreiche Antwort Zufall oder Glück |
Re: Hilfe bei If then else
lÖL hab doch gesagt das er am anfang eben Handles (combobox und textbox) von einer anwendung holt. wennn er diese Handles findet soll er eben Abgleichen ob der text von der bsp Combobox wahr ist. Wenn ja dann soll er eben sagen wir nun angeben. Wenn unwahr ist drückt er eben den Buchstaben P in der Combobox.
In der Combobox gibt es 2 wörter die mit P anfangen Private und Party am anfang steht meistens die Combobox auf normal, deshalb ist der erste was das prog macht P drücken und er kommt uff private (Else anweisung) im nächsten loop hingegen musste er ja feststellen das Combobox auf privat stehen und somit die Anweisung vor else ablaufen, das macht er aber nicht, er erkennt sie immer als unwahr an! |
Re: Hilfe bei If then else
Prüfe doch Deine Aussage ("im 2. Durchlauf ist das immer wahr") erst einmal nach, ich glaube das nämlich nicht.
|
Re: Hilfe bei If then else
Ich glaube du hast recht, da er ja vom ersten lauf den Getwintext noch im string selbst drin hat meinst du das damit?
|
Re: Hilfe bei If then else
Wahrscheinlich ein Problem mit case-sensitiv...rate ich mal so in den Raum rein
Delphi-Quellcode:
if SameText(ComboBox999.Text, meinVergleichstext) then
begin ... end else begin ... end; |
Re: Hilfe bei If then else
Setz doch einmal einen Breakpoint und schau Dir den Inhalt der Variablen an. Evtl. liegt es nur an Groß- oder Kleinschreibung oder etwas in der Art.
|
Re: Hilfe bei If then else
erste durchlauf OK
zweiterdurchlauf hinter else stoppt er und es wird mir als Wert angezeigt 'Private'#0 |
Re: Hilfe bei If then else
Dann versuch es mal mit trim().
[edit] Btw: Handelt es sich um Controls in einer Fremdanwendung? [/edit] |
Re: Hilfe bei If then else
Ok da habsch mich oben net richtig ausgedrückt ja es ist eine fremde anwendung!
MFG Edit: Kann es sein das ich den Wert aus GetWIntext wieder löschen muss nach jeden Loop? oder ist das automatisch? |
Re: Hilfe bei If then else
Gibst du der Anwendung überhaupt Zeit alles abzuarbeiten?
Poste doch mal den kompletten Code mit evtl. der Fremdanwendung, dann müssen wir nicht mehr rumraten. |
Re: Hilfe bei If then else
ja delay sind drin
Delphi-Quellcode:
var
Text: String; Begin Text:= 'Private'; {andere Anweisungen} if RadioButton2.Checked then //Private begin for i := 1 to 10 do begin handle1 := FindWindow('wxWindowClassNR', PCHar(Edit1.Text)); handle1 := FindWindowEx(handle1, 0, 'wxWindowClassNR', 'ID_PANEL1'); handle1 := FindWindowEx(handle1, 0, 'wxWindowClass', 'ID_LISTBOOK1'); handle1 := FindWindowEx(handle1, 0, 'wxWindowClassNR', 'ID_SCROLLEDWINDOW6'); handle4 := GetDlgItem(handle1, 428); handle3 := GetDlgItem(handle1, 430); handle2 := GetDlgItem(handle1, 426); if (handle1 <> 0) and (handle2 <> 0) then begin if trim(GetWintext(handle4)) = Text then begin showmessage(Getwintext(handle4)); if EscPressed('Anwendung abbrechen ?') then Break; delay(6000); end else begin Showmessage(Getwintext(handle4)); PostMessage(handle4, WM_KEYUP, Integer('P'), 0); if EscPressed('Anwendung abbrechen ?') then Break; delay(6000); end; end; end; end; |
Re: Hilfe bei If then else
Zitat:
|
Re: Hilfe bei If then else
Jup wusste net wie ich es sonst nennen soll, später wird die schleife entfernt und eben nur gechekd ob wert stimmt und dann via hotkeys eben vorbestimmte texte rausgeschickt so wie es viele onlinespiele schon dabei haben nur das was ich nebenbei spiele nicht, gibt nur ein programm womit man was schreiben kann!
|
Re: Hilfe bei If then else
Soll das eine Art Bot werden?
|
Re: Hilfe bei If then else
Nein. Es gibt online Spiele wo man via Shortcut vordefinierte Wortgruppen in den Chat bringen kann. Für mein Spiel ist es nicht möglich, aber es gibt ein prog was Privat und ähnliches per Handeinageb senden kann und er texte auch anzeigt die geschrieben wurde! Son Spambot zu schreiben ist ja keen ding, da kannsch das och vordefinieren! Es geht mir eben halt nur drum um via Tastendruck einmal einen Vordefinierten text zu senden!
Schleife habsch nur aus jucks gesetzt da wenn ich bsp. anderen Shortcut drücke er obwohl aussage wahr ist trotzdem den Buchstaben drückt obwohl er ihn nicht drücken müsste! |
Re: Hilfe bei If then else
Wenn sich das so äußert, ist Deine Abfrage falsch. Trimme einmal beide Werte, wenn es dann immer noch nicht stimmt, weiß ich es auch nicht.
|
Re: Hilfe bei If then else
ahh danke nachdem ich beides getrimmt habe gings. Kannste mir nochmal sagen worans da lag? den in meinem String Text gabs doch eigentlich keene Leerzeichen oder sonstiges!
MFG |
Re: Hilfe bei If then else
Aber vielleicht im ausgelesenen ;)
|
Re: Hilfe bei If then else
den ausgelesenen habsch ja vorher auch schonmal getrimmt gehabt *fg*
Delphi-Quellcode:
so funzt das nu aber was bewirkt bitte sehr das #0 ???
if trim(GetWintext(handle4)) = trim(String('Private'#0)) then
[edit=mkinzler]Code-Tag durch Delphi-Tag ersetzt Mfg, mkinzler[/edit] |
Re: Hilfe bei If then else
#0 ist das Stringende-Zeichen bei nullterminierten Strings, deshalb heißen die auch so.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:01 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz