fehler im script? pls help

08/02/2010 12:58 antrix99#1
hallo liebe epvper ;D

ich hab ein problem mit meinem WoW launcher den ich mir per autoit bastel

wenn ich das erste mal den button drücke dann speichert das script den pfad in eine ini und soll beim neustarten des scriptes den pfad lesen und dann auch verwenden

leider macht es das nicht und ich weiß nicht warum und deswegen will ich mir rat bei euch holen

hier das script:
(bruchteil)
PHP Code:
Func starten()
$ini IniRead (@ScriptDir&"\path.ini","wowpath","path","nothing")
If 
$ini Not 1 Then
$fileopen 
FileSelectFolder ("Suchen","",4,"")
$write IniWrite (@ScriptDir&"\path.ini","wowpath","path",$fileopen)
    
$ini1 IniRead (@ScriptDir&"\path.ini","wowpath","path","nothing")
    If 
$ini1 Not 0 Then ShellExecute ("Wow.exe","",$ini1)
    EndIf
    
EndFunc 
sry wenn es total unübersichtlich ist ... ich leg da kein großen wert drauf ^^

hoffe ihr könnt mir helfen

mfg antrix99
08/02/2010 13:05 bladerofdarknes#2
Code:
Func starten() 
$ini = IniRead (@ScriptDir&"\path.ini","wowpath","path","") 
If $ini = Not 1 Then 
$fileopen = FileSelectFolder ("Suchen","",4,"") 
$write = IniWrite (@ScriptDir&"\path.ini","wowpath","path",$fileopen) 
    $ini1 = IniRead (@ScriptDir&"\path.ini","wowpath","path","") 
    If $ini1 = Not 0 Then ShellExecute ("Wow.exe","",$ini1) 
    EndIf 
     
EndFunc
probiers mal so
08/02/2010 13:20 antrix99#3
funktioniert leider nicht und der pfad wird ausgelesen aber anscheind nicht erkannt / verwendet

den pfad muss ich ja nicht mehr suchen weil das script schon erkennt das der in der ini ist
aber verwendet wird er anscheind nicht
08/02/2010 14:36 bladerofdarknes#4
schau dir mal die funktion an:
AdlibRegister
08/04/2010 10:21 Fuii#5
PHP Code:
Global $inipath = @ScriptDir "\path.ini"

Func starten()
    
Local $wowdir
    Local $answer 
IniRead($inipath"wowpath""path""")
    
    If 
$answer "" Then
        $wowdir 
FileSelectFolder ("Wähle deinen WoW Ordner"""2)
        
        If 
