Angeblich Variable zweimal verwendet

Post a reply


In an effort to prevent automatic submissions, we require that you complete the following challenge.
Smilies
:D :) ;) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :!: :?: :idea: :| :mrgreen: :geek: :ugeek: :arrow: :angel: :clap: :crazy: :eh: :lolno: :problem: :shh: :shifty: :sick: :silent: :think: :thumbup: :thumbdown: :salute: :wave: :wtf: :yawn: :facepalm: :bravo: :dance: :beard: :morebeard: :xmas: :HeHe: :trollface: :cookie: :rainbow: :monkeysee: :monkeysay: :happybday: :headwall: :offtopic: :superhappy: :terms: :beer:
View more smilies

BBCode is ON
[img] is OFF
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Angeblich Variable zweimal verwendet

Re: Angeblich Variable zweimal verwendet

Post by Meister Lampe » 31 Aug 2018, 17:05

Hallo Heloo!

Vielen Dank, das war eine gute Empfehlung!
Es sollen sich ja bei jedem neuen Aufruf, abhängig von der beim letzten Mal vorgenommenen Einstellungen, die in denTextfeldern vorgegebenen Parameter ändern. Das geht nur, wenn die Gui jedesmal neu geladen wird.

Viele Grüße von Meister Lampe

Re: Angeblich Variable zweimal verwendet

Post by Heloo1982 » 31 Aug 2018, 07:57

Anstatt Gui, destroy hab ich gute Erfahrungen mit Gui, New gemacht.

Code: Select all

F2::
Gui,1: New,,
Gui,1: Show, w100 h100,
Gui,1: Add, Edit, cRed h20   w80 vBestand, %FilmSign%
Return
Damit wird die Gui jedesmal neu aufgebaut und Variablen werden auch neu vergeben, damit hab ich bei mit die Fehlermeldung "Error: The same Variable cannot be used for more than one control" komplett eliminiert.

Re: Angeblich Variable zweimal verwendet

Post by gregster » 31 Aug 2018, 01:03

nnnik wrote:Eigentlich würde ich niemandem Gui, Destroy ans Herz legen - außer man will das Programm beenden.
Das kommt ganz auf das Programm an. Sobald eine Gui sicher (oder sehr wahrscheinlich) nicht mehr gebraucht wird, macht es keinen Sinn, sie zu behalten. Bei einem eher sequentiell ablaufenden Programm ist mehr als ein Gui-Fenster nicht ungewöhnlich, ohne dass man zurückspringen würde.
Ich habe mir allerdings Meister Lampe's Aufgabenstellung nicht wirklich angesehen, und daher auch auf Hide verwiesen.

Das Beenden des Programms "destroyt" sowieso alle verbleibenden Guis automatisch. Gerade dann sähe ich keinen großen Zusatznutzen für dieses Subcommand.

Re: Angeblich Variable zweimal verwendet

Post by nnnik » 31 Aug 2018, 00:53

Eigentlich würde ich niemandem Gui, Destroy ans Herz legen - außer man will das Programm beenden.

Re: Angeblich Variable zweimal verwendet

Post by gregster » 30 Aug 2018, 17:45

GuiClose ist gar kein "Subcommand" von GUI. Stattdessen hat nnnik dir bereits Gui, Destroy ans Herz gelegt (https://autohotkey.com/docs/commands/Gui.htm#Destroy). Wie sieht's damit aus? Dann musst du die GUI allerdings bei Befarf neu erzeugen.
Um sie dagegen nur auszublenden - wie nach Gui, Submit, aber ohne Speichern der Variablen - verwendet man Gui, Hide.

Re: Angeblich Variable zweimal verwendet

Post by Meister Lampe » 30 Aug 2018, 15:46

Hallo nnik!

Vielen Dank, das hat geholfen. Ich habe dann gemerkt, daß ich den Code für die Gui ganz oben in das Script einfügen muß, damit sie gleich beim Starten erzeugt wird.
Jetzt habe ich aber ein noch ein anderes, eher das umgekehrte Problem: Wie schließe ich die wieder?
Ich habe zwie Buttons, einen zum weiteren Ausführen des Programms, einen zum Abbrechen (die MsgBoxes sind erstmal zum Ausprobieren des Ablaufs).

Code: Select all

SIGNIEREN:
Gui,1: Submit  ; Speichert die Benutzereingaben in die entsprechenden Steuerelementvariablen.
MsgBox Gleich geht es weiter...!
return
Das läuft gut, die Gui schließt sich und die in ihr eingegebenen Parameter werden abgespeichert.

Code: Select all

ABBRECHEN:
Gui,1: GuiClose
MsgBox Jetzt wird Schluß gemacht!
return
Hiermit bekomme ich das Ding aber nicht zu, sondern nur eine Fehlermeldung. Wenn ich in diesem zusammenhang ExitApp verwende, schließt es mir gleich das ganze Script, was ich ja auch nicht will.
Wie also beende/schließe ich die Gui und den Programmablauf ohne Variablenabspeicherung? Genauer: Der eigentliche Programmablauf fängt ja hier erst an, da er ja durch den anderen Button aufgerufen werden soll.

Viele Grüße von Meister Lampe

Re: Angeblich Variable zweimal verwendet

Post by nnnik » 22 Aug 2018, 17:34

Wenn du GUI, Add aufrufst fügst du eine neue Komponente hinzu.
Wenn du deinen Code der deine GUI erzeugt zweimal aufrufst fügst du auch 2 unterschiedliche Button mit dem selben namen hinzu.
Das würde zu deinem Fehler führen.

Die Lösung ->
Die GUI beim schließen per GUI, Destroy "kaputt machen"
Den Code der deine GUI erzeugt nur einmal aufrufen und danach nur noch per GUI, Show anzeigen lassen.

Angeblich Variable zweimal verwendet

Post by Meister Lampe » 22 Aug 2018, 16:41

Hallo Zusammen!

Ich bin gerade dabei, eine Gui zu erstellen. Eigentlich sieht die schon ganz gut aus. Aber jedesmal, wenn ich sie nach einem Reloaded zum zweiten Mal öffne (die Gui ist noch unabhängig von der Anwendung dahinter), bekomme ich die Fehlermeldung "Error: The same Variable cannot be used for more than one control" mit genauer Zeilenangabe. Dort steht aber nur folgendes:

Code: Select all

Gui,1: Add, Edit, cRed    x20    y90     h20   w80      vBestand, %FilmSign%
Die Variable "Bestand" wird nirgenswo anders unerlaubt verwendet. Und ich habe schon einmal probiert, sie umzubenennen, indem ich Bestand_1 daraus gemacht habe, aber das gab genau dieselbe Fehlermeldung mit dem Verweis auf dieselbe Zeile.

Ich habe keine Ahnung, woran das liegen könnte.

Viele Grüße von Meister Lampe

Top