Jump to content

Sky Slate Blueberry Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate
Photo

Nach GoSub auf etwas warten


  • Please log in to reply
6 replies to this topic
fump2000
  • Members
  • 591 posts
  • Last active: Nov 11 2015 07:52 AM
  • Joined: 01 Nov 2012
Hallo Leute,

ich verwende gerne GoSub anstatt Funktionen zu bauen. Nun habe ich hier einen Updater geschrieben. Dieser beinhaltet einen Editor der angereichert mit vorher eingelesenen Dateien die manuelle Bearbeitung erlaubt.

Diesen springe ich mit GoSub an. Nun möchte ich aber das nach dem GoSub das Script auf die Bearbeitung des Editors wartet... Der Editor beinhaltet einen Speicherbutton der wiederum eine Funktion zum Speichern der Dateien aufruft.

Wie kann man sowas realisieren?

MfG
fump

//EDIT:

Spontan würde mir hier ein Loop einfallen der solange läuft bis eine Variable eine entsprechenden Wert hat. Ist das ne gute Idee? :)

Alibaba
  • Members
  • 435 posts
  • Last active: Nov 19 2014 04:21 PM
  • Joined: 01 Nov 2012
Also Gosub ist generell, eben weil es Funktionen gibt, eigentlich nicht zu empfehlen. Na gut, vielleicht bei einem winzigen Script, welches nur ein einziges Mal in eine bestimmte Subroutine springt, aber ansonsten, naja...

Zu deinem Problem: Wenn ich dich richtig verstanden habe, müsste da eigentlich WinWait der passende Befehl sein... Oder meinst du, dass du darauf warten willst, dass der Speicher-Button gedrückt wird?
Loops sind in solchen Sachverhälten nämlich auch nicht so toll. Posted Image

EDIT:
Ich möchte nochmal klarstellen, das Labels an sich ja nicht so schlimm sind, z.B. weil man die für g-Labels benötigt und diese manchmal unverzichtbar sind... Nur das GoSub, also der Befehl, der wild im Script umherspringt, der ist manchmal ein Bösewicht...Posted Image

Find the recent autohotkey version here: ahkscript.org


fump2000
  • Members
  • 591 posts
  • Last active: Nov 11 2015 07:52 AM
  • Joined: 01 Nov 2012
Nun der GoSub springt zum Editor. Ruft also die GUI auf. Die Gui hat nen Button der die Speicher funktion aufruft. An dessen erfolgreichem Ende wird die GUI vom Editor per Destroy geschlossen.

WinWaitClose hat mein Problem gelöst.

Die Sache mit GoSub oder Funktion find ich etwas komisch... Denn der eine sagt mir besser ist GoSub und du nun eher Funktionen. Das verwenden von GoSub ist einfacher. Wenn man die Sprünge klar trennt und entsprechend ordentlich damit umgeht sollte es doch kein Problem geben oder?

Alibaba
  • Members
  • 435 posts
  • Last active: Nov 19 2014 04:21 PM
  • Joined: 01 Nov 2012
Entschuldigung, aber ich habe Gosub gerade mit Goto verwechselt. Posted Image

Zu Goto sagt die Doku nämlich: "Es wird davon abgeraten, Goto zu verwenden, weil Scripts damit weniger lesbar und schwerer zu pflegen sind. Als Ersatz sollten Else, Blocks, Break und Continue in Betracht gezogen werden."

GoSub scheint also ganz in ordnung zu sein, im Grunde genommen verhält es sich ja auch wie eine globale Funktion ohne Parameter und Rückgabewert. Das "Return" am Ende macht den Unterschied.

Allerdings gilt auch für GoSub laut Doku: "Obwohl Gosub für einfache Subroutinen nützlich ist, sollten Funktionen für komplexere Anliegen in Betracht gezogen werden."

Find the recent autohotkey version here: ahkscript.org


fump2000
  • Members
  • 591 posts
  • Last active: Nov 11 2015 07:52 AM
  • Joined: 01 Nov 2012
Ja ich nutze den GoSub zum aufrufen des Editors. Ich find eine GUI in einer Funktion nicht so toll...

Danke für deine Hilfe, an WinWait hätte ich vermutlich nie gedacht :)

MfG
fump

ruespe
  • Members
  • 567 posts
  • Last active: Dec 01 2014 07:59 PM
  • Joined: 17 Jun 2008

Ja ich nutze den GoSub zum aufrufen des Editors. Ich find eine GUI in einer Funktion nicht so toll...

Du weißt aber, dass man einem Button ein g-Label mitgeben kann? Dadurch wird - genau wie beim Gosub - ein Label angesprungen. Ein WinWait wäre damit vermutlich überflüssig.

fump2000
  • Members
  • 591 posts
  • Last active: Nov 11 2015 07:52 AM
  • Joined: 01 Nov 2012
Ja sicher, dass weiß ich. Wird ja auch so gemacht um im Editor das Speichern auszulösen.

So wie ich es gemacht habe sind die Sprünge schön getrennt, Funktionen entsprechen definiert.

Passt soweit :) Das WinWait hat das Problem 100% gelöst.