1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. misterspeed

Beiträge von misterspeed

  • Ist es möglich einen .vbs Script in AutoIt "umzuwandeln"?

    • misterspeed
    • 2. April 2013 um 18:40

    Also einen Fehler sehe ich definitiv:

    [autoit]


    Global $sOutFileName
    For $i = $iStart To $iEnde
    $oDocref.ArtLayers($iTextebene).TextItem.Contents = $sVortext & $i & $sNachtext
    $sOutFileName = $sSpeicherpfad & "\" & $i & ".jpg"
    $oDocref.SaveAs($sOutFileName, $oJpgSaveOptions, True)

    [/autoit]

    $sSpeicherpfad ist nicht der Pfad, sondern beinhaltet lediglich die ControlID deines Labels, also eine Zahl. Du kannst hier entweder $rSpeicherpfad verwenden, oder aber du verwendest

    [autoit]

    guictrlread($sSpeicherpfad )

    [/autoit]

    Falls das nicht die Ursache für den COM Fehler sein sollte würde ich anhand der Zeilennummer vermuten, dass diese Zeile falsche Werte beinhaltet:

    [autoit]

    $oDocref.ArtLayers($iTextebene).TextItem.Contents = $sVortext & $i & $sNachtext

    [/autoit]

    Daher würde ich vor dieser Zeile etwas Debugging betreiben und mir die Variableninhalte ausgeben lassen:

    [autoit]


    consolewrite($iTextebene & " / " & $sVortext & " / " & $i & " / " & $sNachtext & @crlf)

    [/autoit]

    Ahja jetzt beim schreiben fällt mir auf, dass hier sehr sicher ein Fehler steckt, denn du begehst den selben Fehler wie auch schon bei der Variable $sSpeicherpfad. Das Problem sollte also nach Korrektur dieser Variablen behoben sein.


    EDIT:

    Kleiner Nachtrag noch... Globale Variablen sollte man grundsätzlich am Scriptanfang und niemals innerhalb von Funktionen deklarieren, andernfalls kann das Script abstürzen wenn eine Funktion die Variable nutzen möchte bevor die deklarierende Funktion aufgerufen wurde. Nach Möglichkeit sollte man globale Variablen generell sparsam einsetzen. Soweit ich das sehe benötigst du die Variablen außerhalb deiner Start Funktion aber garnicht, sondern lediglich innerhalb der Funktion. Daher solltest du diese auch lokal deklarieren.

  • Problem mit Windows 8 und 64bit und WinHTTP.au3

    • misterspeed
    • 2. April 2013 um 13:06
    Zitat von water

    Wenn es also für WinHTTP kein 64 bit Interface gibt (vermutlich eine DLL), dann funktioniert nur 32 bit.

    Klar gibt es eine 64-bittige "winhttp.dll", er hatte ja auch bereits geschrieben, dass das Script unter Windows 7 in beiden Modi funktioniert. Man darf also mal vermuten, dass sich unter Windows 8 ebenfalls eine 32 und 64bit Variante der DLL in den Ordnern SysWOW64 bzw System32 befindet. Mein erster Schritt wäre mal der Vergleich der entsprechenden DLLs mit dennen aus der Windows 7 Umgebung. Sofern sich die DLLs seit Windows 7 verändert haben, wovon ich mal ausgehe, köntest du testweise auch mal die Nutzung der Windows 7 DLLs erzwingen. Sprich die "alten" DLLs mitliefern und die winhttp.au3 entsprechend modifizieren, damit deine mitgelieferten DLLs genutzt werden.

  • Scroll GUI mit MouseDrag

    • misterspeed
    • 1. April 2013 um 12:01

    Nope X ist nicht irrelevant sondern Y, er sprach von einer horizontalen Scrollbar. Hier mal die Idee von Cheestiger realisiert, allerdings ohne Scrollbars, da ich keine Lust hatte mir die UDF die hier irgendwo noch schlummert rauszusuchen.

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 615, 438, 192, 124)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    if $nMsg=$GUI_EVENT_PRIMARYDOWN Then
    $mouseXstart = MouseGetPos(0)
    consolewrite("StartDrag X: " & $mouseXstart & @CRLF)
    Do
    $mouseXnew = MouseGetPos(0)
    ConsoleWrite("oldPos: " & $mouseXstart & " newPos: " & $mouseXnew & " dif: " & $mouseXstart-$mouseXnew & @CRLF)
    $mouseXstart=$mouseXnew
    ; scrollH($mouseXstart-$mouseXnew) ; wird in der UDF bzw einer Abwandlung fürs Mausrad irgendwie mit sendmessage gemacht, müsstest du nochmal nachsehn, keine Lust zu suchen...
    Sleep(10)
    Until GUIGetMsg()=$GUI_EVENT_PRIMARYUP
    EndIf
    WEnd

    [/autoit]
  • Ist es möglich einen .vbs Script in AutoIt "umzuwandeln"?

    • misterspeed
    • 1. April 2013 um 02:28

    Meinen Code auch gesehen/getestet?

  • Ist es möglich einen .vbs Script in AutoIt "umzuwandeln"?

    • misterspeed
    • 1. April 2013 um 00:22

    Kann so auch nicht funktionieren.

    1. Code der nach deiner GUI Endlosschleife folgt wird nicht ausgeführt, das Script kommt niemals an diese Stelle im Script.
    2. Deine Variablen sind somit nicht deklariert.
    3. Selbst wenn du diese am Scriptanfang deklarieren würdest würden sie nur den Anfangswert der in den Inputfeldern steht beinhalten und nicht die ggf. später von Hand geänderten Werte.

    Da du diese Variablen ohnehin nur lokal benötigst solltest du diese auch nur lokal innerhalb der Start() Funktion deklarieren.

    Ein lauffähiges Script (auf die Autoit Syntax bezogen) würde z.B. so ausschaun:


    Spoiler anzeigen
    [autoit]


    #include <ButtonConstants.au3>
    #include <ComboConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    ;-----GUI Elemente-----
    $GUI = GUICreate("Photoshop Thumbail Tool", 460, 183, 192, 148)
    $in_start = GUICtrlCreateInput(IniRead(@ScriptDir & "/settings.ini", "CONFIG", "START", ""), 112, 13, 121, 21)
    $lbl_start = GUICtrlCreateLabel("Startnummer:", 13, 16, 85, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "Tahoma")
    $in_end = GUICtrlCreateInput(IniRead(@ScriptDir & "/settings.ini", "CONFIG", "ENDE", ""), 112, 37, 121, 21)
    $lbl_end = GUICtrlCreateLabel("Endnummer:", 20, 40, 78, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "Tahoma")
    $lbl_path = GUICtrlCreateLabel("Speicherpfad:", 14, 120, 84, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "Tahoma")
    $lbl_path_2 = GUICtrlCreateLabel(IniRead(@ScriptDir & "/settings.ini", "CONFIG", "PFAD", ""), 112, 120, 300, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "Tahoma")
    $btn_path = GUICtrlCreateButton("Durchsuchen", 112, 146, 75, 25)
    $in_vText = GUICtrlCreateInput(IniRead(@ScriptDir & "/settings.ini", "CONFIG", "VORTEXT", ""), 328, 13, 121, 21)
    $lbl_vText = GUICtrlCreateLabel("Vortext:", 264, 16, 50, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "Tahoma")
    $in_nText = GUICtrlCreateInput(IniRead(@ScriptDir & "/settings.ini", "CONFIG", "NACHTEXT", ""), 328, 37, 121, 21)
    $lbl_nText = GUICtrlCreateLabel("Nachtext:", 256, 40, 58, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "Tahoma")
    $in_layer = GUICtrlCreateInput(IniRead(@ScriptDir & "/settings.ini", "CONFIG", "EBENE", ""), 112, 61, 121, 21)
    $lbl_layer = GUICtrlCreateLabel("Textebene:", 29, 64, 69, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "Tahoma")
    $cmb_quality= GUICtrlCreateInput(IniRead(@ScriptDir & "/settings.ini", "CONFIG", "QUALITAET", ""), 112, 88, 121, 21)
    $lbl_quality= GUICtrlCreateLabel("Qualität:", 45, 88, 53, 20)
    GUICtrlSetFont(-1, 10, 400, 0, "Tahoma")
    $btn_save = GUICtrlCreateButton("Speichern", 288, 144, 81, 25)
    $btn_start = GUICtrlCreateButton("Starten", 376, 144, 75, 25)

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $btn_path
    Search()
    Case $btn_save
    Save()
    Case $btn_start
    Start()
    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;-----Funktionen-----
    Func Search()
    $s_path = FileSelectFolder("Wähle bitte deinen Speicherort aus", "C:/")
    $in_path = GUICtrlSetData($lbl_path_2, $s_path)
    EndFunc ;==>Search

    [/autoit] [autoit][/autoit] [autoit]

    Func Save()
    IniWrite(@ScriptDir & "/settings.ini", "CONFIG", "START", GUICtrlRead($in_start))
    IniWrite(@ScriptDir & "/settings.ini", "CONFIG", "ENDE", GUICtrlRead($in_end))
    IniWrite(@ScriptDir & "/settings.ini", "CONFIG", "PFAD", GUICtrlRead($lbl_path_2))
    IniWrite(@ScriptDir & "/settings.ini", "CONFIG", "VORTEXT", GUICtrlRead($in_vText))
    IniWrite(@ScriptDir & "/settings.ini", "CONFIG", "NACHTEXT", GUICtrlRead($in_nText))
    IniWrite(@ScriptDir & "/settings.ini", "CONFIG", "EBENE", GUICtrlRead($in_layer))
    IniWrite(@ScriptDir & "/settings.ini", "CONFIG", "QUALITAET", GUICtrlRead($cmb_quality))
    EndFunc ;==>Save

    [/autoit] [autoit][/autoit] [autoit]

    Func Start()
    Local $iStart = GUICtrlRead($in_start)
    Local $iEnde = GUICtrlRead($in_end)
    Local $sVortext = GUICtrlRead($in_vText)
    Local $sNachtext = GUICtrlRead($in_nText)
    Local $iTextebene = GUICtrlRead($in_layer)
    Local $sSpeicherpfad = GUICtrlRead($lbl_path_2)
    Local $iQuality = GUICtrlRead($cmb_quality)

    [/autoit] [autoit][/autoit] [autoit]

    Local $oAppref = ObjCreate("Photoshop.Application")
    If $oAppref.documents.count <> 0 Then
    Local $oDocref = $oAppref.ActiveDocument
    Else
    MsgBox(0, "", "Erst die Datei öffnen!")
    Return ; ansonsten ist $oDocref nicht deklariert, du verwendest die Variable aber weiter unten, also muss die Funktion hier mit Fehler abgebrochen werden...
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Local $oJpgSaveOptions = ObjCreate("Photoshop.JPEGSaveOptions")
    $oJpgSaveOptions.EmbedColorProfile = True
    $oJpgSaveOptions.FormatOptions = 1 ; psStandardBaseline
    $oJpgSaveOptions.Matte = 1 ; psNoMatte
    $oJpgSaveOptions.Quality = $iQuality

    [/autoit] [autoit][/autoit] [autoit]

    Local $sOutFileName
    For $i = $iStart To $iEnde
    $oDocref.ArtLayers($iTextebene).TextItem.Contents = $sVortext & $i & $sNachtext
    $sOutFileName = $sSpeicherpfad & "\" & $i & ".jpg"
    $oDocref.SaveAs($sOutFileName, $oJpgSaveOptions, True)
    Next
    EndFunc ;==>Start

    [/autoit]
  • Ist es möglich einen .vbs Script in AutoIt "umzuwandeln"?

    • misterspeed
    • 31. März 2013 um 22:38
    Zitat von water

    $extType und $qualaity kommt nirgends vor, daher weiss ich nicht, was da reinkommt.


    "quality" wird am anfang deklariert und wurde von dir mit $iQuality benannt (Zeile 20 muss also berichtigt werden). "extType" wird allerdings wirklich nirgendwo im vbs script erwähnt. Dafür hast du in Zeile 25 einen fehler eingebaut "i" muss natürlich "$i" heißen. ;)

  • Dateien verstecken?

    • misterspeed
    • 31. März 2013 um 14:15

    Ich würde einfach inetread verwenden, dann gibts erst gakreine Datei die man verstecken müsste. Allerdings kannst du dann eben nicht die Standard ini Funktionen verwenden, sondern musst den empfangenen String mit den Stringfunktionen und/oder Arrayfunktionen parsen/aufbereiten.

  • Arbeitsspeicher - Problem oder nicht?

    • misterspeed
    • 30. März 2013 um 22:15
    [autoit]


    ; DeTokenise by myAut2Exe >The Open Source AutoIT/AutoHotKey script decompiler< 2.9 build(138)

    [/autoit]

    Öhm ja. ?(


    Davon mal ab würde ich das Speicherproblem bei den unzähligen winhttp Aufrufen vermuten. Ich gehe davon aus, dass etliche Handles nicht geschlossen werden und sich der Speicherverbrauch dadurch mit der Zeit summiert, hab das aufgrund des Umfanges jetzt aber auch nur überflogen und könnte da falsch liegen. Testen kann mans ohne die unzähligen Includes die dein Decompiler unterschlagen hat und entsprechende Testzugangsdaten ja ohnehin nicht. Es fehlen im übrigen auch Funktionen z.B. XSKINBUTTON() welche in irgendeinerweise mit der Funktion _go() zusammenhängen dürfte. Wie dem auch sei, da du offensichtlich nicht der Autor des Scriptes bist und den originalen Quellcode nicht besitzt macht weiterer Support hier denke ich kaum Sinn.

  • Arbeitsspeicher - Problem oder nicht?

    • misterspeed
    • 30. März 2013 um 19:25

    Selbst extrem aufwendige Scripte verbrauchen normalerweise kaum RAM (weniger als 30MB). Ich würde vermuten, dass du enorme Datenmengen Zwischenspeicherst, z.B. durch Dateitransfers. Filerad liest z.B. die komplette Datei in den Speicher. Soll dein Chatbot also auch zur Übertragung größerer Dateien dienen empfiehlt es sich diese Byteweise in ein größentechnisch begrenztes Array einzulesen (Lese Cache), anstatt komplett. Beispiele dazu findest du wenn ich mich recht erinnere unter anderem in einer der crypt Funktionen.

    Andere Ursachen könnten natürlich auch Schleifen sein, die in jedem Durchgang den Inhalt einer Variable oder eines Arrays permanent kopieren. Aber wie schon gesagt wurde ist es ohne Code unmöglich dir hier die Ursache zu nennen.

  • MiniFTP

    • misterspeed
    • 30. März 2013 um 19:09

    Funktioniert doch. Musste nur die Funktionsnamen anpassen. Am Anfang hab ich dann noch den passiv mode aktiviert und die Möglichkeit eines abweichenden Ports berücksichtigt. Was allerdings nicht funktioniert ist der Download eines ganzen Ordners. Man kann damit im Moment nur einzelne Dateien direkt im Stammverzeichnis herunterladen, mehr hatte der ursprüngliche Autor des "FTP Clients" wohl nicht beabsichtigt. Meiner Meinung nach unbrauchbar. Wozu gibt es Filezilla und co. ?

    Ob die restlichen Funktionen so noch funktionieren habe ich nicht getestet. Das requireadmin am Scriptanfang dürfte im übrigen überflüssig sein. Ich sehe nichts im Script das Adminrechte benötigen würde.

    Spoiler anzeigen
    [autoit]


    ;Copyright Alexander Imka ©
    #RequireAdmin
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <FTPEx.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $serveradresse = "************"
    $port = 21
    $passivemode = 1 ; default 0
    $username = "************"
    $passwort = "************"

    [/autoit] [autoit][/autoit] [autoit]

    $open = _FTP_Open("Homeworker by Alex")
    $connection = _FTP_Connect($open,$serveradresse,$username,$passwort,$passivemode,$port)
    $filelist = _Ftp_ListToArray2D ($connection)

    [/autoit] [autoit][/autoit] [autoit]

    ;GUI CODE STARTET HIER;
    $Gui = GUICreate("mini FTP Client",310,500)
    $header = GUICtrlCreateLabel("Datei auswählen",65,10)
    $liste = GUICtrlCreateList("",20,30,200,450)
    $downloadbutton = GUICtrlCreateButton("Download",235,30,55,50)
    $uploadbutton = GUICtrlCreateButton("Upload",235,100,55,50)
    $filedel = GUICtrlCreateButton("Delete",235,170,55,50)
    $refresh = GUICtrlCreateButton("Refresh",235,240,55,50)
    $rename = GUICtrlCreateButton("Rename",235,310,55,50)

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 1 to UBound ($filelist) -1
    GUICtrlSetData ($liste, $filelist [$i][0]&"|")
    Next

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW)
    ;GUI CODE ENDET HIER;

    [/autoit] [autoit][/autoit] [autoit]

    while 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $GUI_EVENT_CLOSE
    _FTP_Close($connection)
    ;_FTP_UnInit()
    Exit
    Case $DownloadButton
    $DownFile = GUICtrlRead ($liste)
    If $DownFile = "" Then
    MsgBox (16, "STOP", "Du musst erst eine Datei auswählen")
    Else
    DirCreate (@ScriptDir&"\Download")
    _FTP_ProgressDownload($connection, @ScriptDir&"\Download\"&$DownFile, "/"&$DownFile)
    EndIf
    Case $uploadbutton
    $UploadPfad = FileOpenDialog("Auswählen",@ScriptDir,"Alle (*.*)")
    If $UploadPfad = "" Then
    MsgBox (0, "Achtung!", "Erst eine Datei auswählen!")
    Else
    $dateinamensplit = StringSplit($UploadPfad,"\")
    $teile = $dateinamensplit[0]
    Global $UploadVorgang = _FTP_ProgressUpload($connection, $UploadPfad, "/"&$dateinamensplit[$teile])
    If $UploadVorgang = 1 Then
    MsgBox (64, "Okay", "hochladen erfolgreich")
    GUICtrlDelete($liste)
    $open = _FTP_Open("Homeworker by Alex")
    $connection = _FTP_Connect($open,$serveradresse,$username,$passwort)
    $filelist = _Ftp_ListToArray2D ($connection,0,0x80000000)
    $liste = GUICtrlCreateList("",20,30,200,450)
    For $i = 1 to UBound ($filelist) -1
    GUICtrlSetData ($liste, $filelist [$i][0]&"|")
    Next
    Else
    MsgBox (16, "Error", "Aufgrund eines Fehlers wird das Programm beendet!")
    Exit
    EndIf
    EndIf
    Case $filedel
    $del = MsgBox(52,"Aktion bestätigen","Die datei " & GUICtrlRead($liste) & " wirklich löschen?")
    if $del = 6 Then
    $s_RemoteFile = GUICtrlRead($liste)
    _FTP_FileDelete($connection, $s_RemoteFile)
    MsgBox(64,"ok","Ok, Die Datei wurde erfolgreich gelöscht")
    GUICtrlDelete($liste)
    $open = _FTP_Open("Homeworker by Alex")
    $connection = _FTP_Connect($open,$serveradresse,$username,$passwort)
    $filelist = _Ftp_ListToArray2D ($connection,0,0x80000000)
    $liste = GUICtrlCreateList("",20,30,200,450)
    For $i = 1 to UBound ($filelist) -1
    GUICtrlSetData ($liste, $filelist [$i][0]&"|")
    Next
    Else
    MsgBox(16,"abbruch","Aktion abgebrochen")
    EndIf
    Case $refresh
    GUICtrlDelete($liste)
    $open = _FTP_Open("Homeworker by Alex")
    $connection = _FTP_Connect($open,$serveradresse,$username,$passwort)
    $filelist = _Ftp_ListToArray2D ($connection,0,0x80000000)
    $liste = GUICtrlCreateList("",20,30,200,450)
    For $i = 1 to UBound ($filelist) -1
    GUICtrlSetData ($liste, $filelist [$i][0]&"|")
    Next
    MsgBox(0,"ok","Erfolgreich aktualisiert")
    ;~ MsgBox(64,"nönö","schon vergessen? das geht noch nit!")
    Case $rename
    $s_Existing = GUICtrlRead($liste)
    $s_New = InputBox("Rename","in welchen Namen soll die Datei umbenannt werden?",$s_Existing)
    if Not @error then
    _FTP_FileRename($connection, $s_Existing, $s_New)
    MsgBox(0,"ok","Die Datei wurde umbeannt")
    GUICtrlDelete($liste)
    $open = _FTP_Open("Homeworker by Alex")
    $connection = _FTP_Connect($open,$serveradresse,$username,$passwort)
    $filelist = _Ftp_ListToArray2D ($connection,0,0x80000000)
    $liste = GUICtrlCreateList("",20,30,200,450)
    For $i = 1 to UBound ($filelist) -1
    GUICtrlSetData ($liste, $filelist [$i][0]&"|")
    Next
    Else
    MsgBox(64,"oioi","Aktion abgebrochen!")
    EndIf
    EndSwitch
    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit]
  • Fortlaufende ini?

    • misterspeed
    • 30. März 2013 um 13:48
    Zitat von Fliwatt

    Macht es doch nicht immer so kompliziert mit MySQL und CSV, mit einer ini geht es doch auch sehr gut.

    Nun, dass eine SQL Datenbank in diesem Fall vermutlich übertrieben ist und vorallem einiges an Grundwissen zur SQL Syntax erfordert stimmt meiner Meinung nach. CSV Dateien sind hingegen je nach Datenstruktur wesentlich sinnvoller als ini Dateien, alleine schon deshalb weil Redundanz und somit Speicherplatz eingespart wird. Das kommt auch wieder der Geschwindigkeit zu gute. CSV Dateien kann man wunderbar in einem Rutsch in ein Array einlesen, was wiederum zahlreiche Festplattenzugriffe einspart. Sofern man den Umgang mit 2d Arrays und evtl anderen Array bezogenen Funktionen verstanden hat ist es auch nicht wirklich komplizierter als mit den ini Funktionen zu arbeiten.

    Anmerkung zu deinem Beispielscript:

    Es ist nicht notwendig die Anzahl der ini Sektionen in einer extra Sektion zu speichern. Stattdessen kann man auch IniReadSectionNames verwenden, welches in result[0] die Anzahl der gefundenen Sektionen zurückgibt.

  • Fortlaufende ini?

    • misterspeed
    • 30. März 2013 um 12:12

    Und warum willst du quasi unendlich viele ini Dateien dafür anlegen? Ich würde mal vermuten, dass es eine einzige ini genauso tun würde, oder alternativ eine CSV Datei viel besser geeignet wäre. Im moment ist mir aber unklar was du nun eigentlich speichern möchtest. Wofür steht K und D in deinem Beispiel? Sollen das Spielernamen sein? Spielrunden/Level?

    Da du in deinem Beispiel jeweils nur einen Eintrag pro ini Sektion verwendest würde eine ini die so aufgebaut ist vielleicht mehr Sinn machen:


    Code
    [Level K]
    Tötungen=123
    Tode=3
    Assits=45
    Ergebnis=44
    Champion=44
    [Level D]
    Tötungen=454
    Tode=46
    ...
  • GUICtrlSetOnEvent <- event abfangen im neu ersteller GUI

    • misterspeed
    • 30. März 2013 um 11:51

    Ich verstehs nachwievor nicht, was damit nun gemeint war, denn egal wie man die Variablen ausserhalb von Funktionen deklariert bleibt das Verhalten identisch. Sie werden immer als globale Variablen behandelt und sind durch Funktionen global veränderbar, ausser man deklariert sie erneut lokal innerhalb der Funktion myFuncDeclareLocal(), was sich wiederum nicht auf die globale Eigenschaft auswirkt, siehe erneuter Aufruf von myFunc(). Somit sehe ich nachwievor keinen Grund sie nicht ausdrücklich als Global zu deklarieren, da dies ohnehin im Hintergrund geschieht.

    Spoiler anzeigen
    [autoit]


    Global $global = 1
    Local $local = 1
    Dim $dim = 1
    $nothing = 1

    [/autoit] [autoit][/autoit] [autoit]

    ConsoleWrite("outside function before call:" & @TAB & $global & @TAB & $local & @TAB & $dim & @TAB & $nothing & @CRLF)
    myFunc()
    ConsoleWrite("outside function after call:" & @TAB & $global & @TAB & $local & @TAB & $dim & @TAB & $nothing & @CRLF)
    myFuncDeclareLocal()
    ConsoleWrite("outside function after call:" & @TAB & $global & @TAB & $local & @TAB & $dim & @TAB & $nothing & @CRLF)
    myFunc()
    ConsoleWrite("outside function after call:" & @TAB & $global & @TAB & $local & @TAB & $dim & @TAB & $nothing & @CRLF)

    [/autoit] [autoit][/autoit] [autoit]

    Func myFunc()
    $global+=1
    $local+=1
    $dim+=1
    $nothing+=1
    ConsoleWrite("inside function:" & @TAB & @TAB & $global & @TAB & $local & @TAB & $dim & @TAB & $nothing & @CRLF)
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func myFuncDeclareLocal()
    Local $global = 5
    Local $local = 5
    Local $dim = 5
    Local $nothing = 5
    ConsoleWrite("inside function:" & @TAB & @TAB & $global & @TAB & $local & @TAB & $dim & @TAB & $nothing & @CRLF)
    EndFunc

    [/autoit]
  • GUICtrlSetOnEvent <- event abfangen im neu ersteller GUI

    • misterspeed
    • 29. März 2013 um 21:36
    Code
    AutoIt v3 Script (neu).au3 - 4 error(s), 8 warning(s)
    !>21:25:42 AU3Check ended. Press F4 to jump to next error.rc:2

    Nächstesmal poste bitte ein Script, das auch lauffähig ist. Ich gehe daher einfachmal davon aus, dass Minx richtig liegt (Punkt 3).

    minx

    Was die Global/Local Sache angeht sehe ich ehrlich gesagt keinen Grund das als Local zu deklarieren. Schließlich handelt es sich um globale Variablen, wenn diese ausserhalb von Funktionen initialisiert oder deklariert werden, also warum nicht auch als solche kennzeichnen? Klar ist eine Deklaration nicht notwendig, aber wenn man sauber programmiert sollte man das schon tun. Da verstehe ich deine Kritik nicht ganz sorry. Wenn schon würde ich sie garnicht deklarieren, keine Ahnung wieso du sie als lokal deklarieren würdest und was dich an der globalen Deklaration stört.

  • FileRead Problem

    • misterspeed
    • 29. März 2013 um 15:42

    Fileopen gibt dir nur ein Handle zur Datei und nicht den Dateiinhalt. Verwende fileread und übergib den gelesenen String dann an deine regexp Funktion.

  • MiniFTP

    • misterspeed
    • 29. März 2013 um 15:38

    Bevor man etwas sucht sollte man erstmal wissen was man sucht und es danach in Suchmaschinen freundliche Worte packen. Bei letzterem kann man dir hier ggf. helfen, aber das "was" wurde mir aus deinem Beitrag nicht wirklich klar. Autoit beinhaltet doch bereits eine FTP UDF, also was genau suchst du nun?

  • Explorer zweimal öffnen und je links und rechts zur Hälfte anordnen

    • misterspeed
    • 29. März 2013 um 15:18

    Ja das schon, aber der Fenstertext lautet sicher nicht "Adresse..." und wie die Klasse unter XP oder Vista lautet kann ich gerade nicht nachsehen.

  • Explorer zweimal öffnen und je links und rechts zur Hälfte anordnen

    • misterspeed
    • 29. März 2013 um 15:08

    Ja das kann durchaus sein, wie vorhin erwähnt gab es noch einen Fehler was den Fenstertitel anbelangt. Diese Variante sollte nun besser funktionieren, Vorraussetzung ist aber, dass du Windows 7 mit deutscher Sprache verwendest und dass die Explorer Fenster jeweils maximal 30 Sekunden brauchen um zu erscheinen. Direkt nach dem Windowsstart kann das je nach Rechner durchaus ein wenig dauern. sofern das bei dir ein Problem sein sollte kannst du den letzten Parameter $waitTime erhöhen. Bei anderen Windowsversionen müsste man vermutlich "CLASS:?????" entsprechend anpassen und auch der Fenstertext "Adresse...." muss ggf. geändert werden.

    [autoit]


    Global $taskbarH = 80

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    openFolder("C:",0,0,@DesktopWidth/2,@DesktopHeight-$taskbarH)
    openFolder("D:",@DesktopWidth/2,0,@DesktopWidth/2,@DesktopHeight-$taskbarH)

    [/autoit][autoit][/autoit][autoit]

    Func openFolder($folder,$x,$y,$b,$h,$waitTime = 30)

    [/autoit][autoit][/autoit][autoit]

    If StringRight($folder,1)='\' Then $folder = StringTrimRight($folder,1)

    [/autoit][autoit][/autoit][autoit]

    ShellExecute($folder)

    [/autoit][autoit][/autoit][autoit]

    if WinWait("[CLASS:CabinetWClass]","Adresse: " & $folder,$waitTime) = 0 Then
    MsgBox(0,"Fehler","Warten auf Fenster " & $folder & " gescheitert.")
    Else
    winMove("[CLASS:CabinetWClass]","Adresse: " & $folder,$x,$y,$b,$h)
    ;WinSetState("[CLASS:CabinetWClass]","Adresse: " & $folder,@SW_MINIMIZE)
    EndIf
    EndFunc

    [/autoit]
  • Explorer zweimal öffnen und je links und rechts zur Hälfte anordnen

    • misterspeed
    • 29. März 2013 um 14:38

    Joar Bugfix, war mir klar. Hatte das nur aus meinem Startup Script rauskopiert, da ist Flexibilität eher unwichtig. Was den Fenstertitel angeht passt auch was nicht ganz (hab das bei mir eigentlich mit fixen Fenstertiteln). ;)

  • Explorer zweimal öffnen und je links und rechts zur Hälfte anordnen

    • misterspeed
    • 29. März 2013 um 14:02

    Sofern es so gadacht war:

    [autoit]


    Global $taskbarH = 80

    [/autoit][autoit][/autoit][autoit]

    openFolder("C:\",0,0,@DesktopWidth/2,@DesktopHeight-$taskbarH)
    openFolder("D:\",@DesktopWidth/2,0,@DesktopWidth/2,@DesktopHeight-$taskbarH)

    [/autoit][autoit][/autoit][autoit]

    Func openFolder($folder,$x,$y,$b,$h,$waitTime = 30)
    $dirName = StringSplit($folder,"\")
    If $dirName[0] < 2 Then
    $dirName = $folder
    Else
    $dirName = $dirName[$dirName[0]]
    EndIf

    [/autoit][autoit][/autoit][autoit]

    ShellExecute($folder)

    [/autoit][autoit][/autoit][autoit]

    if WinWait($dirName,"",$waitTime) = 0 Then
    MsgBox(0,"Fehler","Warten auf Fenster " & $dirName & " gescheitert.")
    Else
    winMove($dirName,"",$x,$y,$b,$h)
    ;WinSetState($dirName,"",@SW_MINIMIZE)
    EndIf
    EndFunc

    [/autoit]

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™