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

  • String umformen

    • BugFix
    • 10. Januar 2015 um 10:06
    Zitat von nuts

    BugFix : Wie suche ich denn nach sowas im Forum?


    z.B. so

  • String umformen

    • BugFix
    • 9. Januar 2015 um 22:55
    Zitat von nuts

    Dazu müsste ich alles zwischen ">" und "</" kriegen.


    Dafür findest du sogar fertige Funktionen hier im Forum... :whistling:

  • Ein zwei Feinschliffe bezüglich Word

    • BugFix
    • 8. Januar 2015 um 22:10
    Zitat von water

    Doc oder Docx änder nichts am Objeckt Modell.


    Trotzdem ist es verwunderlich, dass die von mir gepostete Funktion in Office 2000 tadellos funktioniert und in einer neueren Version nicht.

  • Ein zwei Feinschliffe bezüglich Word

    • BugFix
    • 8. Januar 2015 um 20:55

    Ich habe da eine Vermutung. Ich verwende ja noch "echtes" Office. Du hast ja das docx- Gedöns. Ich glaube mich zu erinnern, dass die Formatierung dort per xml geregelt wird (deshalb das x). Wäre also nicht verwunderlich, wenn sich dadurch auch der Objektzugriff geändert hat. Aber, wie gesagt, nur eine Vermutung.

  • Ein zwei Feinschliffe bezüglich Word

    • BugFix
    • 6. Januar 2015 um 19:33

    OK, habs dir gebastelt.

    Spoiler anzeigen
    [autoit]

    Func _WordDoc_FooterSetAutoText($sPath, $sAutoText="Seite X von Y", $iAlign=2, $fVisible=0, $fSave=1, $fQuit=1) ; iAlign: 0=links, 1=center, 2=rechts
    If not FileExists($sPath) Then Return SetError(1,0,0)
    If $fQuit = 1 Then $fSave = 1
    Local Const $wdHeaderFooterPrimary = 1
    Local $oWord, $fCreated = 0
    $oWord = ObjGet($sPath, "Word.Application")
    If @error Then
    $oWord = ObjCreate("Word.Application")
    $fCreated = 1
    EndIf
    $oWord.Visible = $fVisible
    If $fCreated Then $oWord.Documents.Open($sPath)
    Local $Footers = $oWord.ActiveDocument.Sections(1).Footers($wdHeaderFooterPrimary)
    $Footers.Range.Delete
    $Footers.Range.Select
    With $oWord.Application.Selection
    $oWord.NormalTemplate.AutoTextEntries($sAutoText).Insert(.Range, True)
    .ParagraphFormat.Alignment = $iAlign
    EndWith
    $oWord.Application.DisplayAlerts = False
    If $fSave Then $oWord.ActiveDocument.Save
    If $fQuit Then $oWord.Quit
    Return
    EndFunc

    [/autoit]
  • Ein zwei Feinschliffe bezüglich Word

    • BugFix
    • 6. Januar 2015 um 17:21
    Zitat von Time2Snowball

    Das größte Problem habe ich mit dem Footer


    Dafür hatte ich vor einiger Zeit mal eine Funktion erstellt.

    Spoiler anzeigen
    [autoit]

    ;===============================================================================
    ; Function Name....: _WordDoc_FooterChange
    ; Description......: Ändert in einem Worddokument die Fußzeile
    ; Parameter(s).....: $sPath Pfad zum Word Dokument
    ; $sFooterNew Die neue Fußzeile
    ; optional $fVisible Wordfenster sichtbar, Standard=0 (Nein)
    ; optional $fSave Speichern der Änderung? Standard=1 (Ja)
    ; optional $fQuit Word beenden? Standard=0 (Nein), mit "1" wird auch $fSave=1 gesetzt
    ; Return Value(s)..: Erfolg Den alten Inhalt der Fußzeile
    ; Fehler @error = 1 - Dateipfad existiert nicht
    ; Note.............: Falls Word bereits geöffnet ist, wird in dieser Instanz gearbeitet, anderenfalls wird eine neue Instanz erstellt.
    ; Author(s)........: BugFix ( [email='bugfix@autoit.de'][/email] )
    ;===============================================================================
    Func _WordDoc_FooterChange($sPath, $sFooterNew, $fVisible=0, $fSave=1, $fQuit=0)
    If not FileExists($sPath) Then Return SetError(1,0,0)
    If $fQuit = 1 Then $fSave = 1
    Local Const $wdHeaderFooterPrimary = 1
    Local $sFooterOld, $oWord, $fCreated = 0
    $oWord = ObjGet($sPath, "Word.Application")
    If @error Then
    $oWord = ObjCreate("Word.Application")
    $fCreated = 1
    EndIf
    $oWord.Visible = $fVisible
    If $fCreated Then $oWord.Documents.Open($sPath)
    $sFooterOld = $oWord.ActiveDocument.Sections(1).Footers($wdHeaderFooterPrimary).Range.Text
    $oWord.ActiveDocument.Sections(1).Footers($wdHeaderFooterPrimary).Range.Text = $sFooterNew
    $oWord.Application.DisplayAlerts = False
    If $fSave Then $oWord.ActiveDocument.Save
    If $fQuit Then $oWord.Quit
    Return $sFooterOld
    EndFunc ;==>_WordDoc_FooterChange

    [/autoit]
  • Kontaktlinsen ade :(

    • BugFix
    • 6. Januar 2015 um 14:28
    Zitat von General Kaboom

    ich würde wirklich gerne mal eine Frau mit einem Monokel sehen


    Kein Problem, hier ein Foto vom berühmten Fotografen Helmut Newton. (Die Dame trägt übrigens nur Monokel :whistling: )

  • AutoIt Error: Unable to open the script file

    • BugFix
    • 6. Januar 2015 um 12:30
    Zitat von hYrsch

    wenn ihr da einen besonderen Favoriten habt.


    Da wirst du von 10 Leuten auch 10 verschiedene Antworten bekommen. :D
    Ich verwende Comodo Internet Security.

  • AutoIt Error: Unable to open the script file

    • BugFix
    • 6. Januar 2015 um 12:23

    Ausnahmen eingetragen, wie in der Hilfe beschrieben?

    Zitat

    Ausnahmen
    Hier können Sie festlegen, welche Dateien oder Bereiche nicht überprüft werden sollen. Bitte beachten Sie, dass diese Einstellung nur für manuelle und geplante Prüfungen, aber nicht für andere Schutzmodule gilt.

    Möchten Sie die Dateien auch von weiteren avast! Schutzmodulen ausschließen, inkl. manueller und geplanter Prüfungen, sollten Sie diese Dateien oder Bereiche in den Einstellungen festlegen.

    Möchten Sie eine bestimmte Datei oder einen Bereich ausschließen, klicken Sie auf <Pfad eingeben> und tragen Sie den Datei- oder Bereichsnamen ein, oder markieren Sie das Kontrollkästchen neben der ausgeschlossenen Datei und bestätigen Sie mit “Ok”.

    Möchten Sie ein Verzeichnis mitsamt seinen Unterverzeichnissen ausschließen, fügen Sie “\*” am Ende des Verzeichnisnamens ein, z.B. C:\Windows\*.

  • Berechnung von Verkaufsgebühren

    • BugFix
    • 5. Januar 2015 um 18:49
    Zitat von Alina

    Ergebisstechnisch irgendwo ein Unterschied???


    Na aber sicher!
    Round() rundet (richtig) und StringFormat verwendet Int().

    [autoit]

    $i = 3.155
    ConsoleWrite(Round($i,2) & @LF)
    ConsoleWrite(StringFormat('%0.2f', $i) & @LF)

    [/autoit]

    Output:

    Code
    3.16
    3.15
  • Berechnung von Verkaufsgebühren

    • BugFix
    • 4. Januar 2015 um 22:49

    Was macht ihr denn für Verrenkungen zum Runden? Round und fertig ist die Laube.

  • ComboBox "durchsuchen"

    • BugFix
    • 2. Januar 2015 um 20:00
    Zitat von Raupi

    Wäre aber für sein Vorhaben nicht ohne Anpassung zu benutzen


    Schon klar ^^ - sollte ja auch keine Aktion "Sonne - Arm" werden. :rofl:

  • Kontaktlinsen ade :(

    • BugFix
    • 2. Januar 2015 um 19:27

    He,
    heutzutage sind Brillen doch weniger Sehhilfe als modisches Accessoire. Das bessere Sehen bekommst du zum modischen Chick dazu. :D

    Ich persönlich würde freiwillig niemals Kontaktlinsen tragen, bin mit Brille sehr zufrieden. :thumbup:

  • ComboBox "durchsuchen"

    • BugFix
    • 2. Januar 2015 um 19:19

    Guckst du hier: wirkliche Suchfunktion für ComboBox

  • Alle Ordner in einer Inputbox anzeigen lassen

    • BugFix
    • 2. Januar 2015 um 19:15
    Zitat von Sirius

    Eigentlich brauche ich genau diese Box


    Na und was ist an dieser Box sooo anders im Vergleich zu der mit GUICtrlCreateCombo erstellten? :huh:
    Falls du ein Handle benötigst, bekommst du das ebenso von der Box-ID (GuiCtrlGetHandle) und kannst mit diesem Handle dann die Funktionen der ..Ex ebenso nutzen.

    Aber ich habe doch auch beschrieben WIE es mit der ..Ex machbar ist:

    Zitat

    dann musst du die Combo verstecken, wenn nicht das dazugehörige Tabsheet aktiv ist.

  • Alle Ordner in einer Inputbox anzeigen lassen

    • BugFix
    • 2. Januar 2015 um 09:49
    Zitat von Sirius

    und möchte die Combobox nur auf dem ersten Tab angezeigt bekommen.


    Die ..ComboBoxEx-Funtion erzeugt keine ID und passt somit nicht in die Struktur des Tab-Ctrl. Wenn du unbedingt mit dieser Funktion arbeiten willst (warum benutzt du nicht GUICtrlCreateCombo? ) , dann musst du die Combo verstecken, wenn nicht das dazugehörige Tabsheet aktiv ist.

  • SQLite GUID wird immer als HEX Wert ausgegeben...

    • BugFix
    • 30. Dezember 2014 um 20:40

    Funktioniert bei mir tadellos:

    Spoiler anzeigen
    [autoit]

    #include <SQLite.au3>

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

    _SQLite_Startup()

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

    Local $hSQL = _SQLite_Open()
    Local $sCreate = _
    "CREATE TABLE [test] (" & _
    "[id] INTEGER PRIMARY KEY NOT NULL," & _
    "[uid] TEXT);"
    _SQLite_Exec($hSQL, $sCreate)

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

    Local $sInsert = _
    "INSERT INTO test VALUES (1, '37DD9D24-9A85-4E5B-BBBF-D8C283C1E144');" & _
    "INSERT INTO test VALUES (2, '37DD9D24-9A85-4E5B-BBBF-D8C283C1E145');" & _
    "INSERT INTO test VALUES (3, '37DD9D24-9A85-4E5B-BBBF-D8C283C1E146');" & _
    "INSERT INTO test VALUES (4, '37DD9D24-9A85-4E5B-BBBF-D8C283C1E147');" & _
    "INSERT INTO test VALUES (5, '37DD9D24-9A85-4E5B-BBBF-D8C283C1E148');"
    _SQLite_Exec($hSQL, $sInsert)

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

    Local $aRow, $hQuery, $sMsg
    Local $strSelect = "SELECT * FROM test;"

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

    _SQlite_Query ($hSQL, $strSelect, $hQuery)

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

    While _SQLite_FetchData ( $hQuery, $aRow ) = $SQLITE_OK
    For $i = 0 To UBound($aRow) -1
    $sMsg &= $aRow[$i] & @TAB
    Next
    $sMsg &= @LF
    WEnd

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

    ConsoleWrite($sMsg & @CRLF)

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

    _SQLite_Close()
    _SQLite_Shutdown()

    [/autoit]


    Output:

    Code
    1    37DD9D24-9A85-4E5B-BBBF-D8C283C1E144    
    2    37DD9D24-9A85-4E5B-BBBF-D8C283C1E145    
    3    37DD9D24-9A85-4E5B-BBBF-D8C283C1E146    
    4    37DD9D24-9A85-4E5B-BBBF-D8C283C1E147    
    5    37DD9D24-9A85-4E5B-BBBF-D8C283C1E148
  • Alle Ordner in einer Inputbox anzeigen lassen

    • BugFix
    • 30. Dezember 2014 um 18:48
    Zitat von Sirius

    gerne in einer InputBox alle Ordner


    Hier mal für ein Input (sinnvoll?).

    Spoiler anzeigen
    [autoit]

    #include <File.au3>
    #include <EditConstants.au3>

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

    Global $sPath, $aFolder, $index

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

    $hGui = GUICreate('Ordner', 414, 70)
    $inRoot = GUICtrlCreateInput('', 10, 10, 350, 20)
    GUICtrlSendMsg($inRoot, 0x1501, 0, "Bitte Ordner auswählen")
    $btSelect = GUICtrlCreateButton('...', 384, 10, 20, 20)
    $inFolder = GUICtrlCreateInput('', 10, 40, 350, 20, $ES_READONLY)
    GUICtrlSetBkColor(-1, 0xFFFFFF)
    $btPrev = GUICtrlCreateButton('<', 362, 40, 20, 20)
    $btNext = GUICtrlCreateButton('>', 384, 40, 20, 20)
    ControlFocus($hGui, '', $btSelect)

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

    GUISetState()

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

    While 1
    Switch GUIGetMsg()
    Case -3
    Exit
    Case $btSelect
    $sPath = FileSelectFolder('Bitte einen Ordner auswählen', '')
    If Not @error Then _ReadFolders($sPath)
    Case $btPrev
    _ShowPrevious()
    Case $btNext
    _ShowNext()
    EndSwitch
    WEnd

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

    Func _ReadFolders($path)
    $aFolder = _FileListToArray($path, '*', 2)
    GUICtrlSetData($inRoot, $path)
    If Not IsArray($aFolder) Then
    GUICtrlSetData($inFolder, 'Keine Unterordner!')
    Return WinSetTitle($hGui, '', '[ 0 von 0 ]')
    EndIf
    $index = 1
    GUICtrlSetData($inFolder, $aFolder[$index])
    WinSetTitle($hGui, '', '[ 1 von ' & $aFolder[0] & ' ]')
    EndFunc

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

    Func _ShowPrevious()
    If $index = 1 Then Return
    $index -= 1
    GUICtrlSetData($inFolder, $aFolder[$index])
    WinSetTitle($hGui, '', '[ ' & $index & ' von ' & $aFolder[0] & ' ]')
    EndFunc

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

    Func _ShowNext()
    If $index = $aFolder[0] Then Return
    $index += 1
    GUICtrlSetData($inFolder, $aFolder[$index])
    WinSetTitle($hGui, '', '[ ' & $index & ' von ' & $aFolder[0] & ' ]')
    EndFunc

    [/autoit]


    Nun kannst du dich mal selbst an der Combo versuchen.

  • Eingabefelder per Mausklick aktivieren

    • BugFix
    • 30. Dezember 2014 um 10:46

    Hier mal aus meinem Muster-Fundus, wie man die Bewegung mit Enter zum nächsten Control auch lösen kann.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WinAPI.au3>
    #include <WindowsConstants.au3>
    #include <StructureConstants.au3>
    #include <Array.au3>
    Opt("GUIOnEventMode", 1)
    OnAutoItExitRegister('OnAutoItExit')

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

    Global $hStub_KeyProc = DllCallbackRegister("_KeyProc", "long", "int;wparam;lparam")
    Global $hmod = _WinAPI_GetModuleHandle(0)
    Global $hHook = _WinAPI_SetWindowsHookEx($WH_KEYBOARD_LL, DllCallbackGetPtr($hStub_KeyProc), $hmod)
    Global $active = False, $gui, $ID_lastFocus = 0
    Enum $i1, $i2, $c1, $i3, $c2, $i4, $n ; <== hier die Reihenfolge, wie der Fokus 'wandern' soll ($n ist Zähler für Anz. Ctrl)
    Global $a[$n]

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

    $gui = GUICreate('')
    GUISetOnEvent(-3, '_ende')
    $a[$i1] = GUICtrlCreateInput('', 10,10,40)
    $a[$i2] = GUICtrlCreateInput('', 60,10,40)
    $a[$c1] = GUICtrlCreateCombo('', 110,10,40)
    $a[$i3] = GUICtrlCreateInput('', 160,10,40)
    $a[$c2] = GUICtrlCreateCombo('', 210,10,40)
    $a[$i4] = GUICtrlCreateInput('', 260,10,40)
    GUISetState()

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

    While 1
    If BitAND(WinGetState($gui), 8) Then
    $active = True
    Else
    $active = False
    EndIf
    Sleep(100)
    WEnd

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

    Func _ende()
    Exit
    EndFunc

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

    ;===========================================================
    ; callback function
    ;===========================================================
    Func _KeyProc($nCode, $wParam, $lParam)
    Local $tKEYHOOKS, $vkCode, $ID, $index
    $tKEYHOOKS = DllStructCreate($tagKBDLLHOOKSTRUCT, $lParam)
    If $nCode < 0 Or Not $active Then Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
    $vkCode = DllStructGetData($tKEYHOOKS, "vkCode")
    If $wParam = $WM_KEYDOWN And $vkCode = 13 Then ; ENTER gedrückt
    $ID = _WinAPI_GetDlgCtrlID(ControlGetHandle($gui, '', ControlGetFocus($gui)))
    ; Für ComboBoxen kann NICHT der Fokus abgefragt werden, da dieser auf dem Input-Ctrl der ComboBox liegt.
    ; Hier muß in der Instanz-Reihenfolge mit dem Wert des letzten Ctrl verglichen werden.
    ; Die Reihenfolge der Erstellung in der GUI ist egal, da der Fokus über die enumerierte Reihenfolge der Ctrl-Variablen
    ; weitergesetzt wird.
    ; Falls eine ComboBox als letztes Ctrl in der Folge erscheint, muß dies in der Abfragelogik berücksichtigt werden.
    If _WinAPI_GetClassName($ID) <> 'Edit' Then
    ; Variante 1: über Class+Instance
    $ID = _WinAPI_GetDlgCtrlID(ControlGetHandle($gui, "", "[CLASS:ComboBox; INSTANCE:1]"))
    If $ID_lastFocus > $ID Then $ID = _WinAPI_GetDlgCtrlID(ControlGetHandle($gui, "", "[CLASS:ComboBox; INSTANCE:2]"))
    ; Variante 2: über Enumerations-Reihenfolge der ComboCtrls
    ;~ $ID = $a[$c1]
    ;~ If $ID_lastFocus > $ID Then $ID = $a[$c2]
    EndIf
    $index = _ArraySearch($a, $ID)
    If @error Then Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
    If $index < UBound($a)-1 Then
    GUICtrlSetState($a[$index +1], $GUI_FOCUS)
    $ID_lastFocus = $a[$index +1]
    Else
    GUICtrlSetState($a[0], $GUI_FOCUS)
    $ID_lastFocus = $a[0]
    EndIf
    EndIf
    Return _WinAPI_CallNextHookEx($hHook, $nCode, $wParam, $lParam)
    EndFunc

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

    Func OnAutoItExit()
    _WinAPI_UnhookWindowsHookEx($hHook)
    DllCallbackFree($hStub_KeyProc)
    EndFunc

    [/autoit]
  • CSV_Objekt - UDF

    • BugFix
    • 30. Dezember 2014 um 10:05

    Natürlich läßt sich das mit den rein Array bezogenen Varianten genauso bearbeiten.
    Da ich in letzter Zeit mehr mit objektorientierten Sprachen arbeite, war dies eigentlich nur eine Spielerei. Ich persönlich mag Objektorientiertheit.
    Das eigentliche Problem ist, dass AutoIt mal überhaupt nicht für Objekte vorbereitet ist. Wenn man innerhalb von AutoItObject dann zwangsweise doch mit nativem AutoIt arbeiten muss, bleibt von der OOP oft nur Syntaxveränderung übrig. :huh:

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™