Hallo,
aus langer Erfahrung weiß ich "Der Computer hat immer recht", doch nun bin ich wieder an einem Punkt angelangt, an dem ich ihm das nicht so wirklich glauben mag.
Ich habe ein kleines Progrämmchen geschrieben, dass eigentlich nichts anderes macht als den Namen von <Ordner A> und <Ordner B> zu tauschen.
Damit lässt sich das Spiel League of Legends von EU auf NA (north American) umstellen und zurück.
Das passiert in den Zeilen 54-56. Der Code wird ausgeführt und alle Parameter stimmen, das habe ich ausgiebig getestet. Problem an der Kiste: DirMove gibt 0 zurück und der Kopiervorgang wird auch nicht ausgeführt.
Der eigentlich interessante Teil kommt jetzt. Wenn ich die 3 Zeilen Code in eine Leere .au3 packe, in der Zeile davor $path deklariere und ein Exit in die letzte schreibe läuft der Code einwandfrei durch und die Kopiervorgänge werden anstandslos durchgeführt.
Da bin ich jetzt wirklich mit meinem Latein am Ende.
Wenn jemand eine schlaue Erklärung für dieses Verhalten hat bin ich dafür sehr dankbar.
Gruß
stro
Edit: Ich hoffe ich habe den Beitrag jetzt nicht doppelt gepostet. Ansonsten bitte ich ein Mod das Missgeschick zu bereinigen. Danke!
Originalcode:
Spoiler anzeigen
;LoL Swapper
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
Global $path = ''
[/autoit] [autoit][/autoit] [autoit]#Region ### START Koda GUI section ### Form=
$frm_Main = GUICreate("LoL Swapper", 194, 66, 774, 500)
$Group_Control = GUICtrlCreateGroup("Control Panel", 0, 0, 193, 65)
$Radio_EU = GUICtrlCreateRadio("EU", 8, 16, 41, 17)
$Radio_NA = GUICtrlCreateRadio("NA", 8, 40, 33, 17)
$Button_Apply = GUICtrlCreateButton("Apply", 48, 16, 57, 41, $WS_GROUP)
$Label_Headlineclient = GUICtrlCreateLabel("Current client", 112, 16, 66, 17)
GUICtrlSetFont(-1, 8, 400, 4, "MS Sans Serif")
$Label_CurrentClient = GUICtrlCreateLabel("default", 136, 37, 21, 17)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0xFF0000)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
#Region ### START UDF ###
Func GetCurrentClient()
$fp = FileOpen($path&'\RADS\projects\lol_air_client_config_eu\releases\0.0.0.1\deploy\lol.properties')
$fr = FileReadLine($fp,2)
If (StringRight($fr,20) == 'eu.lol.riotgames.com') Then
Return 'EU'
ElseIf (StringRight($fr,22) == 'beta.lol.riotgames.com') Then
Return 'NA'
Else
Return False
EndIf
EndFunc
Func PostCurrentClient($client)
Switch $client
Case 'EU'
GUICtrlSetState($Radio_EU,$GUI_CHECKED)
GUICtrlSetData($Label_CurrentClient,'EU')
Case 'NA'
GUICtrlSetState($Radio_EU,$GUI_CHECKED)
GUICtrlSetData($Label_CurrentClient,'NA')
Case False
GUICtrlSetData($Label_CurrentClient,'ERROR')
EndSwitch
EndFunc
Func SwapCurrentClient($swapto)
If $swapto == GetCurrentClient() Then
Return True
Else
DirMove($path&'\RADS\projects\lol_air_client_config_eu',$path&'\RADS\projects\lol_air_client_config_eu1')
DirMove($path&'\RADS\projects\lol_air_client_config_na',$path&'\RADS\projects\lol_air_client_config_eu')
DirMove($path&'\RADS\projects\lol_air_client_config_eu1',$path&'\RADS\projects\lol_air_client_config_na')
PostCurrentClient(GetCurrentClient())
Return True
EndIf
EndFunc
#EndRegion ### END UDF ###
#Region ### START Program initialization ###
If FileExists("LoL Swapper.ini") Then
$path = IniRead("LoL Swapper.ini", "General", "Path", "...")
Else
Do
$path = FileSelectFolder("Select League of Legends folder","",4,'C:\Spiele\League of Legends')
If FileExists($path&'\lol.launcher.exe') Then
$loop = False
Else
MsgBox(48,'Error!','Could not find lol.launcher.exe in selected folder')
$loop = True
EndIf
Until $loop == False
IniWrite("LoL Swapper.ini", "General", "Path",$path)
EndIf
PostCurrentClient(GetCurrentClient())
#EndRegion ### END Program initialization ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button_Apply
If GUICtrlRead($Radio_EU) == $GUI_CHECKED Then
MsgBox(0,'','Send EU')
SwapCurrentClient('EU')
ElseIf GUICtrlRead($Radio_NA) == $GUI_CHECKED Then
MsgBox(0,'','Send EU')
SwapCurrentClient('NA')
EndIf
EndSwitch
WEnd
Kopierter Einzelteil
Spoiler anzeigen
$path = 'C:\Spiele\League of Legends'
DirMove($path&'\RADS\projects\lol_air_client_config_eu',$path&'\RADS\projects\lol_air_client_config_eu1')
DirMove($path&'\RADS\projects\lol_air_client_config_na',$path&'\RADS\projects\lol_air_client_config_eu')
DirMove($path&'\RADS\projects\lol_air_client_config_eu1',$path&'\RADS\projects\lol_air_client_config_na')
Exit