Ich komme mit dem Goto, Befehl nicht mehr ins Hauptmenu... Topic is solved

Stelle Fragen zur Programmierung mit Autohotkey

Moderator: jNizM

GamerG1rl
Posts: 48
Joined: 23 Nov 2017, 04:44

Ich komme mit dem Goto, Befehl nicht mehr ins Hauptmenu...

23 Nov 2018, 07:12

Hey,

mein Problem äußert sich wie folgt: Ich habe ein Haupt-Script und habe darin die Menu_EMail.ahk includiert.
Leider komme ich nur VOR dem Gui zurück in die Main und kann das Hauptmenu anzeigen...
Sobald ich das ganze NACH dem Gui anzeigen lassen will (mit Goto, Hauptmenu) funktioniert es nicht und das Script verabschiedet sich (bzw. hängt beim Befehl Goto, Hauptmenu fest und zählt nur noch die Sekunden hoch...)
Ich versuche das ganze hier mal darzustellen:

MAIN:

Code: Select all

Hauptmenu:
Gui, 5:Destroy
Gui, 1:Destroy
Gui, 2:Submit
; #####################################################
; Gui, 3 (Hauptmenu
; #####################################################
{

Gui, 3:Destroy
Gui, 4:Destroy
Gui, 2:Submit

Gui, 3: Add, Picture, x210 y320 w15 h15 +Buttons gEinstellungen, %A_ScriptDir%\Symbol_Einstellungen.png

Gui, 3:Add, Button, x120 y39 w80 h40 gE-Mail_extern, E-Mail`n(extern)
Gui, 3:Add, Button, x22 y39 w80 h40 gE-Mail_intern, E-Mail`n(intern)
Gui, 3:Add, Button, x22 y99 w180 h40 gDoc_Gen, Dokumenten-`nGenerator
Gui, 3:Add, Button, x22 y159 w180 h40 vButton_Lagerbestand gLagerbestand, Lagerbestand
Gui, 3:Add, Button, x22 y219 w180 h40 vButton_leer1,
Gui, 3:Add, Button, x22 y279 w180 h40 vButton_leer2,

Gui, 3:Font, s8 Bold, Verdana
Gui, 3:Add, Text, x10 y9 h20 +Center, Willkommen %Benutzer%

; ### Menu ###
{
Menu, FileMenu, Add, Position speichern, ini3, MenuHandler
Menu, FileMenu, Add, Exit, 3GuiClose, MenuHandler

Menu, MyMenuBar, Add, &Datei, :FileMenu
Gui, 3:Menu, MyMenuBar
}

GuiControl, 3: Disable, Button_leer1
GuiControl, 3: Disable, Button_leer2

if !(b_status = "Admin")
GuiControl, 3: Disable, Button_Lagerbestand

Gui, 3:Show, %x3% %y3% h340 w230, Hauptmenu
Return

MenuHandler:
return

3GuiClose:
ExitApp
return
}
und weiter unten

Code: Select all

E-Mail_extern: ;E-Mails an Kunden versenden
{
Gui, 3:Destroy
#Include, %A_ScriptDir%\Texte\Menu_Email.ahk
return
}
und die Menu_Email.ahk sieht ungefähr so aus:

Code: Select all

Wiederholen:
Gui, 1:Destroy
Gui, 3:Destroy
Gui, 1:+AlwaysOnTop

Gui, 1:Add, DDL, x12 y29 w140 vAnrede, Herr|Frau|Sgh Damen und Herren
Gui, 1:Add, Edit, x12 y79 w140 h20 vNachname, 
Gui, 1:Add, Edit, x12 y129 w140 h20 vemail, 
Gui, 1:Add, Edit, x182 y29 w80 h20 Number vkdnnummer, 
Gui, 1:Add, Edit, x182 y79 w80 h20 Number vABNummer, 
Gui, 1:Add, CheckBox, x182 y129 w80 h20 vtelefoniert, Telefoniert ?

Gui, 1:Add, Text, x182 y59 w80 h20 +BackgroundTrans, AB Nummer
Gui, 1:Add, Text, x182 y9 w80 h20 +BackgroundTrans, Kundennummer
Gui, 1:Add, Text, x12 y9 w100 h20 +BackgroundTrans, Anrede
Gui, 1:Add, Text, x12 y59 w90 h20 +BackgroundTrans, Nachname
Gui, 1:Add, Text, x12 y109 w90 h30 +BackgroundTrans, E-Mail Adresse
Gui, 1:Add, Text, x12 y159 w80 h30 +BackgroundTrans, Thema

Gui, 1:Add, DropDownList, x12 y180 w140 vThema, AB|Bild AB |

Gui, 1:Add, Button, x12 y299 w100 h30 gDateiWaehlenInterface, Datei wählen
Gui, 1:Add, Button, x172 y299 w100 h30 gHauptmenu, Abbrechen

; ### Menu ###
	{
	Menu, FileMenu, Add, Position speichern, ini1, MenuHandler
	Menu, FileMenu, Add, Exit, 1GuiClose, MenuHandler

	Menu, MyMenuBar, Add, &Datei, :FileMenu
	Gui, 1:Menu, MyMenuBar
	}
	
Gui, 1:Show, %x1% %y1% h347 w291, E-Mail Generator
Return

1GuiClose:
Gui, 1:Destroy
Goto, Hauptmenu
return

DateiWaehlenInterface:

Gui, 1: Submit

#Include, %A_ScriptDir%\Systeme\PDF_Check.ahk

if (PDF = "1")
{
	send !e
usw. usw... der Code ist noch etliche Zeilen lang. aber bereits ab dem Punkt "Gui, 1: Submit" klappt ein Goto bereits bei mir nicht mehr..

Hat jemand eine Idee, woran das liegen könnte ? Eventuell an der Anzahl der Zeilen ?
just me
Posts: 9457
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Ich komme mit dem Goto, Befehl nicht mehr ins Hauptmenu...

24 Nov 2018, 05:10

Moin,

der Befehl Goto gehört für mich zu den Befehlen, die man tunlichst nicht verwenden sollte, wenn man nicht einfach unter bestimmten Bedingungen ein paar Anweisungen überspringen will.

Zum Skript:
  • Deine Gui, 3: wird mit 'statischen' Inhalten befüllt. Ich sehe deshalb keinen Grund dafür, sie wiederholt mit Destroy zu zerstören und anschließend wieder neu aufzubauen. Einmal am Skriptanfang erstellt, reicht ein schlichtes
    Gui, 3:Show, %x3% %y3% h340 w230, Hauptmenu, um das Fenster anzuzeigen. Verbergen kann man das Fenster mit Gui, 3:Hide.
  • Deine Gui, 1: hat zwar variable Inhalte, man muss sie aber auch nicht ständig zerstören und wiedererstellen. Hier reicht es, wenn Du vor dem Gui, 1:Show die Eingabefelder mit GuiControl auf die von Dir gewünschten Werte setzt.
  • Hauptmenu:
    Hier werden außer der Gui, 3: auch noch die Guis 1, 4 und 5 zerstört. Es mag sein, dass das Zerstören der Guis ebenfalls unnötig ist. Für die Gui, 2: gibt es 2 Submit Anweisungen.
  • Menu, FileMenu, Add, Position speichern, ini3, MenuHandler
    Diese Syntax ist recht merkwürdig. MenuHandler ist keine gültige Option.
  • Code: Select all

    {
    ...
    }
    Blockklammern sollte man nur verwenden, wenn AHK sie fordert. Sonst können Probleme entstehen, wenn der Interpreter geändert wird.
Ansonsten kannst Du versuchen, Goto durch Gosub zu ersetzen, oder das Label Hauptmenu: als Timer aufzurufen:

Code: Select all

SetTimer, Hauptmenu, -10
Warum Dein Skript hängen bleibt, kann ich aus dem hier vorhandenen Code nicht erkennen.
GamerG1rl
Posts: 48
Joined: 23 Nov 2017, 04:44

Re: Ich komme mit dem Goto, Befehl nicht mehr ins Hauptmenu...  Topic is solved

26 Nov 2018, 08:09

komischerweise funktioniert das jetzt.. merkwürdig...
naja egal
just me
Posts: 9457
Joined: 02 Oct 2013, 08:51
Location: Germany

Re: Ich komme mit dem Goto, Befehl nicht mehr ins Hauptmenu...

26 Nov 2018, 11:47

GamerG1rl wrote:naja egal
Eigentlich eher nicht. Du solltest es selbst dann nicht so machen, wenn es funktioniert.
User avatar
nnnik
Posts: 4500
Joined: 30 Sep 2013, 01:01
Location: Germany

Re: Ich komme mit dem Goto, Befehl nicht mehr ins Hauptmenu...

26 Nov 2018, 12:21

Sowas passiert öfters - manchmal liegt es an etwas was gar nichts mit dem eigentlich nicht funktionierenden Bestandteil zu tun hat. Meistens findet man aber irgendwann im Nachhinein heraus woran es liegt.
Code der ein starkes Problem in diese Richtung hat und stark miteinander verknüpft ist nennt man Spaghetti Code. Goto hat die Tendenz Spaghtti Code zu erzeugen.
Dies hat wiederum mehr die Tendenz Spaghetti code zu erzeugen als Funktionen und Klassen.

Wenn du neu am codieren bist ist das kein Problem.
Wenn du allerdings schon ein bisschen Erfahrung hast und jetzt größere Projekte in Angriff nehmen willst lohnt es sich über GoSub/Funktionen deinen Code in abgekapselte Bestandteile zu Unterteilen die du getrennt voneinander testen kannst.
Recommends AHK Studio
GamerG1rl
Posts: 48
Joined: 23 Nov 2017, 04:44

Re: Ich komme mit dem Goto, Befehl nicht mehr ins Hauptmenu...

27 Nov 2018, 10:40

Also ich bin zwar schon was länger dabei, bin aber immer bei den Basics geblieben :D (habe meist auch nicht wirklich mehr gebraucht um meine Projekte zu verwirklichen)

Ich arbeite zwar nicht all zu viel mit Goto, weiß aber immer, wo ich mit einem Goto rauskomme.
Woran es jetzt schlussendlich gelegen hat kann ich nicht genau sagen. aber: Es läuft jetzt ;)

Return to “Ich brauche Hilfe”

Who is online

Users browsing this forum: No registered users and 50 guests