Deutsches AutoHotkey Homepage AutoHotkey Community
Wir helfen uns gegenseitig aus der Patsche
 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

[Threadsplit] Doppelklick
Gehe zu Seite 1, 2, 3  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    AutoHotkey Community Foren-Übersicht -> Smalltalk
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
msgbox



Anmeldedatum: 05.05.2007
Beiträge: 727
Wohnort: C:\

BeitragVerfasst am: Sa Aug 18, 2007 11:49 pm    Titel: [Threadsplit] Doppelklick Antworten mit Zitat

Da ich mich an die klaren regeln und kategorie halten hab ich hier im diesen thread: http://de.autohotkey.com/forum/viewtopic.php?t=1787 es hier hin geleitet.

AGU hat Folgendes geschrieben:
Die Schleife ist absolut sinnlos. Wie Gapa schon gezeigt hat, ist MouseClick der richtige Befehl.
Arrow MouseClick

Per Parameter ClickCount kann man die Anzahl der Klicks genau festlegen.

Wozu also der überflüssige Loop?

Ich entnehme: Die Schleife ist absolut sinnlos. Wie Gapa schon gezeigt hat, ist MouseClick der richtige Befehl.
Die schleife ist sinnlos.

Das kann nicht sein: Der Loop wiederholt das was vorgegeben ist, egal was. Es ist eine feste regel ohne ausnahmen. Wenn ich in einer schleife oder einen Loop(schleife und loop ist das selbe nur anderes wort) einen mausklick habe und es wird zwei mal ausgeführt führt es auch zwei mal aus.
Code:
Loop, 2 ; führt das zwischen den {} zwei mal aus
{
  MouseClick, left,  52,  95 ; die sache die ausgeführt wird
}


Man kann auch alternativ es so ausführen:
Code:
MouseClick, left, 52, 95, 2

Das bedeutet es wird auf die koordinaten 52x95 geklickt und dies zwei mal weil, am ende eine zwei steht. Es macht keinen unterschied(bis auf die schreibweise) gegenüber zum loop. Das resultat ist genau das selbe.

Daraufhin hab ich AGU(AGermanUser) klargemacht das es keinen unterschied ist und das der fehler von meiner sicht aus auf seiner seite liegt.


AGU hat Folgendes geschrieben:
Gut, das hätte ich wohl anders formulieren müssen. Wenn du den kastrierten MouseClick Befehl ohne ClickCount verwendest, brauchst du selbstverständlich deinen Loop.

Wenn du allerdings ClickCount verwendest, ginge das, wie Gapa schon gezeigt hat, in einer einzigen Codezeile.

Deine ausdrucksweise ist schon sehr komsich das du MouseClick als kastriert bezeichnest. Mouse = Maus(tier) oder eingabegerät(hardware) via computer. Die einen schneiden das kabel ab, die anderen die.... Rolling Eyes
Mit und ohne ClickCount... das hättest du am besten im vorherigen post beschreiben müssen, aber trozdem ist es nicht ganz logisch zu meiner oben aussage. Das macht irgendwie keinen so richitgen sinn!!

Ich finde der fehler liegt auf deiner seite!


Ich hab diesen thread hier weitergeführt damit kein gespamme und nicht von thema abgelankt wird! Dazu will ich mich an die klaren regeln, strukturen, katigorien, themenbereiche halten!


msgbox Razz
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
AGU
Gast





BeitragVerfasst am: So Aug 19, 2007 12:47 am    Titel: Antworten mit Zitat

Zuerst mal vielen Dank, das du das Thema hier im Smalltalkforum weiterführst. Sogar an das [Threadsplit] hast du gedacht. Very Happy

Zitat:
Das kann nicht sein: Der Loop wiederholt das was vorgegeben ist, egal was.
Ich will hier gern einräumen, das es falsch war von "sinnlos" zu reden. Überflüssig wäre wohl besser gewesen.

Zitat:
Es macht keinen unterschied(bis auf die schreibweise) gegenüber zum loop. Das resultat ist genau das selbe.
Einen Unterschied gibt es schon. Der eine Code hat vier Zeilen, der andere nur eine. Wink

Ziel sollte doch eigentlich immer der performanteste Code sein, oder nicht? Ansonsten könnten wir statt

Code:
Var = msgbox
ja auch
Code:
Loop, 6
  {
    If A_Index = 1
      Var = m
    If A_Index = 2
      Var = %Var%s
    If A_Index = 3
      Var = %Var%g
    If A_Index = 4
      Var = %Var%b
    If A_Index = 5
      Var = %Var%o
    If A_Index = 6
      Var = %Var%x
  }
schreiben. Das Ergebnis ist in beiden Fällen das gleiche. Verstehst du was ich meine?

