Beiträge von SEuBo

    $Anzahl = InputBox("Stahlbarren Herstellung", "Bitte gib hier ein, wieviel Stahlbarren du herstellen möchtest!")
    Local $Holzkohle = 5, $Feineseisenerz = 10, $Steinkohle = 20


    MsgBox(0, "Ergebnisse", _
    'Holzkohle: ' & $Holzkohle * $Anzahl & @CRLF & _
    'Feines Eisenerz: ' & $Feineseisenerz * $Anzahl & @CRLF & _
    'Steinkohle: ' & $Steinkohle * $Anzahl)


    Ob dieses Problem auch bei SEuBo besteht weiss ich nicht, das hab ich mir noch nicht angesehn und auf den ersten Blick auch nicht 100% verstanden.


    Höchstwahrscheinlich.
    Mein Script macht so ziemlich das selbe - es ruft auch mit AdlibRegister die Funktion mit der Schleife auf, nachdem die OnEvent Funktion beendet wurde.


    Der einzige unterschied zu Großvaters Script ist wohl, dass ich das ganze über die Funktion _CallFunc() mache, damit man nicht in jeder Funktion, die man aufruft, ein AdlibUnRegister braucht. Die _CallFuncHelper ist nur dafür da, um die Variablen $iAdlib und $sCallFunc zu speichern. Scheinbar funktionieren Static-Variablen in Adlib-Funktionen nicht so wie Sie sollten. Deswegen brauchte ich da eine Zweite Funktion, die die Static's speichert.

    Zitat

    . Guigetmsg() innerhalb der fraglichen Funktion/Schleife ist im OnEvent Mode ja nicht möglich, da dort guigetmsg immer 0 als return wert besitzt,


    Einfach OnEvent-Mode bei der Nutzung von GUIGetMsg kurzzeitig deaktivieren..

    ; Some Code for OnEvent here...


    Func OnEventFunc()
    Local $iOpt = Opt("GUIOnEventMode", 0) ; turn off On-Event
    While GUIGetMsg() <> $cButtonWeiter ; use GuiGetMsg()
    WEnd
    Opt("GUIOnEventMode", $iOpt) ; Set On-Event to the old state.
    EndFunc


    Übrigens: Wenn du es mit AdlibRegister machst, kannst du jede Funktion mit jedem Inhalt zu jedem Zeitpunkt deiner Wahl ausführen - und das ohne nervige Beschränkungen. Hab das Script von misterspeed mal angepasst:




    Zitat


    jemand anders noch eine Idee?


    Ja, GUIRegisterMsg()

    Vielleicht hilft dieses kurze Scriptbeispiel noch, um das, was BugFix schrieb, zu verdeutlichen:


    #include <Array.au3>
    $sString = _
    "Key='ABC' Value='DEF'" & @CRLF & _
    "Key='GHI' Value='JKL'" & @CRLF & _
    "Key='MNO' Value='PQR'" & @CRLF


    $aArray = StringRegExp($sString, "Key='(.*?)' Value='(.*?)'", 3)
    _ArrayDisplay($aArray, 'Gesamter Array')


    For $i = 0 To UBound($aArray) - 1 Step 2
    MsgBox(0, "", _
    "$i = " & $i & @CRLF & _
    "$aArray[" & $i & "] = " & $aArray[$i] & @CRLF & _
    "$aArray[" & $i + 1 & "] = " & $aArray[$i + 1] _
    )
    Next

    Ups, nein. Tut mir leid. Ich habe es getestet, aber es startet mir auch leider nur die alte XP-Tastatur.


    Dann lösch die XP Tastatur die du runtergeladen hast mal aus dem Scriptverzeichnis. (Denn Standardmäßig, kann die XP Bildschirmtastatur nicht unter Windows 7 starten - die gibt es da nämlich nicht)

    Wird meine Antwort hier bewusst ignoriert?! Ich WEIß nämlich zufällig, dass die Lösung funktioniert...


    Hier nochmal für die ganz faulen...
    Local $iState
    If @CPUArch = "X64" And Not @AutoItX64 Then
    DllCall("kernel32.dll", "int", "Wow64DisableWow64FsRedirection", "ptr", $iState)
    EndIf


    ShellExecute("osk")


    If @CPUArch = "X64" And Not @AutoItX64 Then
    DllCall("kernel32.dll", "int", "Wow64RevertWow64FsRedirection", "dword", $iState)
    EndIf

    Gibt es eine Möglichkeit den Search Befehl auf den Anfangsbuchstaben zu reduzieren ?


    Du könntest zum Beispiel (*hust*) die Hilfe Datei aufschlagen, und dir nochmals die Doku zu _ArrayFindAll() anschauen. Da gibt es nämlich einen Parameter "$iPartial", der es erlaubt, nur nach Teilübereinstimmungen zu suchen.


    /Edit:
    Alternativ kannst du dir natürlich selbst eine Funktion schreiben:

    /Edit: Wow, da geb ich mir so viel Mühe mit bunten Farben in meinem Post, und name22 erklärt es 6 minuten schneller & 6 Minuten besser als ich.
    Ja, "6 Minuten besser" - ich habe diese Rechnung mit vollem Ernst aufgestellt!


    Also zuerst: Da ist noch ein kleiner Flüchtigkeitsfehler drin. Das sollte eigentlich

    Code
    g-nav">([^"<]+) ; statt diesem
    g-nav">([^<]+) ; dieses


    sein.


    vielleicht kannst du mir kurz diese Syntax erklären Seubo


    g-nav"> : Sollte ja soweit klar sein. Sucht also 'g-nav">'
    ([^<]+) : Sucht ab hier nach mind. 1 Zeichen, das kein < ist.


    Bei manchen Seiten stimmt das Ergebnis nicht
    da sind immer noch Klammern und Zahlen drin:


    Dann musst du mal den kompletten Quelltext posten ;)

    Entweder so:
    #include <Array.au3>
    $sString = ClipGet()
    $aArray = StringRegExp($sString,'g-nav">([^"<]+)',3)
    _ArrayDisplay($aArray)


    Oder so:
    #include <Array.au3>
    $sString = ClipGet()
    $aArray = StringRegExp($sString,'g-nav">(.*?)</a>',3)
    _ArrayDisplay($aArray)


    Wobei die erste Methode schneller (oder zumindest aus RegExp-Sicht gesehen effizienter) ist.

    ich bin gerade dabei, eine Funktion zu schreiben, die mir Sonderzeichen aus einem String entfernen soll


    Warum dann so umständlich mit Arrays hantieren?
    MsgBox(0,"", _DeleteSpecialChars('!X"§$%hfh&/1$a-9-_'))


    Func _DeleteSpecialChars($sString)
    Return StringRegExpReplace($sString, "[^A-Za-z0-9]", "")
    EndFunc

    Also auf Anhieb sehe ich da keinen Fehler im Code, vielleicht hab ich ihn auch einfach übersehen. Das einzige was mir auffällt, ist dein Kommentar hier:

    ;Hier sind natürlich noch andere Objekte (0-60) aber das wäre hier zulang


    Du weißt schon, dass - mal angenommen du erstellst $aOSInfo[5][60] - ein Zugriff auf z.B. $aOSInfo[1][60] zum Crash führt? Das letzte Element ist dann ja entsprechend $aOSInfo[1][59], weil der Arrayindex bei 0 beginnt.



    (Zu deiner zweiten Frage: Du kannst doch überprüfen, was dir Ubound() zurückgibt. Immerhin bekommst du dadurch die Größe des Arrays zurück. Alle Elemente von 0 bis Ubound() - 1 existieren.)

    Der Fehler ensteht, da du versuchst auf ein Arrayelement zuzugreifen, das nicht existiert. Beispielsweise hast du einen Array mit 5 möglichen einträgen, und versuchst an Position 6 einen Eintrag zu erstellen.


    $aOSInfo[$i][0] = ...


    Du nutzt zwar ReDim, aber anscheinend nicht korrekt.
    - Wo ist $i definiert?
    - Ist $i wirklich zu jeder Zeit kleiner als Ubound($aOSInfo) ?
    - Ist $i größer als 0?

    So zum Beispiel.

    Hab gehört das es vll über gdi+ geht da ich mich damit aber nich wirklich auskenn und auch keine tutorials etc gefunden hab


    Ich könnte dir jetzt auf Anhieb 2 Stück zeigen.
    Eins von mir, und eines von Ubuntu - und beide findest du mit weniger als einer Minute googlen.


    kann ich wenn ich in meiner gui n eingebetteten IE hab da noch n button auf die seite mit dazu anzeigen lassen.


    Zum Beispiel so: