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. BugFix

Beiträge von BugFix

  • Suche einfach erweiterbaren Einstellungen-Dialog (Program Settings)

    • BugFix
    • 12. August 2020 um 13:31
    Zitat von Professor Bernd

    Einige Teile sind leicht zu färben, aber den großen Hauptbereich konnte ich bisher nicht färben. Hast du eine Idee, wie man das machen könnte?

    Muss ich nachsehen, wenn ich zu Hause bin. Bei mir wird alles eingefärbt.

  • Suche einfach erweiterbaren Einstellungen-Dialog (Program Settings)

    • BugFix
    • 10. August 2020 um 21:51

    Bin gerade nicht am PC, aber suche mal im EN Forum nach "TreeviewTab".

  • Suche einfach erweiterbaren Einstellungen-Dialog (Program Settings)

    • BugFix
    • 10. August 2020 um 21:03

    Wenn es nicht fix sein soll, ist die einfachste Lösung ein Treeview mit Checkboxen.

    Kannst du jederzeit beliebig verändern.

  • wNim Version 0.11.2 und Treeview

    • BugFix
    • 9. August 2020 um 14:25
    Zitat von Oscar

    Die Prozedur "getItem" liefert nicht mehr das Item zurück, sondern immer nil.

    Hmm, hab mal nachgesehen, die Methode gibt es in den Events nicht mehr. Allgemein ist sie nur vordefiniert, da sie von den verschiedenen Modulen jeweils überschrieben wird. Mal schauen, wie man das lösen kann.

  • wNim Version 0.11.2 und Treeview

    • BugFix
    • 9. August 2020 um 13:08

    Erste Resultate:

    - Das neue EventManagement ist nur relevant für selbst definierte Events. Hier also nicht von Interesse, da StandardEvents Verwendung finden.

    - Die Events funktionieren tadellos.

    - Das Problem ist deine Prozedur getTree(). An irgendeiner Stelle tritt ein Fehler mit möglichem nil auf. M.M. nach ist der Parameter item der Verursacher. Bisher konnte ich die Prozedur noch nicht ans Laufen bringen - aber ich probiere weiter.

    EDIT:

    Verursacher ist: tree. Beim Aufruf von tree.getRootItem crasht die Funktion, weil tree nil ist.

    Demzufolge ist bereits der Aufruf von tvItem.getTreeCtrl  innerhalb der Events nicht erfolgreich. Deshalb sah es auch so aus, als seien diese die Schuldigen.

  • wNim Version 0.11.2 und Treeview

    • BugFix
    • 9. August 2020 um 12:21

    Habe mal getestet. Also ich bekomme auch nicht ein einziges Event mehr zum reagieren.

    Was ich im Bsp. wHyperlink erst übersehen hatte ist folgendes:

    Code
          if self.mIsMouseHover and isPressed:
            if self.mUrl.len != 0:
              # provide a chance let the user to veto the action.
              let event = Event(window=self, msg=wEvent_OpenUrl)
              if not self.processEvent(event) or event.isAllowed:
                ShellExecute(0, "open", self.mUrl, nil, nil, SW_SHOW)
            self.mIsVisited = true

    Mit Event() und Übergabe der Msg wird eine Variable instanziert. Aber deren Anwendung ist mir schleierhaft.

    Wenn man wenigstens einen Sinn in diesem neuen EventManagement erkennen könnte. Der Satz aus dem changelog.md:

    Zitat


    All dies bedeutet, dass die GUI-Controls und ihr Ereignis leichter als Plugin-Modul entworfen werden können

    klingt momentan für mich etwas höhnisch.

    Momentan bin ich beim Status: "Event Verarbeitung ist nicht mehr möglich".

  • wNim Version 0.11.2 und Treeview

    • BugFix
    • 9. August 2020 um 10:33
    Zitat von Oscar

    Irgendwie will das bei mir nicht funktionieren oder ich bin zu blöd dafür.

    Wenn ich das so ändere, passiert beim anklicken der Items gar nichts:

    Ich hatte das bisher nur theoretisch betrachtet, da ich noch bei wNim v0.10.2 bin.

    Wollte gerade updaten, um das Bsp. mal selbst zu erstellen - aber ich kann (warum auch immer) nicht updaten:

    nimble update wnim  --->  Error: Package list with the specified name not found.

    Muss ich erst mal auf Fehlersuche gehen. X/

    EDIT:

    Habe die Version jetzt einfach mit der Git-Adresse installiert. Nun mach ich mich mal an die Events.

  • wNim Version 0.11.2 und Treeview

    • BugFix
    • 8. August 2020 um 23:49
    Zitat von Oscar

    Aber ich verstehe nicht, wie ich das jetzt auf das neue System umstellen soll.

    Hat jemand eine Idee?

    Im Bsp. wHyperlink.nim ist das recht gut gezeigt.

    Code
    # Define ourself event type, wCommandEvent-derived event by default propagate upward
    type
      wMyLinkEvent = ref object of wCommandEvent
    
    # Use wEventRegister macro to define the event message
    wEventRegister(wMyLinkEvent):
      wEvent_OpenUrl
    
    ...
    ...
    
    # wEvent_OpenUrl will propagate upward, so we can catch it from it's parent window.
    panel.wEvent_OpenUrl do (event: wEvent):
      if not event.ctrlDown:
        event.veto
        statusBar.setStatusText("press ctrl key and then click to open the url.")
    Alles anzeigen
  • Achtung! Bug in wNim/wImageList

    • BugFix
    • 5. August 2020 um 19:36
    Zitat von BugFix

    Ich erledige das heute abend, wenn ich im Hotel bin.

    Getan: https://github.com/khchen/wNim/issues/64

  • Achtung! Bug in wNim/wImageList

    • BugFix
    • 5. August 2020 um 15:56
    Zitat von Oscar

    Nein, mein englisch ist zu schlecht dafür.

    Ich erledige das heute abend, wenn ich im Hotel bin.

  • Achtung! Bug in wNim/wImageList

    • BugFix
    • 5. August 2020 um 12:23

    Hast du auch auf GitHub beim Autor ein Issue gemeldet? Er reagiert recht zügig.

  • Wie FileIconInit aufrufen?

    • BugFix
    • 2. August 2020 um 19:17
    Zitat von Oscar

    So scheint es jetzt zu funktionieren:

    Vielleicht praktischerweise gleich "einpacken" in eine Funktion (wenn du den Grafikoverhead nicht möchtest, reicht es "winim/lean" einzubinden).:

    Code
    import winim/lean
    
    proc Call_FileIconInit(): WINBOOL =
      type fii = proc(fRestoreCache: WINBOOL): WINBOOL {.gcsafe, stdcall.}
      let
        shell32 = LoadLibrary("shell32.dll")
        pAddr = GetProcAddress(shell32, cast[LPCSTR](660))
      if IsBadCodePtr(pAddr):
        return FALSE
      else:
        let FileIconInit = cast[fii](pAddr)
        return FileIconInit(TRUE)
    Alles anzeigen
  • Wie FileIconInit aufrufen?

    • BugFix
    • 2. August 2020 um 15:43
    Zitat von Oscar

    Aber wie geht das in Nim?

    Probier mal

    Code
    include winim/[inc\winuser]
    
    let 
      dll = newWideCString("shell32.dll", 11)
      shell32 = LoadLibrary(cast[LPCWSTR](dll))
      dllIndex = "660"
      dllIndexLPCSTR =cast[LPCSTR](newWideCString(dllIndex, dllIndex.len))
      
    let FileIconInit = GetProcAddress(shell32, dllIndexLPCSTR)

    Interessanter Link: http://www.catch22.net/tuts/win32/system-image-list#

  • Online Übersetzung mit DeepL

    • BugFix
    • 29. Juli 2020 um 13:57

    Ich hatte bereits die erste Variante dieses Skriptes im Hilfe-Übersetzung-Thread geposted.

    In der Version war nur ANSI-Text übersetzbar. Ich habe das jetzt angepasst, damit auch UTF8 übersetzt werden kann.

    DeepL fügt den zu übersetzenden Text mit in die Adresszeile ein, somit ist es möglich den Text vorab aufzubereiten und die Seite mit Text aufzurufen. Der Text wird jedoch nicht nach URL Regeln maskiert, sondern nach einem eigenen System der Website, welches ich auf den Text im Skript anwende.

    Zur Anwendung:

    • Skript an einen (globalen) Hotkey eurer Wahl binden (für Maus-Freunde geht natürlich auch ein Button auf der Schnellstartleiste 8o)
    • zu übersetzenden Text markieren und in die Zwischenablage kopieren
    • Hotkey aufrufen (oder Button klicken)
    • Website (DeepL) öffnet sich mit eurem Text und der Übersetzung
    • von der Webseite (ggf. noch händisch korrigiert) über den Copy-Button die Übersetzung holen

    In der Standardeinstellung wird von Englisch nach Deutsch übersetzt.

    Man kann durch Parameteraufruf des Skriptes die Von/Zu-Spracheinstellungen ändern:

    Bsp.:

    • DeepLConvert.exe switch Die Standardsprachen werden bei Von/Zu getauscht auf: Deutsch zu Englisch.
    • DeepLConvert.exe to_sp Die Von-Sprache bleibt Englisch, nur die Zu-Sprache wechselt - hier zu Spanisch. (Suffix "to_" & Sprache)
    • DeepLConvert.exe nl Die Zu-Sprache bleibt Deutsch, nur die Von-Sprache wechselt - hier auf: von-Niederländisch.
    • DeepLConvert.exe pt it Von- und Zu-Sprache wechseln - hier von Portugiesisch zu Italienisch.
    AutoIt: DeepLConvert.au3
    ;-- TIME_STAMP   2020-07-29 13:56:30
    
    Opt('MustDeclareVars', 1)
    
    #cs Liste zu maskierender Zeichen
    Zeichen  Ascii  DeepL-Zeichen
      ' '     32       '%20'
      '#'     35       '%23'
      '$'     36       '%24'
      '%'     37       '%25'
      '&'     38       '%26'
      '+'     43       '%2B'
      ','     44       '%2C'
      '/'     47       '%5C%2F'
      ':'     58       '%3A'
      ';'     59       '%3B'
      '='     61       '%3D'
      '?'     63       '%3F'
      '['     91       '%5B'
      '\'     92       '%5C%5C'
      ']'     93       '%5D'
      '^'     94       '%5E'
      '`'     96       '%60'
      '{'    123       '%7B'
      '|'    124       '%5C%7C'
      '}'    125       '%7D'
    #ce
    
    #cs Verfügbare Sprachen
      de    Deutsch
      en    Englisch
      fr    Französisch
      sp    Spanisch
      pt    Portugiesisch
      it    Italienisch
      nl    Niederländisch
      pl    Polnisch
      ru    Russisch
      ja    Japanisch
      zh    Chinesisch
     #ce
    
    Global $LangFrom = "en"
    Global $LangTo   = "de"
    Global $sConvert = _DeepL_Convert(ClipGet())
    Global $sCmd     = "https://www.deepl.com/translator#"
    
    Switch $CMDLINE[0]
        Case 0 ; Standard: EN-->>DE
            ; nichts
        Case 1
            If $CMDLINE[1] = "switch" Then ; Wechsel zwischen From/To, aber Standardsprachen bleiben
                $LangFrom = "de"
                $LangTo   = "en"
            ElseIf StringLeft($CMDLINE[1], 2) = "to" Then  ; From bleibt EN, nur To wird gesetzt
                $LangTo = StringTrimLeft($CMDLINE[1], 3) ; Param übergeben als: "to_" & Language
            Else ; anderer Parameter für "From" übergeben, "To" bleibt "DE"
                $LangFrom = $CMDLINE[1]
            EndIf
        Case 2   ; sowohl From als auch To erhalten andere Sprache zugewiesen
            $LangFrom = $CMDLINE[1]
            $LangTo   = $CMDLINE[2]
    EndSwitch
    
    ; sicher gehen, dass Sprachkürzel als Kleinbuchstaben verwendet werden
    $LangFrom = StringLower($LangFrom)
    $LangTo = StringLower($LangTo)
    
    ; Befehl zum Aufruf der Website bilden
    $sCmd &= StringFormat("%s/%s/%s", $LangFrom, $LangTo, $sConvert)
    
    ; Seitenaufruf
    ShellExecute($sCmd)
    
    
    Func _DeepL_Convert($s)
        ; Annehmen, dass $s UTF8 ist und in ANSI wandeln (falls $s ASCII/ANSI ist, schadet es nicht)
        Local $sAnsi = BinaryToString(StringToBinary($s, 4), 1)
        Local $aData = StringSplit($sAnsi, "")
        Local $sRet = '', $asc
        For $i = 1 To $aData[0]
            $asc = Asc($aData[$i])
            Switch $asc
                Case 32, 35 To 38, 43, 44, 58, 59, 61, 63, 91, 93, 94, 96, 123, 125
                    $sRet &= '%' & Hex($asc,2)
                Case 47, 92, 124
                    $sRet &= '%5C%' & Hex($asc,2)
                Case Else
                    $sRet &= $aData[$i]
            EndSwitch
        Next
        ; wieder von ANSI in UTF8 wandeln
        Return BinaryToString(StringToBinary($sRet, 1), 4)
    EndFunc
    Alles anzeigen

    Dateien

    DeepLConvert.au3 2,53 kB – 373 Downloads
  • Deutsche Hilfe auf 3.3.14.5 updaten - mitmachen

    • BugFix
    • 28. Juli 2020 um 13:53

    Vielleicht kann man ja mit einem kleinen Tool zur Mithilfe animieren. ;)

    Das folgende Skript kompilieren und an einen Hotkey eurer Wahl binden.

    Anwendung:

    • zu übersetzenden Text markieren und in die Zwischenablage einfügen
    • Hotkey aufrufen
    • Website (DeepL) öffnet sich mit eurem Text und der Übersetzung
    • von der Webseite (ggf. noch händisch korrigiert) über den Copy-Button die Übersetzung holen
    • Einfügen >> Fertig!

    Grundsätzlich braucht auf DeepL nicht angegeben werden, welche Ausgangssprache übergeben wird (automatische Erkennung). Ich habe EN-DE als Voreinstellung. Mit dem Tool kann aber über Parameteraufruf festgelegt werden, falls andere Sprachen Verwendung finden sollen. Ist aus dem Code ersichtlich, wie die Parameter zu nutzen sind.

    Da DeepL eine von üblicher url Maskierung abweichende Schreibweise verwendet, wird das im Skript konvertiert.

    EDIT

    Da hatte ich doch noch im Parameterblock einen Fehler. Bitte korrigieren - ich habs markiert.

    EDIT 2:

    Ich habe die aktuelle Version eingefügt.

    AutoIt
    ;-- TIME_STAMP   2020-07-29 13:56:30
    
    Opt('MustDeclareVars', 1)
    
    #cs Liste zu maskierender Zeichen
    Zeichen  Ascii  DeepL-Zeichen
      ' '     32       '%20'
      '#'     35       '%23'
      '$'     36       '%24'
      '%'     37       '%25'
      '&'     38       '%26'
      '+'     43       '%2B'
      ','     44       '%2C'
      '/'     47       '%5C%2F'
      ':'     58       '%3A'
      ';'     59       '%3B'
      '='     61       '%3D'
      '?'     63       '%3F'
      '['     91       '%5B'
      '\'     92       '%5C%5C'
      ']'     93       '%5D'
      '^'     94       '%5E'
      '`'     96       '%60'
      '{'    123       '%7B'
      '|'    124       '%5C%7C'
      '}'    125       '%7D'
    #ce
    
    #cs Verfügbare Sprachen
      de    Deutsch
      en    Englisch
      fr    Französisch
      sp    Spanisch
      pt    Portugiesisch
      it    Italienisch
      nl    Niederländisch
      pl    Polnisch
      ru    Russisch
      ja    Japanisch
      zh    Chinesisch
     #ce
    
    Global $LangFrom = "en"
    Global $LangTo   = "de"
    Global $sConvert = _DeepL_Convert(ClipGet())
    Global $sCmd     = "https://www.deepl.com/translator#"
    
    Switch $CMDLINE[0]
        Case 0 ; Standard: EN-->>DE
            ; nichts
        Case 1
            If $CMDLINE[1] = "switch" Then ; Wechsel zwischen From/To, aber Standardsprachen bleiben
                $LangFrom = "de"
                $LangTo   = "en"
            ElseIf StringLeft($CMDLINE[1], 2) = "to" Then  ; From bleibt EN, nur To wird gesetzt
                $LangTo = StringTrimLeft($CMDLINE[1], 3) ; Param übergeben als: "to_" & Language
            Else ; anderer Parameter für "From" übergeben, "To" bleibt "DE"
                $LangFrom = $CMDLINE[1]
            EndIf
        Case 2   ; sowohl From als auch To erhalten andere Sprache zugewiesen
            $LangFrom = $CMDLINE[1]
            $LangTo   = $CMDLINE[2]
    EndSwitch
    
    ; sicher gehen, dass Sprachkürzel als Kleinbuchstaben verwendet werden
    $LangFrom = StringLower($LangFrom)
    $LangTo = StringLower($LangTo)
    
    ; Befehl zum Aufruf der Website bilden
    $sCmd &= StringFormat("%s/%s/%s", $LangFrom, $LangTo, $sConvert)
    
    ; Seitenaufruf
    ShellExecute($sCmd)
    
    
    Func _DeepL_Convert($s)
        ; Annehmen, dass $s UTF8 ist und in ANSI wandeln (falls $s ASCII/ANSI ist, schadet es nicht)
        Local $sAnsi = BinaryToString(StringToBinary($s, 4), 1)
        Local $aData = StringSplit($sAnsi, "")
        Local $sRet = '', $asc
        For $i = 1 To $aData[0]
            $asc = Asc($aData[$i])
            Switch $asc
                Case 32, 35 To 38, 43, 44, 58, 59, 61, 63, 91, 93, 94, 96, 123, 125
                    $sRet &= '%' & Hex($asc,2)
                Case 47, 92, 124
                    $sRet &= '%5C%' & Hex($asc,2)
                Case Else
                    $sRet &= $aData[$i]
            EndSwitch
        Next
        ; wieder von ANSI in UTF8 wandeln
        Return BinaryToString(StringToBinary($sRet, 1), 4)
    EndFunc
    Alles anzeigen

    Tweaky Du kannst ja in deinem Startpost hierauf verlinken.

    Dateien

    DeepLConvert.au3 2,53 kB – 517 Downloads
  • Deutsche Hilfe auf 3.3.14.5 updaten - mitmachen

    • BugFix
    • 28. Juli 2020 um 10:30
    Zitat von Tweaky

    Neue Dateien 08

    Erledigt.

    @Alle - vor allem auch an Anfänger:

    Kaum etwas bietet einen größeren Lerneffekt als eine Übersetzung:

    - Man muss jedes Wort lesen

    - Man muss jedes Wort verstehen

    - Man lernt eine Vielzahl von Funktionen kennen, deren Existenz einem sonst u.U. verborgen bleibt.

    Das Übersetzen ist kein Hexenwerk. Es gibt außer Google auch noch höherwertige Übersetzungsseiten (https://www.deepl.com/translator). Und wenn dann noch Unsicherheiten sind, kann man den Part ja markieren und hier posten mit der Bitte, dass noch jemand anders drauf schaut.

    Unabhängig davon, dass ich selbst die deutsche Hilfe nicht nutze, halte ich sie dennoch für sinnvoll und möchte somit eine Lanze dafür brechen, dass sich der Eine oder Andere doch mal ein paar Minuten nimmt für diese (zugegeben oft etwas trockene) Fleißarbeit.

    Übrigens, was den Zeitaufwand angeht: Für die Übersetzung des hier geposteten Parts habe ich ca. 20 Minuten benötigt. (Die meiste Zeit geht fürs Entpacken/Packen drauf :D).

    Dateien

    _WinAPI_CLSIDFromProgID 3_3_14_5.zip 594 Byte – 563 Downloads _WinAPI_CoInitialize 3_3_14_5.zip 650 Byte – 577 Downloads _WinAPI_CoTaskMemAlloc 3_3_14_5.zip 676 Byte – 569 Downloads _WinAPI_CoTaskMemFree 3_3_14_5.zip 457 Byte – 580 Downloads _WinAPI_CoTaskMemRealloc 3_3_14_5.zip 799 Byte – 578 Downloads _WinAPI_CoUninitialize 3_3_14_5.zip 418 Byte – 557 Downloads _WinAPI_CreateStreamOnHGlobal 3_3_14_5.zip 7,33 kB – 563 Downloads _WinAPI_GetHGlobalFromStream 3_3_14_5.zip 709 Byte – 588 Downloads _WinAPI_ProgIDFromCLSID 3_3_14_5.zip 592 Byte – 599 Downloads _WinAPI_ReleaseStream 3_3_14_5.zip 595 Byte – 532 Downloads
  • Deutsche Hilfe auf 3.3.14.5 updaten - mitmachen

    • BugFix
    • 27. Juli 2020 um 22:13
    Zitat von Tweaky

    Neue Dateien 08

    Neue Dateien 09

    Neue Dateien 10

    OK, habe mir das mal reserviert.

  • Deutsche Hilfe auf 3.3.14.5 updaten - mitmachen

    • BugFix
    • 27. Juli 2020 um 21:17
    Zitat von Tweaky

    Was meinst du mit "COM bis Error zusammenpacken"

    Wenn du in die Hilfe schaust, sind Untergliederungen bei WinAPI mit COM beginnend (Ordnername).

    Und alles, was bis inkl. Error-Ordner ist würde ich erst mal nehmen.

  • Deutsche Hilfe auf 3.3.14.5 updaten - mitmachen

    • BugFix
    • 27. Juli 2020 um 19:15
    Zitat von Tweaky

    Falls du eine bestimmte Funktion bzw. Beispiel übersetzen willst, welches ich nicht hochgeladen habe, einfach melden.

    Ja, reich mal einen Block WinAPI rüber. Kannst ja erst mal alle Funktionen von COM bis Error zusammenpacken.

  • Deutsche Hilfe auf 3.3.14.5 updaten - mitmachen

    • BugFix
    • 27. Juli 2020 um 18:49
    Zitat von Tweaky

    Bei "DllStructGetPtr" habe ich deine Anmerkugnen gelesen und verstanden. In der au3-Datei ist das Beispiel jedoch nicht mehr vorhanden. Kannst du eis noch ergänzen?

    Ooops, da hatte es bei mir einen falschen Verweis im Dateisystem gegeben - eine Premiere. Da habe ich glatt die Configdatei meines FTP-Clients geladen.

    Aber den anderen 2 Usern, die die Datei auch heruntergeladen haben kann ich mitteilen: Keine der dort gespeicherten Zugangsdaten ist gültig. :P

    Ich hänge das Bsp. nochmal an.

    Zitat von Tweaky

    Schön, dass du deinen 10.000 Post für die Deutsche Hilfe aufgehoben hast :D

    Selbstredend, dauernd habe ich auf den Counter geschielt und gewartet, dass ich endlich eine Übersetzung posten kann. :rofl:


    EDIT:

    GuiGetMsg hatte ich vergessen anzuhängen

    Dateien

    DllStructGetPtr.zip 1,13 kB – 635 Downloads GUIGetMsg.zip 875 Byte – 598 Downloads

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™