FileExists($wowdir "\wow.exe"Then
            IniWrite
($inipath"wowpath""path"$wowdir)
            
$answer $wowdir
        
Else
            
MsgBox(16"Fehler""Keinen WoW Client in dem ausgewähltem Verzeichnis gefunden!")
            Exit ; 
oder was auch immer dann passieren soll
        
EndIf
    EndIf
    
    If 
$answer <> "" Then ShellExecute($answer "\wow.exe")
EndFunc 
Kurze Erklärung:

  1. er liest zunächst den Pfad aus der ini
  2. ist ein Pfad vorhanden geht er direkt zum Ende
  3. ist keiner vorhanden (antwort = leer) öffnet er einen Dialog wo der Nutzer den Ordner auswählen muss
  4. wenn ja, schreibt er den Wert in die ini und startet den client
  5. wenn nein, zeigt er einen Fehler an und beendet das Programm
  6. ist er ausgewählt prüft er ob die wow.exe dort vorhanden ist
  7. starte WoW
08/04/2010 11:52 PenGuin :O#6
Code:
If $ini = Not 1 Then
o_O
Was soll das sein?

Not 1 = 0, aber das gibts in AutoIt nicht, es gibt nur If Not $ini = 1...
08/04/2010 14:15 antrix99#7
hatte da wohl nen kleinen aussetzer ^^

@fuii ich probiers mal ... danke

okay das funktioniert super vielen dank nochmal ^^
08/04/2010 15:29 Fuii#8
Du kannst die "realm.wtf" nicht mit Windows ausführen, denn Windows weiß damit nichts anzufangen.
Die Datei müsstest du höchstens mit WoW selbst starten oder du sagst Windows in der registry wie er mit dem Dateityp ".wtf" verfahren soll.

Ich denke mal du willst mit der Funktion die realmlist in deinem Programm zeigen, richtig?
Die .wtf Datei kannst du mit dem Editor öffnen und bearbeiten.

Willst du eine komplette Liste der Server, dann musst du die Datei auslesen und im GUI ausgeben lassen.

PHP Code:
#include <array.au3>

Func realm()
    
Local $realmdir
    
Local $answer IniRead($inipath"realm""path""")
    
Local $realmlist[100], $filehandle
    Local $i 
1; => $i Zähler für die while schleife
    
    
If $answer "" Then
        $realmdir 
FileSelectFolder ("Wähle deinen WoW Data/deDE Ordner"""2)

        
        If 
FileExists($realmdir "\realmlist.wtf"Then
            IniWrite
($inipath"realm""path"$realmdir)
            
$answer $realmdir
        
Else
            
MsgBox(16"Fehler""Keinen realmlist.wtf in dem ausgewähltem Verzeichnis gefunden!")
            Exit ; 
oder was auch immer dann passieren soll
        
EndIf
    EndIf
    
    
$filehandle FileOpen($realmdir "\realmlist.wtf"0)
    If 
$filehandle = -1 Then 
        MsgBox
(16"Fehler""Die Serverliste konnte nicht geöffnet werden!")
        Exit
    EndIf
    
    While 
1
        $realmlist
[0] = FileReadLine($filehandle$i)
        If 
$realmlist[0] = "" Then ExitLoop ; => einlesen bis zur ersten leeren Zeile Ende der Datei
        
        $realmlist
[$i] = $realmlist[0] ; => speichern des Servers im array
        
        
$i += ; => erhöhen des Zählers für die nächste Zeile
    WEnd
    
    _ArrayDisplay
($realmlist) ; gibt das array in einer Tabelle aus du kannst damit natürlich auch dein GUI füllen
    
;~     z.Bin einer Liste
;~         $realmlistUI GUICtrlCreateList(""1841288197)
;~         
$realmlistmax _ArrayMaxIndex($realmlist)
;~     
;~         
$i 1
;~         While $i <= $realmlist[0]
;~             
$realmlist[0] &= $realmlist[$i] & @CRLF
;~             $i += nächster array Eintrag
;~         WEnd        
;~             GUICtrlSetData($realmlistUI$realmlist[0]) ; füllt die Liste
    
EndFunc 
08/04/2010 15:47 Fruschel#9
Code:
Func starten() 
	$ini = IniRead (@ScriptDir&"\path.ini","wowpath","path","nothing") 
	If $ini = 'nothing' Then
		$fileopen = FileSelectFolder ("Suchen","",4,"") 
		$write = IniWrite (@ScriptDir&"\path.ini","wowpath","path",$fileopen) 
		ShellExecute('"' & $fileopen & '"')
	Else
		ShellExecute('"' & $ini & '"')
	EndIf 
EndFunc
Problem ist, Du hast die If-Verzweigungen völlig falsch genutzt. Der Default-Parameter dient dazu, dass wenn der angegebene Schlüssel nicht existiert, wird der Default-Parameter als False-Rückgabewert zurückgegeben, sprich den String "nothing".
Außerdem kommt immer das logische nicht/not vor dem Vergleichsoperator und nicht danach.

Viel Spass und ich hoffe, dass ich helfen konnte.

Mit freundlichen Grüßen,
Understood / Fruschel.
08/04/2010 22:13 antrix99#10
@fuii

habs gelöst bekommen die fehler bestand darin das ich bei shellexecute edite benutzt habe aber um die wtf datei zu benutzen brauchte ich open... habs umgestellt und jetzt geht alles

vielen dank das ihr mir geholfen habt ;D