In deinem speziellen Code ist der Loop zwar nicht sinnlos, aber überflüssig. Überflüssig, weil der MouseClick Befehl die Funktionalität bereits mitbringt.

Deswegen sprach ich auch vom kastrierten MouseClick Befehl. Du kastrierst den Befehl um ClickCount, und rüstest dieses Merkmal anschließend per Loop wieder nach. Das ist in meinen Augen Flickwerk.

Natürlich ist der Loop in deinem Beispiel nicht sinnlos. Der muss sogar dastehen, weil du ja auf ClickCount verzichtest. Wenn das mißverständlich rausgekommen ist, will ich mich gern dafür entschuldigen.

Hast du nach Gapa's Einzeiler übrigens mal die Doku zum MouseClick Befehl angeschaut? Davon bin ich bei meiner Antwort nämlich ausgegangen. Ich mache sowas immer, wenn ich den Befehl nicht oft verwende.
Dann wäre dir nämlich schon vor deinem Posting aufgefallen, das der Loop gar nicht notwendig ist.

Ich hoffe damit ist das ausgeräumt. Smile

P.S. Ein Moderationsjob macht übrigens noch nicht allwissend und unfehlbar. Du solltest mir ruhig auch hin und wieder einen Fehler zugestehen. Wink
Sei also nicht überrascht, wenn ich hin und wieder einen fabriziere.
__________________________
Gruß AGU
Nach oben
msgbox



Anmeldedatum: 05.05.2007
Beiträge: 727
Wohnort: C:\

BeitragVerfasst am: So Aug 19, 2007 2:18 pm    Titel: Antworten mit Zitat

Wie du schon beschrieben hast macht es keinen unterschied zwischen:
Code:
Loop, 3 ; darf auch mehr sein
{
  if A_Index = 1
    Var = A
  if A_Index = 2
    Var = %Var%G
  if A_Index = 3
    Var = %Var%U
}
msgbox, %Var%

und
Code:
Var = AGU
msgbox, %Var%

Aber der sinn und zweck ist der selbe! Ich kann einen mausklick so schreiben:
Code:
MouseClick, left,  52,  95, 2

oder auch so
Code:
Loop, 2
{
  MouseClick, left,  52,  95, 1
}

oder auch so
Code:
Loop, 3
{
  MouseClick, left,  52,  95, 4
}

Bis auf die schreibweise macht es keinen unterschied



Schaut euch doch mal den ersten post von the_boxer an:
the_boxer hat Folgendes geschrieben:
Hallo,
wie programmiere ich einen Doppelklick?
Habe schon viele Sachen ausprobiert, aber
nichts hat funktioniert. z.B.:
Code:
Loop, 2
   {
   Send, {LButton}
   }

klappt nicht!

Wieß jemand wie es geht?

Gruß,

the_boxer

Er hats auch mit Loop gemacht, aber mit einen kleiner fehler...

Daraufhin hat Gapa es so gelöst:
Zitat:
Code:
MouseClick, left,  52,  95, 2

Anschließend habe ich es korrigiert:
Zitat:
Code:
Loop, 2
{
  MouseClick, left,  52,  95 ; man KANN ", 1" hinschreiben
}


Ich habe genau die fragen von the_boxer gelöst wo er auch ein loop verwendet hat. Nur seine fehler hab ich überarbeitet. Gapa hat eine alternative gemacht.
Daraufhin hat AGU....

Wo liegt der fehler GENAU bei mir? Ich hab genau das gemacht was the_boxer falsch gemacht hat. Mehr nicht!


Das von AGU mit den Var finde ich umnötig(aber auch ein gutes beispiel) da es nicht so "richitg" war...

Jetzt will ichs genau wissen!


msgbox
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
AGU
Gast





BeitragVerfasst am: So Aug 19, 2007 2:43 pm    Titel: Antworten mit Zitat

Ich will dir das gerne mal aus meiner Sicht schildern.

the_boxer hat einen Loop genommen, weil er es wahrscheinlich nicht besser wusste. Ich gehe mal davon aus, das er noch AHK Anfänger ist.

Daraufhin beschreibt Gapa, wie es mit einer Zeile geht. Damit war the_boxer doch gut geholfen. An seiner Stelle hätte ich dann einen Blick in die Doku zu MouseClick geworfen und er hätte gesehen, das der Befehl genau das ist, was er gesucht hat.

Hier bin ich dann irrtümlich davon ausgegangen, du hättest ebenfalls die Doku zum MouseClick Befehl gelesen, und würdest erkennen, das es die beste Lösung ist.
Stattdessen ziehst du es vor, the_boxers (ich will nicht sagen falschen) nicht optimalen Code einfach zu verbessern, anstatt ihm gleich die beste Lösung zu liefern.

Zitat:
Bis auf die schreibweise macht es keinen unterschied
Doch, in der Performance. Vermute ich zumindest. In deinem Code müssen zwei Befehle abgearbeitet werden. In Gapas Fall nur einer.

