Hallo,
so heute ist der Tag, wo ich den Überblick verloren habe
Bisher hatte ich immer ein Script gemacht, wo ich unten die Funktionen hinterlegt habe. Bei knapp 1000 Zeilen wird das jedoch etwas unübersichtlich. Da ich diverse Funktionen immer wieder verwende, wollte ich mal anfangen, eine "MyUDF.au3" zu erstelllen, dort die Funktionen auszulagern und diese dann als include zu integrieren.
Von daher habe ich ein paar Fragen.
1. Muss ich bei einer privaten UDF auch mit dem ganzen Header Gedöns arbeiten, oder reicht da auch nur die eigentliche Funktion, sprich wird eine UDF ohne Header im Hauptscript erkannt ?
2. Es passt was nicht mit meinen Rückgabewerten. Am besten mal als Beispiel
So geht es:
So war die Funktion ursprünglich im Hauptscript
Func _CheckDPI()
$DPI = RegRead("HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics", "AppliedDPI")
If $DPI = 96 Then
$DPI = 1
Else
$DPI = 96 / $DPI
EndIf
ConsoleWrite("DPI in der Funktion _CheckDPI ist: " & $DPI & @CRLF)
EndFunc ;==>_DPI
Die Variable $DPI wurde mit DIM $DPI deklariert
Der Aufruf erfolgt dann so:
alter Hauptaufruf
Func MeineGUI()
_CheckDPI()
$MainGUI = GUICreate("MeineGUI - Version " & $Version, $GUIWidth, $GUIHeight, Default, Default); Starte HauptGUI
ConsoleWrite("DPI außerhalb der Funktion _CheckDPI ist: " & $DPI & @CRLF)
GUISetFont(8.5 * $DPI, 400, -1, ""); Schriftgröße
;..... noch ein wenig Code
EndFunc
Die Ausgabe in der Console zeigt folgendes:
Die GUI baut sich mit normaler Schriftgröße auf.
So geht es nicht:
Die Funktion liegt jetzt in der MyUDF.au3
#region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_AU3Check_Stop_OnWarning=y
#AutoIt3Wrapper_AU3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
#AutoIt3Wrapper_Run_Tidy=y
#endregion ;**** Directives created by AutoIt3Wrapper_GUI ****
Func _CheckDPI()
Local $iDPI = RegRead("HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics", "AppliedDPI")
If $iDPI = 96 Then
$iDPI = 1
Else
$iDPI = 96 / $iDPI
EndIf
ConsoleWrite("iDPI in der Funktion _CheckDPI ist: " & $iDPI & @CRLF)
Return $iDPI; hier bin ich mir nicht sicher, ob ich es richtig mache
EndFunc ;==>_CheckDPI
Die MyUDF.au3 habe ich in den Default Include Ordner kopiert und mit
#include <MyUDF.au3>
ins Hauptscript included.
Der Aufruf erfolgt jetzt so:
der neue Aufruf
Func MeineGUI()
Local $iDPI; deklariere ich Local, da diese Variable ja auch lokal in der MyUDF.au3 liegt und hier somit nicht bekannt ist. Richtig ?
_CheckDPI(); Funktion wird aus der MyUDF.au3 aufgerufen
$MainGUI = GUICreate("MeineGUI - Version " & $Version, $GUIWidth, $GUIHeight, Default, Default); Starte HauptGUI
ConsoleWrite("iDPI außerhalb der Funktion _CheckDPI ist: " & $iDPI & @CRLF)
GUISetFont(8.5 * $iDPI, 400, -1, ""); Schriftgröße
;...... wieder etwas Code
EndFunc
Das neue Ergebnis der Consolenausgabe ist:
das heißt ich mache noch was falsch bei den Übergabe der Werte.
Meine GUI hat jetzt ein stark vergrößertes Schriftbild
Wo "denke" ich hier falsch, bzw. wie und wo sollte man die Variablen deklarieren, das Sie sauber übergeben werden.
Danke für die Hilfe