Das mag in dem Fall vielleicht nicht viel ausmachen, aber wie wäre es bei 100 Klicks? In deinem Code müsste erst der Loop ausgeführt werden (Schleifenvariable inkrementiert, ...), dann wird der MouseClick Befehl ausgeführt, dann wieder Loop, ...
Bei Gapa wird stets nur der MouseClick Befehl ausgeführt.

Bei langen Schleifen gehe ich schon davon aus, das es da einen Performanceunterschied gibt.

Es geht darum, nicht nur den bestehenden Code zu verbessern, sondern darüber hinaus gleich die beste Lösung zu posten. Ansonsten verwendet the_boxer in Zukunft stets einen Loop, um einen Doppelklick zu machen anstatt von Anfang an gleich direkt den MouseClick Befehl zu verwenden.

Zitat:
Wo liegt der fehler GENAU bei mir?
Hören wir doch einfach auf, hier von Fehler zu reden. Sagen wir einfach so. Deine Lösung ist nicht falsch, liefert aber nur 80%. Du verbesserst the_boxers Code sozusagen von schlecht auf mittelmäßig. Er funktioniert, es ginge aber besser. Wink
_______________________
Gruß AGU
Nach oben
msgbox



Anmeldedatum: 05.05.2007
Beiträge: 727
Wohnort: C:\

BeitragVerfasst am: So Aug 19, 2007 2:57 pm    Titel: Antworten mit Zitat

Ich will einfach nicht verstehen wieso du deinen fehler nicht einsiehst! Ich erkläre es dir schon zum zweiten mal, aber ich hab das gefühl das du es nicht verstehst oder nicht verstanden hast.

Ich hab the_boxers script nur verbessert, Gapa hat eine alternative gezeigt, du hast es....


Mit der performance hägt es doch nicht ab?! Wie wäre es mit #NoEnv oder SetBatchLines -1 oder ähnliches. Soll ich dir noch berechnungen aufstellen und dir die millisekunden, Grafiken, Sinuskurven, Hz ... aufstellen?

Ich finde ich hab aus meiner sicht keinen fehler gemacht. Wenn du es von meiner sicht siehst wird du es auch merken. Du hast mit deinen post nur für verwirrung gesorgt und anschließend nicht zugegeben das du den fehler gemacht hast.


Zu Gapas script habe finde ich eine gute alternative, aber trozdem nicht wie the_boxer es haben wollte(warscheinlich). the_boxer hat es mit einen Loop gemacht. Ich hab es anschliesend auch mit einen loop weitergeführt und die fehler korrigiert.
Und du AGU redest von Performance und Var´s....



Rolling Eyes
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
AGU
Gast





BeitragVerfasst am: So Aug 19, 2007 3:00 pm    Titel: Antworten mit Zitat

Du hast Recht und ich meine Ruh. Rolling Eyes
_____________________
Gruß AGU
Nach oben
BoBo¨
Gast





BeitragVerfasst am: So Aug 19, 2007 3:38 pm    Titel: Antworten mit Zitat

Hi hi Laughing
Nach oben
msgbox



Anmeldedatum: 05.05.2007
Beiträge: 727
Wohnort: C:\

BeitragVerfasst am: So Aug 19, 2007 3:59 pm    Titel: Antworten mit Zitat

AGU hat Folgendes geschrieben:
Du hast Recht und ich meine Ruh. Rolling Eyes

Razz Endlich

@BoBo: Was zu kommentieren oder wieder mal langeweile ?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
AGU
Gast





BeitragVerfasst am: So Aug 19, 2007 5:15 pm    Titel: Antworten mit Zitat

Auch wenn es Perlen vor die Säue geworfen ist, habe ich mal einen Performancevergleich der beiden Skripte gemacht. Hier das Performancetestkskript:

Code:
StartTime := A_TickCount

; Hier steht der zu testende Code

EndTime := A_TickCount
ElapsedSeconds := (EndTime - StartTime)/1000.0
Msgbox, Skript benötigte %ElapsedSeconds% Sekunden


Wenn ich dein Skript teste
Code:
StartTime := A_TickCount

Loop, 2 ; führt das zwischen den {} zwei mal aus
{
  MouseClick, left,  500,  500 ; die sache die ausgeführt wird
}

EndTime := A_TickCount
ElapsedSeconds := (EndTime - StartTime)/1000.0
Msgbox, Skript benötigte %ElapsedSeconds% Sekunden
komme ich bei meinem System auf Werte von 0.16 - 0.18 Sekunden.

Mit Gapas Code
Code:
StartTime := A_TickCount

MouseClick, left, 500, 500, 2

EndTime := A_TickCount
ElapsedSeconds := (EndTime - StartTime)/1000.0
Msgbox, Skript benötigte %ElapsedSeconds% Sekunden
komme ich auf Zeiten von 0.14 - 0.16 Sekunden.

Zusammenfassung:
Zitat:
msgbox: 0.16 - 0.18 Sekunden
Gapa: 0.14 - 0.16 Sekunden.


Selbst bei nur zwei Schleifendurchläufen ergibt das auf meinem System schon einen Performanceunterschied. Würde wir theoretisch von einer längeren Schleife ausgehen (z.B. 100 Klicks) sähe das Ergebnis folgendermaßen aus:

Zitat:
msgbox: 3.08 - 3.21 Sekunden
Gapa: 2.01 - 2.11 Sekunden

Hast du jetzt begriffen, was ich mit Performanceunterschied meine? Da nützt dir dein SetBatchLines und #NoEnv nichts.
______________________
Gruß AGU
Nach oben
BoBo¨
Gast





BeitragVerfasst am: So Aug 19, 2007 5:28 pm    Titel: Antworten mit Zitat

Zitat:
@BoBo: Was zu kommentieren oder wieder mal langeweile ?
Deine Beratungsresistenz scheint doch ausreichend resitent zu sein - damit stehen uns sicher noch viele unterhaltsame (philosophische) Stunden bevor ... Laughing
Nach oben
msgbox



Anmeldedatum: 05.05.2007
Beiträge: 727
Wohnort: C:\

BeitragVerfasst am: So Aug 19, 2007 5:30 pm    Titel: Antworten mit Zitat

AGU hat Folgendes geschrieben:
Da nützt dir dein SetBatchLines und #NoEnv nichts.

SetBatchLines bestimmt die gewindigkeit wie schnell es laufen soll. Es hägt mit der bewegung zusammen! Das bedeutet die maus bewegt sich auf die vorgegeben koordinaten. Um es zu beschleinigen kann man hier das verwenden:

Code:
SetMouseDelay, 0
#Noenv

StartTime := A_TickCount

Loop, 2 ; führt das zwischen den {} zwei mal aus
{
  MouseClick, left,  500,  500 ; die sache die ausgeführt wird
}

EndTime := A_TickCount
ElapsedSeconds := (EndTime - StartTime)/1000.0
Msgbox, Skript benötigte %ElapsedSeconds% Sekunden

Aber du lässt wirklich nicht locker Laughing


Edit:
@BoBo: Kannst du das mal auf normalen niveau sagen?


Zuletzt bearbeitet von msgbox am So Aug 19, 2007 5:32 pm, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
BoBo¨
Gast





BeitragVerfasst am: So Aug 19, 2007 5:31 pm    Titel: Antworten mit Zitat

Nachreichung: resistent Cool
Nach oben
AGU
Gast





BeitragVerfasst am: So Aug 19, 2007 5:37 pm    Titel: Antworten mit Zitat

Selbst bei dieser Optimierung hat dein Code eine schlechtere Performance als Gapas Code.

msgbox: 0.05 - 0.07 Sekunden
Gapa: 0.04 - 0.05 Sekunden.

Der Performanceverlust steckt schon im Design des Codes. Egal mit was du die Skriptabarbeitung beschleunigst, bei dir müssen zwei Befehle abgearbeitet werden.
______________________
Gruß AGU
Nach oben
msgbox



Anmeldedatum: 05.05.2007
Beiträge: 727
Wohnort: C:\

BeitragVerfasst am: So Aug 19, 2007 5:49 pm    Titel: Antworten mit Zitat

AGU hat Folgendes geschrieben:
msgbox: 0.05 - 0.07 Sekunden
Gapa: 0.04 - 0.05 Sekunden.

Da irrst du dich! Bei mir kommt immer 0.00... raus! Ich weis nicht wie alt dein pc ist, aber dem ist nicht so
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
BoBo¨
Gast





BeitragVerfasst am: So Aug 19, 2007 6:06 pm    Titel: Antworten mit Zitat

Zitat:
@BoBo: Kannst du das mal auf normalen niveau sagen?
"Da sich deine Bereitschaft einen Rat anzunehmen offenbar in Grenzen hält, stehen uns sicher noch viele unterhaltsame (philosophische) Stunden bevor ...". Gut so?
Zitat:
Bei mir kommt immer 0.00... raus! Ich weis nicht wie alt dein pc ist, aber dem ist nicht so.
Tja, AGU. Jetzt wird dein guter Rat auch noch teuer.
PS. bei dem am Flughafen stand auch sowas wie 00 drauf, ich weiss nicht wie alt dein Klo ist, aber dem ist so!! Very Happy
Nach oben
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    AutoHotkey Community Foren-Übersicht -> Smalltalk Alle Zeiten sind GMT
Gehe zu Seite 1, 2, 3  Weiter
Seite 1 von 3

 
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de