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

  • Shell Execute und Prozess ID

    • BugFix
    • 12. Februar 2008 um 11:02

    Unter der Voraussetzung, dass wget nur in einer Instanz läuft, findest du die PID so:

    [autoit]

    $list = ProcessList("wget.exe")
    $PID = $list[1][1])

    [/autoit]

    Bei mehreren Instanzen sind die zugehörigen PID's jeweils an Arrayposition[n][1].

  • Edit Feld Unveränderbar

    • BugFix
    • 12. Februar 2008 um 10:28

    Um Schreibarbeit zu sparen kannst du für die Standardstyles den Style: $GUI_SS_DEFAULT_EDIT verwenden und dann mit weiteren gewünschten Styles verknüpfen.

    [autoit]

    $Edit1 = GUICtrlCreateEdit('', 10, 10, 600, 400, BitOR($GUI_SS_DEFAULT_EDIT,$ES_READONLY))

    [/autoit]


    Das funktioniert auch für andere Controls. Die jeweiligen Default-Konstanten findest du in der GUIDefaultConstants.au3.

  • Edit Feld Unveränderbar

    • BugFix
    • 12. Februar 2008 um 00:49

    Es ist (nicht nur in AutoIt) üblich, dass optionale Syntaxkomponenten in eckige Klammern gesetzt werden. Aber nur in der Syntaxbeschreibung - nicht in der Syntax selbst!

    Welcher Suchbegriff? - Der Funktionsname, dort sind die Syntaxkomponenten erklärt und verlinkt auf weitergehende Erläuterungen.

  • Abkürzungen in SciTE verwalten

    • BugFix
    • 12. Februar 2008 um 00:22

    Neue Version - s. Post 1

  • Brauche hilfe bei Fehlermeldung!!!

    • BugFix
    • 11. Februar 2008 um 20:45

    In der For-Schleife bei "Case $msg = $ButtonI " fehlt Next ;)

  • Abkürzungen in SciTE verwalten

    • BugFix
    • 10. Februar 2008 um 16:08

    Hi,
    ich hab hier ein Skript erstellt mit dem die Abbrevs aus SciTE verwaltet werden können.
    • Beim Start werden die vorhandenen Abkürzungen abgerufen und in einem Listview dargestellt.
    • Mit Klick auf eine Abkürzung wird der rekonstruierte Code in einem Extra-Fenster dargestellt. Dadurch läßt sich viel besser verstehen, wofür denn diese Abkürzung steht.
    • Eigene Abkürzungen können hinzugefügt werden - einfach die Abkürzung eintragen und den zugehörigen Code in das Editfenster kopieren oder dort direkt schreiben. Beim Schließen des Fensters wird der Code dann umgewandelt und in die Datei geschrieben.

    Edit 15.08.2011Neue Version v1.1
    Ich habe das Skript nochmal überarbeitet mit folgenden Änderungen:
    • Der Startbereich spielt keine Rolle mehr, das Skript erkennt auch ohne diese Markierung die Abbrevs.
    • Da leider in den Original-Dateien doppelte Abbrevs sind, läuft beim Erststart einmalig eine Überprüfung auf Mehrfacheinträge. Es wird dann nur das erste Vorkommen beibehalten, weitere werden in der Datei auskommentiert.
    • Es gibt einen neuen Menüpunkt "Keywords". Falls ihr den Eindruck haben solltet, dass nicht alle Keys vorhanden sind (Eingabe der Abkürzung färbt diese nicht rot), obwohl "Key=Abbrev" in der Liste stehen ==> einfach die Keyworddatei aus eurer Liste neu erstellen lassen.
    • Die Farbdarstellung wird euch nun auch keinen Augenkrebs mehr bereiten. :D
    Die "abbrev.properties" scheint von den Entwicklern aber weitestgehend ignoriert zuwerden. Anders läßt sich ein derart schlampiger Umgang damit nicht erklären (3 doppelte Einträge, Abbrevs für längst gestorbene Befehle: AdlibEnable, AdlibDisable). Ich werde mich mal daran machen und diese Datei mit etwas sinnvolleren Inhalten zu füllen. Viele der vorhandenen Abbrevs werden vermutlich niemals zum Einsatz kommen.

    Edit 14.08.2011
    Durch die neue Version 2.27 von SciTE4AutoIt ist eine Änderung in Codezeile #25 erforderlich, da der Startbereich jetzt anders definiert wird.

    [autoit]

    Global $Start_STR = '#; -- Gui Variables --', $start = False, $edit = False

    [/autoit]

    ist mit

    [autoit]

    Global $Start_STR = "#- 'A B B R E V I A T I O N S F O R A U T O I T F I N A L' -#", $start = False, $edit = False

    [/autoit]

    zu ersetzen.

    Edit:
    Fast vergessen: Jetzt noch das Eintragen der neuen Keywords in die "au3.keywords.abbreviations.properties" bei neuen Abkürzungen hinzugefügt.
    Eines ist vielleicht nicht ganz unwichtig: Bei der Installation einer neuen Version von SciTE wird leider die abbrev Datei überschrieben. Ein einfaches Rückschreiben einer gesicherten (eigenen) Version geht hier nicht, da die neu installierte Version ja erweiterte Inhalte hat. Mal sehen ob ich da noch eine brauchbare Lösung finde.

    Edit 21.12.2009
    Da hatte ich doch versehentlich die Sicherung der Keys im properties-Ordner erstellt. Das war natürlich Blödsinn, da alle SciTE-Ordner bei Update/Neuinstallation samt Inhalt gelöscht werden.
    Jetzt wird die Sicherungsdatei ebenfalls im @UserProfileDir erstellt. Wenn ihr schon eigene Abbrevs erstellt habt mit der Version von gestern: einfach die Datei: "SciTE\properties\au3.keywords.abbreviations.properties.my" umbenennen und verschieben in: @UserProfileDir & "\au3.keywords.my"

    Hmm, da hatten sich doch glatt zwei Fehler eingeschlichen. Bei Edit und Delete - nun gefixt. Außerdem habe ich jetzt (Danke an Jos) eine Reload-Funktion eingebunden, sodass die Änderungen auch ohne Neustart von SciTE aktiv werden.

    Edit 20.12.2009
    So, das Problem der Wiederherstellung selbst erstellter/modifizierter Abbrevs nach einem SciTE-Update (od. Neuinstallation) ist gelöst.
    Während der Erstellung/Modifikation von Abbrevs werden die eigenen Abbrevs und Keywords in separaten Dateien abgelegt. Über das Menü 'Wiederherstellen' können die eigenen Abbrevs und Keywords wieder in die Originaldateien eingefügt werden.
    Das Aufrufen dieses Menüpunktes in der aktuellen (bereits modifizierten Version) bleibt ohne Folgen.

    Edit 08.07.2008
    Ich habe mir jetzt eine Integration für SciTE gemacht, sodass über eine Tastenkombination das Tool geöffnet wird.
    Dazu einen Eintrag in die SciTEUser.properties ausführen. Ich habe im Scite-Ordner ein Verzeichnis Abbrev angelegt und dorthinein das kompilierte Programm AbbrevVerwaltung.exe gespeichert. Wenn ihr andere Namen oder Ordner verwendet, entsprechend eine Anpassung durchführen.
    Die folgenden Zeilen müssen zwingend an den Anfang der Datei geschrieben werden!
    Solltet ihr noch keinen individuellen Eintrag dort stehen haben (z.B. Organize Includes) dann könnt ihr statt 37 die 36 verwenden.
    Den Shortcut könnt ihr natürlich selbst festlegen (aber schauen, ob er nicht von SciTE schon vorbelegt ist).

    Code
    # 37 Abbrev-Verwaltung
    command.37.*.au3="$(SciteDefaultHome)\Abbrev\AbbrevVerwaltung.exe"
    command.name.37.*.au3=Abbrev Verwaltung
    command.save.before.37.*.au3=1
    command.is.filter.37.*.au3=1
    command.shortcut.37.*.au3=Ctrl+Alt+A

    Edit 21.03.2008 Neue Version
    Der Pfad für die Properties liegt jetzt in einem eigenen Ordner. Programm entsprechend angepaßt.
    Ohne Anpassung werden die Kürzel nicht in die au3.keywords.abbreviations.properties geschrieben und stehen demzufolge nicht zur Verfügung.

    Edit 12.02.08
    • bestehende Abkürzungen können bearbeitet werden
    • Abkürzungen können gelöscht werden


    AbbrevVerwaltung v1.1
    [autoit]

    #Region - TimeStamp
    ; 2011-08-15 13:41:03 v 1.1
    #EndRegion - TimeStamp

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

    #include-once
    #include <Array.au3>
    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <StaticConstants.au3>
    #include <StructureConstants.au3>
    #include <WindowsConstants.au3>
    #include <File.au3>
    #include <GUIListView.au3>
    #include <GuiEdit.au3>
    Opt("GUIOnEventMode", 1)

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

    Global $ScitePath = RegRead("HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\SciTE.exe", "")
    Global $KeyWordPath = StringReplace($ScitePath, "SciTE.exe", "properties\au3.keywords.abbreviations.properties")
    Global $MyKeyWordPath = @UserProfileDir & '\au3.keywords.my'
    Global $Abbr_Path = @UserProfileDir & '\abbrev.properties'
    Global $MyAbbrevPath = @UserProfileDir & '\abbrev.properties.my'
    If Not FileExists($MyAbbrevPath) Then
    Local $fh = FileOpen($MyAbbrevPath, 1)
    FileWriteLine($fh, '; >> My own abbrevs <<')
    FileClose($fh)
    EndIf
    Global $edit = False
    Global $Last_STR = '#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#'
    Global $txt, $aTitel[2] = ['Code für neue Abkürzung', 'Code bearbeiten']
    Global $aLabel[2] = [ _
    'Bitte den Code für die Abkürzung einfügen. Einrückungen bitte mit Tabulator (Im Editfeld durch STRG+TAB).' & @LF & _
    'Für die gewünschte Cursorposition: | verwenden. Der Code wird beim Schließen des Fensters übernommen.', _
    'Hier den Code bearbeiten. Einrückungen bitte mit Tabulator (Im Editfeld durch STRG+TAB).' & @LF & _
    'Für die gewünschte Cursorposition: | verwenden. Der Code wird beim Schließen des Fensters übernommen.']
    Global $sAbbrev, $aAbbrevFile, $aAbbrev[1][2]

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

    ; == Bei erstmaligem Start ausführen
    ; == erstes Vorkommen eines Abbrev werden behalten - weitere auskommentiert mit: '#; CHANGED abbrev'
    If Not FileExists(@UserProfileDir & '\AbbrevDoubleCheck.done') Then
    MsgBox(64, 'Erststart', 'Einmalige Überprüfung auf doppelte Abbrevs.' & @LF & 'Jetzt starten', 3)
    Local $sToWrite = 'No Double'
    Local $ret = _SetDoubleAsComment()
    If $ret <> '' Then $sToWrite = $ret
    FileWrite(@UserProfileDir & '\AbbrevDoubleCheck.done', $sToWrite)
    MsgBox(64, 'Doppelüberprüfung', 'Das Ergebnis der Überprüfung ist in der Datei:' & @LF & @LF & @UserProfileDir & '\AbbrevDoubleCheck.done' & @LF & @LF & 'dokumentiert. ' & _
    'Das erste Vorkommen eines Abbrev wurde behalten, weitere wurden auskommentiert.' & @LF & 'Um später nochmals eine Überprüfung auf Doppel durchzuführen' & @LF & _
    '(empfehlenswert nach einem Update von SciTE), einfach diese Ergebnisdatei löschen.')
    EndIf
    ; == Ende Double Check

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

    _FileReadToArray($Abbr_Path, $aAbbrevFile)
    Local $ret, $aIndex, $aCheck = $aAbbrevFile
    ReDim $aAbbrev[$aCheck[0]][2]
    For $i = 1 To $aCheck[0]
    If StringRegExp($aCheck[$i], "(\A\w+)=(.+)") Then
    $ret = _SplitOnce($aCheck[$i])
    $aAbbrev[0][0] += 1
    $aAbbrev[$aAbbrev[0][0]][0] = $ret[0]
    $aAbbrev[$aAbbrev[0][0]][1] = $ret[1]
    EndIf
    Next
    Local $aTmp[$aAbbrev[0][0]+1][2]
    $aTmp[0][0] = $aAbbrev[0][0]
    For $i = 1 To $aTmp[0][0]
    $aTmp[$i][0] = $aAbbrev[$i][0]
    $aTmp[$i][1] = $aAbbrev[$i][1]
    Next
    $aAbbrev = $aTmp
    $aTmp = 0

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

    $Form1 = GUICreate("Abkürzungen verwalten [" & $Abbr_Path & ']', 800, 620, -1, -1)
    GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
    $mnu = GUICtrlCreateMenu('Wiederherstellung')
    $mnu_restore = GUICtrlCreateMenuItem('Wiederherstellung eigener Abbrevs', $mnu)
    GUICtrlSetOnEvent(-1, '_Restore')
    $mnuKey = GUICtrlCreateMenu('Keywords')
    $mnu_keycreate = GUICtrlCreateMenuItem('Keyword-Datei neu erstellen', $mnuKey)
    GUICtrlSetOnEvent(-1, '_KeyCreate')
    $iSearch = GUICtrlCreateInput('', 15, 10, 90, 20)
    $bSearch = GUICtrlCreateButton('Suchen', 125, 10, 150, 20, $BS_DEFPUSHBUTTON)
    GUICtrlSetOnEvent(-1, '_Search')
    $bCreate = GUICtrlCreateButton('Hinzufügen', 295, 10, 150, 20)
    GUICtrlSetOnEvent(-1, '_Create')
    $bEdit = GUICtrlCreateButton('Bearbeiten', 465, 10, 150, 20)
    GUICtrlSetOnEvent(-1, '_Edit')
    $bDelete = GUICtrlCreateButton('Löschen', 635, 10, 150, 20)
    GUICtrlSetOnEvent(-1, '_Delete')
    $ListView1 = GUICtrlCreateListView("Abkürzung|Code", 15, 40, 770, 545, BitOR($LVS_SHOWSELALWAYS,$LVS_SINGLESEL,$WS_HSCROLL,$WS_VSCROLL))
    GUICtrlSetOnEvent(-1, "ListView1Click")
    GUICtrlSetBkColor(-1, 0xF0F8FF)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_LV_ALTERNATE)
    GUICtrlSendMsg(-1, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_ONECLICKACTIVATE, $LVS_EX_ONECLICKACTIVATE)
    _GUICtrlListView_SetColumnWidth(-1, 0, 90)
    _GUICtrlListView_SetColumnWidth(-1, 1, $LVSCW_AUTOSIZE_USEHEADER)

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

    _LV_Fill()

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

    $Form2 = GUICreate('Code zur Abkürzung', 700, 400, -1, -1)
    GUISetOnEvent($GUI_EVENT_CLOSE, "Form2Close")
    $Edit1 = GUICtrlCreateEdit('', 10, 10, 680, 380, BitOR($GUI_SS_DEFAULT_EDIT,$ES_READONLY))
    GUICtrlSetBkColor(-1, 0x98FB98)

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

    $Form3 = GUICreate('Code für neue Abkürzung', 700, 400, -1, -1)
    GUISetOnEvent($GUI_EVENT_CLOSE, "Form3Close")
    $Label1 = GUICtrlCreateLabel('Bitte den Code für die Abkürzung einfügen. Einrückungen bitte mit Tabulator (Im Editfeld durch STRG+TAB).' & @LF & _
    'Für die gewünschte Cursorposition: | verwenden. Der Code wird beim Schließen des Fensters übernommen.' _
    , 10, 5, 680, 30, $SS_SUNKEN+$SS_CENTER)
    GUICtrlSetBkColor(-1, 0x98FB98)
    $Edit2 = GUICtrlCreateEdit('', 10, 40, 680, 350, BitOR($WS_HSCROLL,$WS_VSCROLL,$ES_MULTILINE,$ES_WANTRETURN))
    GUICtrlSetBkColor(-1, 0x98FB98)

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

    GUISetState(@SW_SHOW, $Form1)
    GUIRegisterMsg($WM_NOTIFY, "MY_WM_COMMAND")

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

    While 1
    Sleep(100)
    WEnd

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

    Func Form1Close()
    Exit
    EndFunc ;==>Form1Close

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

    Func Form2Close()
    GUISetState(@SW_HIDE, $Form2)
    GUICtrlSetData($Edit1, '')
    EndFunc ;==>Form2Close

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

    Func Form3Close()
    GUISetState(@SW_HIDE, $Form3)
    If $edit Then
    _WriteEditedAbbrev()
    Else
    _WriteNewAbbrev()
    EndIf
    EndFunc ;==>Form3Close

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

    Func _SetDoubleAsComment()
    _FileReadToArray($Abbr_Path, $aAbbrevFile)
    Local $oDouble = ObjCreate("Scripting.Dictionary"), $sRet = ''
    For $i = 1 To $aAbbrevFile[0]
    If StringRegExp($aAbbrevFile[$i], "(\A\w+)=(.+)") Then
    $KEYWORD = StringLeft($aAbbrevFile[$i], StringInStr($aAbbrevFile[$i], '=', 1, 1) - 1)
    If $oDouble.Exists($KEYWORD) Then
    ContinueLoop
    EndIf
    $aIndex = _CheckOccurences($aAbbrevFile, $KEYWORD)
    $sTmp = ''
    If $aIndex[0] > 1 Then
    For $j = 1 To $aIndex[0]
    $sTmp &= $aIndex[$j] & ','
    If $j > 1 Then
    $aAbbrevFile[$aIndex[$j]] = '#; CHANGED ' & $aAbbrevFile[$aIndex[$j]] ; == Doppel auskommentieren
    $sRet &= 'Zeile ' & $i & ': ' & $aAbbrevFile[$aIndex[$j]] & @CRLF
    EndIf
    Next
    $oDouble.Add($KEYWORD, StringTrimRight($sTmp, 1))
    EndIf
    EndIf
    Next
    If $oDouble.Count > 0 Then _ObjDictList($oDouble, 'Doppel in "abbrev.properties", auskommentiert mit: #; CHANGED', 'Abbrev', 'Zeilen')
    _FileWriteFromArray($Abbr_Path, $aAbbrevFile, 1)
    Return $sRet
    EndFunc

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

    Func _CheckOccurences($aArray, $sToCheck, $iStart=1)
    Local $aIndex[1] = [0]
    For $i = $iStart To UBound($aArray) -1
    If StringLeft($aArray[$i], StringLen($sToCheck)+1) = $sToCheck & '=' Then
    $aIndex[0] += 1
    ReDim $aIndex[$aIndex[0] +1]
    $aIndex[$aIndex[0]] = $i
    EndIf
    Next
    Return $aIndex
    EndFunc

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

    ;==================================================================================================
    ; Name: _ObjDictList($oDICT [, $TITLE='Elemente: Objekt Dictionary'])
    ; Parameter: $oDICT - Handle des Dictionary-Objektes
    ; $TITLE - Fenstertitel (optional)
    ; Return: Erfolg: GUI mit ListView
    ; Fehler: -1 @Error=1 Objekt existiert nicht
    ; Requirements: #include <GuiConstants.au3>
    ; #include <GuiListView.au3>
    ;==================================================================================================
    Func _ObjDictList(ByRef $oDICT, $TITLE = 'Elemente: Objekt Dictionary', $sKey='Schlüssel', $sValue='Wert')
    If Not IsObj($oDICT) Then Return SetError(1, 0, -1)
    Local $count = $oDICT.Count
    Local $SaveMode = Opt("GUIOnEventMode", 0), $ListGUI, $oDictLV, $btnClose, $msg
    $ListGUI = GUICreate($TITLE, 600, 400, (@DesktopWidth - 600) / 2, (@DesktopHeight - 400) / 2)
    $btnClose = GUICtrlCreateButton('&Ende', 40, 360, 70, 22)
    GUICtrlSetResizing($btnClose, BitOR($GUI_DockRight, $GUI_DockBottom, $GUI_DockSize))
    GUICtrlDelete($oDictLV)
    $oDictLV = GUICtrlCreateListView($sKey & '|' & $sValue, 10, 10, 580, 340, BitOR($LVS_SHOWSELALWAYS, _
    $LVS_EDITLABELS), BitOR($LVS_EX_GRIDLINES, $LVS_EX_HEADERDRAGDROP, $LVS_EX_FULLROWSELECT, $LVS_EX_REGIONAL))
    If $count > 0 Then
    Local $strKey, $colKeys = $oDICT.Keys
    For $strKey In $colKeys
    GUICtrlCreateListViewItem($strKey & '|' & $oDICT.Item($strKey), $oDictLV)
    Next
    Else
    WinSetTitle($ListGUI, '', 'Das Objekt Dictionary enthält keine Elemente!')
    EndIf
    GUISetState(@SW_SHOW, $ListGUI)
    While 1
    $msg = GUIGetMsg(1)
    If $msg[1] = $ListGUI And _
    ($msg[0] = $GUI_EVENT_CLOSE Or $msg[0] = $btnClose) Then ExitLoop
    WEnd
    GUIDelete($ListGUI)
    Opt("GUIOnEventMode", $SaveMode)
    EndFunc ;==>_ObjDictList

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

    Func _KeyCreate()
    Local $KEYWORD, $sToWrite = 'au3.keywords.abbrev=', $txtZeile = '', $len
    _FileReadToArray($Abbr_Path, $aAbbrevFile)
    For $i = 1 To $aAbbrevFile[0]
    If StringRegExp($aAbbrevFile[$i], "(\A\w+)=(.+)") Then
    $KEYWORD = StringLeft($aAbbrevFile[$i], StringInStr($aAbbrevFile[$i], '=', 1, 1) - 1)
    $len = StringLen($txtZeile) + 4
    If $len + StringLen($KEYWORD) > 100 Then
    $sToWrite &= $txtZeile & "\" & @CRLF
    $txtZeile = @TAB & $KEYWORD & " "
    Else
    $txtZeile &= $KEYWORD & " "
    EndIf
    EndIf
    Next
    $sToWrite &= $txtZeile
    FileMove($KeyWordPath, $KeyWordPath & '.BAK', 1)
    Local $fh = FileOpen($KeyWordPath, 2)
    FileWrite($fh, $sToWrite)
    FileClose($fh)
    EndFunc ;==>_KeyCreate

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

    Func _Search()
    $txt = GUICtrlRead($iSearch)
    If $txt = '' Then Return
    Local $indx = _LV_FindInSubItem($ListView1, $txt, 0)
    If $indx = -1 Then Return MsgBox(0, 'Suche Abbrev', 'Abbrev: "' & $txt & '" existiert nicht.')
    GUICtrlSetState($ListView1, $GUI_FOCUS)
    _GUICtrlListView_EnsureVisible($ListView1, $indx)
    _GUICtrlListView_SetItemSelected($ListView1, $indx)
    _GUICtrlListView_SetItemFocused($ListView1, $indx)
    EndFunc ;==>_Search

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

    Func _Create()
    $txt = GUICtrlRead($iSearch)
    If $txt = '' Then Return MsgBox(16, 'Fehler', 'Keine Abkürzung eingetragen.')
    Local $indx = _LV_FindInSubItem($ListView1, $txt, 0)
    If $indx > -1 Then Return MsgBox(16, 'Fehler', 'Die Abkürzung existiert bereits.')
    $edit = False
    WinSetTitle($Form3, '', $aTitel[0] & ' [ ' & $txt & ' ]')
    GUICtrlSetData($Label1, $aLabel[0])
    GUISetState(@SW_SHOW, $Form3)
    EndFunc

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

    Func _Edit()
    $txt = GUICtrlRead($iSearch)
    If $txt = '' Then Return MsgBox(16, 'Fehler', 'Keine Abkürzung ausgewählt.')
    $edit = True
    WinSetTitle($Form3, '', $aTitel[1] & ' [ ' & $txt & ' ]')
    GUICtrlSetData($Label1, $aLabel[1])
    $sAbbrev = _GUICtrlListView_GetItemText($ListView1, _LV_FindInSubItem($ListView1, $txt, 0), 1)
    GUICtrlSetData($Edit2, _Abbrev2Code($sAbbrev))
    GUISetState(@SW_SHOW, $Form3)
    EndFunc ;==>_Edit

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

    Func _Restore()
    Local $aMyAbbrev, $split_f, $index
    _FileReadToArray($MyAbbrevPath, $aMyAbbrev)
    For $i = 2 To UBound($aMyAbbrev) - 1
    $split_f = _SplitOnce($aMyAbbrev[$i])
    If @error Then ContinueLoop
    $index = _ArraySearch($aAbbrev, $split_f[0], 1)
    If Not @error Then ; == gefunden, Abbrev ändern > in Array: $aAbbrev
    $aAbbrev[$index][1] = $split_f[1]
    WinSetTitle($Form1, '', 'Restore Abbrev: ' & $split_f[0])
    Else ; == Abbrev existiert nicht ==> Erstellen > in Array: $aAbbrev
    $aAbbrev[0][0] += 1
    ReDim $aAbbrev[$aAbbrev[0][0] +1][2]
    $aAbbrev[$aAbbrev[0][0]][0] = $split_f[0]
    $aAbbrev[$aAbbrev[0][0]][1] = $split_f[1]
    WinSetTitle($Form1, '', 'Restore Abbrev: ' & $split_f[0])
    EndIf
    ; == jetzt noch in $aAbbrevFile ändern zum Zurückschreiben in die Abbrev-Datei
    $index = -1
    For $j = 1 To $aAbbrevFile[0]
    If StringLeft($aAbbrevFile[$j], StringLen($split_f[0] +1)) = $split_f[0] & '=' Then
    $index = $j
    ExitLoop
    Else
    ContinueLoop
    EndIf
    Next
    If $index > -1 Then ; == gefunden, Abbrev ändern > in Array: $aAbbrevFile
    $aAbbrevFile[$index] = $aMyAbbrev[$i]
    Else
    ReDim $aAbbrevFile[$aAbbrevFile[0] + 1]
    $aAbbrevFile[0] += 1
    $aAbbrevFile[$aAbbrevFile[0]] = $aMyAbbrev[$i] ; == Abbrev am Ende anfügen
    For $j = $aAbbrevFile[$aAbbrevFile[0]] To 1 Step -1
    If $aAbbrevFile[$j] = $Last_STR Then ExitLoop
    Next
    _ArraySwap($aAbbrev[UBound($aAbbrev) - 1], $aAbbrev[$j]) ; == Eintrag verschieben vor die End-Linie
    EndIf
    Next
    ; == bestehende Abbrev-Datei sichern und Abbrev-Datei neu schreiben
    FileMove($Abbr_Path, $Abbr_Path & '.BAK', 1)
    _FileWriteFromArray($Abbr_Path, $aAbbrevFile, 1)
    ; == Schlüsselwörter ergänzen
    If FileExists($MyKeyWordPath) Then
    Local $aMyKeyWord
    _FileReadToArray($MyKeyWordPath, $aMyKeyWord)
    For $i = 1 To UBound($aMyKeyWord) - 1
    WinSetTitle($Form1, '', 'Restore Keyword: ' & $aMyKeyWord[$i])
    Sleep(20)
    _KeyWordSet($aMyKeyWord[$i], 1)
    Next
    EndIf
    WinSetTitle($Form1, '', 'Restore')
    MsgBox(64, 'Restore', 'Restore beendet.', 1.5)
    WinSetTitle($Form1, '', "Abkürzungen verwalten [" & $Abbr_Path & ']')
    _GUICtrlListView_DeleteAllItems(GUICtrlGetHandle($ListView1))
    _LV_Fill()
    Reload_Config()
    EndFunc ;==>_Restore

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

    Func _LV_FindInSubItem($hWnd, $2Find, $SubIndex)
    Local $out = -1
    For $i = 0 To _GUICtrlListView_GetItemCount($hWnd) - 1
    If _GUICtrlListView_GetItemText($hWnd, $i, $SubIndex) = $2Find Then $out = $i
    Next
    Return $out
    EndFunc ;==>_LV_FindInSubItem

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

    Func ListView1Click()
    Local $indx = _GUICtrlListView_GetHotItem($ListView1)
    GUICtrlSetData($iSearch, _GUICtrlListView_GetItemText($ListView1, $indx, 0))
    GUICtrlSetData($Edit1, _Abbrev2Code(_GUICtrlListView_GetItemText($ListView1, $indx, 1)))
    WinSetTitle($Form2, '', 'Code zur Abkürzung [ ' & GUICtrlRead($iSearch) & ' ]')
    GUISetState(@SW_SHOW, $Form2)
    EndFunc ;==>ListView1Click

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

    Func _LV_Fill()
    GUISetState(@SW_LOCK, $Form1)
    Local $CtrlID
    For $i = 1 To $aAbbrev[0][0]
    $CtrlID = GUICtrlCreateListViewItem('|', $ListView1)
    GUICtrlSetBkColor($CtrlID, 0xE6E8FA)
    _GUICtrlListView_SetItemText($ListView1, $i-1, $aAbbrev[$i][0], 0)
    _GUICtrlListView_SetItemText($ListView1, $i-1, $aAbbrev[$i][1], 1)
    Next
    GUISetState(@SW_UNLOCK, $Form1)
    EndFunc ;==>_LV_Fill

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

    Func _SplitOnce($STRING, $DELIM = '=')
    If Not StringInStr($STRING, $DELIM) Then Return SetError(1, 0, 1)
    Local $out[2]
    Local $len = StringLen($STRING)
    Local $pos = StringInStr($STRING, $DELIM, 1, 1)
    $out[0] = StringLeft($STRING, $pos - 1)
    $out[1] = StringRight($STRING, $len - $pos)
    Return $out
    EndFunc ;==>_SplitOnce

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

    Func _Abbrev2Code($ABBREV)
    Local $out = ''
    $var = StringSplit($ABBREV, '\n', 1)
    For $i = 1 To UBound($var) - 1
    If StringInStr($var[$i], '\t', 1) Then $var[$i] = StringReplace($var[$i], '\t', @TAB)
    If $i = UBound($var) - 1 Then
    $out &= $var[$i]
    Else
    $out &= $var[$i] & @CRLF
    EndIf
    Next
    Return $out
    EndFunc ;==>_Abbrev2Code

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

    Func _Code2Abbrev()
    Local $out = '', $count = _GUICtrlEdit_GetLineCount($Edit2), $line
    If @error Then Return SetError(1)
    For $i = 0 To $count - 1
    $line = _GUICtrlEdit_GetLine($Edit2, $i)
    If StringInStr($line, @TAB, 1) Then $line = StringReplace($line, @TAB, '\t')
    If $i = $count - 1 Then
    $out &= $line
    Else
    $out &= $line & '\n'
    EndIf
    Next
    Return $out
    EndFunc ;==>_Code2Abbrev

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

    Func _WriteNewAbbrev()
    If GUICtrlRead($Edit2) = '' Then Return
    Local $abbr = _Code2Abbrev()
    If $abbr = $sAbbrev Then Return
    Local $fh = FileOpen($MyAbbrevPath, 1)
    FileWriteLine($fh, $txt & '=' & $abbr)
    FileClose($fh)
    $aAbbrev[0][0] += 1
    ReDim $aAbbrev[$aAbbrev[0][0] +1][2]
    $aAbbrevFile[0] += 1
    ReDim $aAbbrevFile[$aAbbrevFile[0] +1]
    $aAbbrev[$aAbbrev[0][0]][0] = $txt
    $aAbbrev[$aAbbrev[0][0]][1] = $abbr
    $aAbbrevFile[$aAbbrevFile[0]] = $txt & '=' & $abbr
    For $i = $aAbbrevFile[0] To 1 Step -1
    If $aAbbrevFile[$i] = $Last_STR Then ExitLoop
    Next
    _ArraySwap($aAbbrevFile[$aAbbrevFile[0]], $aAbbrevFile[$i])
    FileMove($Abbr_Path, $Abbr_Path & '.BAK', 1)
    _FileWriteFromArray($Abbr_Path, $aAbbrevFile, 1)
    _KeyWordSet($txt)
    $fh = FileOpen($MyKeyWordPath, 1)
    FileWrite($fh, $txt & @CRLF)
    FileClose($fh)
    _GUICtrlListView_DeleteAllItems(GUICtrlGetHandle($ListView1))
    GUICtrlSetData($Edit2, '')
    _LV_Fill()
    Local $idx = _LV_FindInSubItem($ListView1, $txt, 0)
    GUICtrlSetState($ListView1, $GUI_FOCUS)
    _GUICtrlListView_EnsureVisible($ListView1, $idx)
    _GUICtrlListView_SetItemSelected($ListView1, $idx)
    Reload_Config()
    EndFunc ;==>_WriteNewAbbrev

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

    Func _WriteEditedAbbrev()
    If GUICtrlRead($Edit2) = '' Then Return
    Local $abbr = _Code2Abbrev()
    If $abbr = $sAbbrev Then Return
    Local $index = _ArraySearch($aAbbrev, $txt)
    $aAbbrev[$index][1] = $abbr
    For $i = $aAbbrevFile[$aAbbrevFile[0]] To 1 Step -1
    If StringLeft($aAbbrevFile[$i], StringLen($txt +1)) = $txt & '=' Then
    $aAbbrevFile[$i] = $txt & '=' & $abbr
    ExitLoop
    EndIf
    Next
    FileMove($Abbr_Path, $Abbr_Path & '.BAK', 1)
    _FileWriteFromArray($Abbr_Path, $aAbbrevFile, 1)
    Local $fh = FileOpen($MyAbbrevPath, 0)
    Local $content = FileRead($fh)
    FileClose($fh)
    If Not StringRegExp($content, '\r\n' & $txt & '=') Then
    $fh = FileOpen($MyAbbrevPath, 1)
    FileWriteLine($fh, $txt & '=' & $abbr)
    FileClose($fh)
    Else
    $fh = FileOpen($MyAbbrevPath, 0)
    Local $line, $row = 2
    While 1
    $line = FileReadLine($fh, $row)
    If @error = -1 Then ExitLoop
    $split_f = _SplitOnce($line)
    If $txt = $split_f[0] Then ExitLoop
    $row += 1
    WEnd
    FileClose($fh)
    _FileWriteToLine($MyAbbrevPath, $row, $txt & '=' & $abbr, 1)
    EndIf
    Local $line = _GetLine() - 1
    Local $idx = _LV_FindInSubItem($ListView1, $txt, 0)
    $aAbbrevFile[$line] = $txt & '=' & $abbr
    _GUICtrlListView_DeleteAllItems(GUICtrlGetHandle($ListView1))
    GUICtrlSetData($Edit2, '')
    _LV_Fill()
    _FileWriteToLine($Abbr_Path, $line, $txt & '=' & $abbr, 1)
    GUICtrlSetState($ListView1, $GUI_FOCUS)
    _GUICtrlListView_EnsureVisible($ListView1, $idx)
    _GUICtrlListView_SetItemSelected($ListView1, $idx)
    Reload_Config()
    EndFunc ;==>_WriteEditedAbbrev

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

    Func _Delete()
    $txt = GUICtrlRead($iSearch)
    If MsgBox(262180, 'Achtung', 'Soll die Abkürzung ' & @LF & '>> ' & $txt & ' <<' & @LF & ' wirklich gelöscht werden?') = 7 Then Return
    Local $idx = _GetLine() - 1
    $aAbbrevFile[$idx] = ''
    _GUICtrlListView_DeleteAllItems(GUICtrlGetHandle($ListView1))
    GUICtrlSetData($iSearch, '')
    Local $index = _ArraySearch($aAbbrev, $txt, 1)
    _ArrayDelete($aAbbrev, $index)
    _LV_Fill()
    _FileWriteToLine($Abbr_Path, $idx, '', 1)
    $fh = FileOpen($MyAbbrevPath, 0)
    Local $line, $row = 2
    While 1
    $line = FileReadLine($fh, $row)
    If @error = -1 Then ExitLoop
    $split_f = _SplitOnce($line)
    If @error Then ContinueLoop
    If $txt = $split_f[0] Then ExitLoop
    $row += 1
    WEnd
    FileClose($fh)
    _FileWriteToLine($MyAbbrevPath, $row, '', 1)
    Local $keys = FileRead($KeyWordPath)
    $keys = StringReplace($keys, $txt & ' ', '', 1, 1)
    Local $fh = FileOpen($KeyWordPath, 2)
    FileWrite($fh, $keys)
    FileClose($fh)
    $keys = FileRead($MyKeyWordPath)
    $keys = StringReplace($keys, $txt & @CRLF, '', 1, 1)
    $fh = FileOpen($MyKeyWordPath, 2)
    FileWrite($fh, $keys)
    FileClose($fh)
    Reload_Config()
    EndFunc ;==>_Delete

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

    Func _GetLine()
    Local $var
    For $i = 1 To UBound($aAbbrevFile) - 1
    $var = _SplitOnce($aAbbrevFile[$i], '=')
    If @error Then ContinueLoop
    If $var[0] = $txt Then Return $i + 1
    Next
    EndFunc ;==>_GetLine

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

    Func _KeyWordSet($KEYWORD, $CHECK = 0)
    Local $txtZeile, $len
    If $CHECK Then
    Local $fh = FileOpen($KeyWordPath, 0)
    Local $read = FileRead($fh)
    FileClose($fh)
    If StringInStr($read, $KEYWORD & ' ', 1) Then Return
    EndIf
    $zeile = _FileCountLines($KeyWordPath)
    $txtZeile = FileReadLine($KeyWordPath, $zeile)
    $len = StringLen($txtZeile) + 4
    If $len + StringLen($KEYWORD) > 100 Then
    _FileWriteToLine($KeyWordPath, $zeile, $txtZeile & "\" & @CRLF, 1)
    _FileWriteToLine($KeyWordPath, $zeile + 1, @TAB & $KEYWORD & " ", 1)
    Else
    _FileWriteToLine($KeyWordPath, $zeile, $txtZeile & $KEYWORD & " ", 1)
    EndIf
    EndFunc ;==>_KeyWordSet

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

    Func MY_WM_COMMAND($hWnd, $Msg, $wParam, $lParam)
    Switch $wParam
    Case $ListView1
    Local $tagNMHDR = DllStructCreate("int;int;int", $lParam)
    If @error Then Return $GUI_RUNDEFMSG
    If DllStructGetData($tagNMHDR, 3) = $NM_CLICK Then ListView1Click()
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>MY_WM_COMMAND

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

    ; Thanks to Jos for following functions:
    Func Reload_Config()
    ;Send SciTE Director my GUI handle so it will report info back from SciTE
    SendSciTE_Command("reloadproperties:")
    EndFunc ;==>Reload_Config
    ; Send command to SciTE
    Func SendSciTE_Command($sCmd, $Wait_For_Return_Info = 0)
    Local $WM_COPYDATA = 74
    Local $WM_GETTEXT = 0x000D
    Local $WM_GETTEXTLENGTH = 0x000E224
    Local Const $SCI_GETLINE = 2153
    Local $Scite_hwnd = WinGetHandle("DirectorExtension") ; Get SciTE DIrector Handle
    Local $My_Hwnd = GUICreate("AutoIt3-SciTE interface") ; Create GUI to receive SciTE info
    Local $My_Dec_Hwnd = Dec(StringTrimLeft($My_Hwnd, 2)) ; Convert my Gui Handle to decimal
    $sCmd = ":" & $My_Dec_Hwnd & ":" & $sCmd ; Add dec my gui handle to commandline to tell SciTE where to send the return info
    ;~ ConsoleWrite('SciTE Command --> ' & $sCmd & @LF)
    Local $CmdStruct = DllStructCreate('Char[' & StringLen($sCmd) + 1 & ']')
    DllStructSetData($CmdStruct, 1, $sCmd)
    Local $COPYDATA = DllStructCreate('Ptr;DWord;Ptr')
    DllStructSetData($COPYDATA, 1, 1)
    DllStructSetData($COPYDATA, 2, StringLen($sCmd) + 1)
    DllStructSetData($COPYDATA, 3, DllStructGetPtr($CmdStruct))
    DllCall('User32.dll', 'None', 'SendMessage', 'HWnd', $Scite_hwnd, _
    'Int', $WM_COPYDATA, 'HWnd', $My_Hwnd, _
    'Ptr', DllStructGetPtr($COPYDATA))
    GUIDelete($My_Hwnd)
    EndFunc ;==>SendSciTE_Command

    [/autoit]


    DL bisher: 278

    Dateien

    AbbrevVerwaltung[1.1].au3 22,28 kB – 469 Downloads AbbrevVerwaltung.au3 15,51 kB – 738 Downloads
  • EmbeddedIE reisst alle Tasten an sich ... Steuertasten für GUI verwenden

    • BugFix
    • 9. Februar 2008 um 19:02

    Dazu wäre es sinnvoll den Code mit dem Embedded IE zu präsentieren - denn dort wird das Problem sein. ;)

  • _StringLenBetween

    • BugFix
    • 9. Februar 2008 um 18:51

    Hi,
    um Eingaben zu überprüfen brauchte ich eine Funktion, die die Länge innerhalb eines Bereiches prüft.
    Ich wollte nicht jedes Mal coden: If StringLen($str) >= $x Or StringLen($str) <= $y
    und so ist die Funktion _StringLenBetween(ByRef $STRING, $MIN [, $MAX=-1 [, $BORDER_IN=True]]) entstanden.

    Geprüft werden kann, wie folgt:
    • Länge innerhalb Untergrenze und Obergrenze - Grenzen inklusive ($BORDER_IN=True, Vorgabe)
    • Länge innerhalb Untergrenze und Obergrenze - Grenzen exklusive ($BORDER_IN=False)
    • Untergrenze und Obergrenze können vertauscht übergeben werden
    • Länge ist gleich Untergrenze ($MAX=-1, Vorgabe und $BORDER_IN=True, Vorgabe)

    Beispiel:

    Spoiler anzeigen
    [autoit]

    $str = 'hallo'

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

    If _StringLenBetween($str, 5) Then
    MsgBox(0, 'Genaue Länge', 'Länge = 5')
    Else
    MsgBox(0, 'Genaue Länge', 'Länge <> 5')
    EndIf
    If _StringLenBetween($str, 2, 6) Then
    MsgBox(0, 'Grenzen inklusiv', 'Länge Innerhalb Bereich 2-6')
    Else
    MsgBox(0, 'Grenzen inklusiv', 'Länge Außerhalb Bereich 2-6')
    EndIf
    If _StringLenBetween($str, 5, 1) Then
    MsgBox(0, 'Grenzen inklusiv', 'Länge Innerhalb Bereich 1-5')
    Else
    MsgBox(0, 'Grenzen inklusiv', 'Länge Außerhalb Bereich 1-5')
    EndIf
    If _StringLenBetween($str, 2, 6, False) Then
    MsgBox(0, 'Grenzen exklusiv', 'Länge Innerhalb Bereich 2-6')
    Else
    MsgBox(0, 'Grenzen exklusiv', 'Länge Außerhalb Bereich 2-6')
    EndIf
    If _StringLenBetween($str, 5, 1, False) Then
    MsgBox(0, 'Grenzen exklusiv', 'Länge Innerhalb Bereich 1-5')
    Else
    MsgBox(0, 'Grenzen exklusiv', 'Länge Außerhalb Bereich 1-5')
    EndIf

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

    ;===================================================================================================
    ; Function Name: _StringLenBetween(ByRef $STRING, $MIN [, $MAX=-1 [, $BORDER_IN=True]])
    ; Description:: Prüft ob die Länge eines Strings innerhalb eines gegebenen Bereiches liegt
    ; Wird nur $MIN übergeben wird auf Länge=$MIN geprüft, auch Länge 0 möglich.
    ; $MIN und $MAX können auch vertauscht werden
    ; Parameter(s): $STRING der zu prüfende String
    ; $MIN Untergrenze Länge oder genaue Länge, wenn $MAX=-1
    ; $MAX Obergrenze Länge, mit -1(Vorgabe) deaktiviert
    ; $BORDER_IN wenn 'FALSE' wird nur der Zahlenbereich zwischen $MIN und $MAX geprüft
    ; (Vorgabe 'TRUE' - Gesamtprüfung)
    ; Requirement(s): keine
    ; Return Value(s): Erfolg: TRUE = Länge innerhalb des Bereiches
    ; FALSE = Länge außerhalb des Bereiches
    ; Fehler: @error 1 = Untergrenze < 0 oder nicht numerisch
    ; @error 2 = Obergrenze nicht übergeben bei BORDER-OUT-Modus
    ; @error 3 = Untergrenze = Obergrenze bei BORDER-OUT-Modus
    ; Author(s): BugFix ([email='bugfix@autoit.de'][/email])
    ;===================================================================================================
    Func _StringLenBetween(ByRef $STRING, $MIN, $MAX=-1, $BORDER_IN=True)
    If (Not IsNumber($MIN)) Or ($MIN < 0) Then Return SetError(1)
    If $MAX = -1 Then
    If $BORDER_IN Then
    $MAX = $MIN
    Else
    Return SetError(2)
    EndIf
    Else
    If $MAX < $MIN Then
    Local $x = $MAX
    $MAX = $MIN
    $MIN = $x
    EndIf
    EndIf
    Local $len = StringLen($STRING)
    If Not $BORDER_IN Then
    If $MAX - $MIN < 1 Then Return SetError(3)
    $MIN += 1
    $MAX -= 1
    EndIf
    If $len >= $MIN And $len <= $MAX Then
    Return True
    Else
    Return False
    EndIf
    EndFunc ;==>_StringLenBetween

    [/autoit]

    Dateien

    _StringLenBetween.au3 1,99 kB – 273 Downloads
  • Excel-Tabelle in GUI-Fenster eingebettet?

    • BugFix
    • 9. Februar 2008 um 15:46
    Zitat von Oscar

    Gibt es eigentlich irgendwo eine Übersicht über alle Methoden, die Excel unterstützt?


    Ja, in Excel selber.
    Öffne in Excel den Visual-Basic-Editor und dort den Objektkatalog. Bei Bibliotheken wählst du 'Excel'.
    Dann hast du eine komplette Übersicht.

  • Excel-Tabelle in GUI-Fenster eingebettet?

    • BugFix
    • 9. Februar 2008 um 15:26

    Hi,
    vergeßt mir das gute alte Excel 2000 nicht ;)

    Einige Methoden sind darunter allerdings nicht verfügbar. Aber so kann man zumindest in allen Versionen arbeiten.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    $Form1 = GUICreate('Embedded Excel', 600, 600, -1, -1)
    For $i = 1 To 3
    Switch $i
    Case 1
    $Obj1 = ObjCreate('OWC.Spreadsheet') ; OWC 9.0 = Excel 2000
    Case 2
    $Obj1 = ObjCreate('OWC10.Spreadsheet')
    Case 3
    $Obj1 = ObjCreate('OWC11.Spreadsheet')
    EndSwitch
    If IsObj($Obj1) Then ExitLoop
    Next
    If Not IsObj($Obj1) Then Exit MsgBox(0, 'Fehler', 'Excel-Objekt konnte nicht erstellt werden.')

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

    $Obj1_ctrl = GUICtrlCreateObj($Obj1,50, 50,500,500)

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

    With $Obj1
    .AutoFit=0
    .DisplayGridlines=-1
    .DisplayHorizontalScrollBar=0
    .DisplayTitleBar=0
    .DisplayToolbar=0
    .DisplayVerticalScrollBar=0
    .EnableEvents=-1
    .MoveAfterReturn=-1
    .RightToLeft=0
    .ViewableRange='1:26'
    EndWith
    With $Obj1
    .range("A1:D1").Font.Size = 16
    .range("A1:D1").Font.Color = 0xffffff
    .range("A1:D1").Font.Bold = TRUE
    .range("A1:D1").Interior.Color = 0x8888ff
    .range("C1:D1").Interior.Color = 0xff8888
    #region - NICHT mit Excel 2000:
    .range("A1:D1").HorizontalAlignment = -4108; -4108 = center, -4131 = left, -4152 = right
    .range("A1:D1").VerticalAlignment = -4108; -4108 = center, -4107 = bottom, -4130 = justify, -4160 = top
    .Columns("A:G").ColumnWidth = 14
    .Rows("1:1").RowHeight = 25
    #endregion - NICHT mit Excel 2000
    .range('A1').value = 'aaa'
    .range('A2').value = '65'
    .range('A3').value = '75'
    .range('B1').value = 'bbb'
    .range('C1').value = 'ccc'
    .range('D1').value = 'ddd'
    .range('A19').value = 'SUM(A2:A18)'
    .range('A20').formula = '=SUM(A2:A18)'
    ; NICHT mit Excel 2000:
    .range('A1').activate
    Endwith

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

    GUISetState(@SW_SHOW)

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

    While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd

    [/autoit]
  • Brauche hilfe für mein Relloger progi

    • BugFix
    • 9. Februar 2008 um 09:57
    Zitat

    Hallo!

    Heute wurde das Unterforum "Bot-Coding" wieder geschlossen. Das ist so zu verstehen, dass sich die Verantwortlichen dieses Forums gegen Bots und für faires Spielen aussprechen. Im angesprochenen Forum war die Mithilfe der Fragestellenden oft so frappierend gering, dass wir keinen Sinn in einer Weiterführung sehen.
    Allen, die glauben sich unbedingt mit Bots beschäftigen zu müssen, seien folgende Quellen empfohlen:

    * AutoIt-Hilfe auf Englisch und auf Deutsch (derzeit nicht aktuell!) (Befehle wie PixelSearch, PixelChecksum, AdlibEnable, Mouse..., Send, SendKeepActive usw.)
    * Tutorial unter http://wiki.autoit.de/wiki/index.php/Tutorial
    * Archiv des Bot-Coding-Forums - die meisten grundlegenden Fragen wurden dort geklärt.


    Die Schließung des Unterforums bedeutet auch, dass Bot-Fragen auch an anderer Stelle unerwünscht sind. Das heißt ausdrücklich nicht, dass wir Fragen zu allen oben genannten Funktionen zensieren würden, aber es heißt, dass Fragen die sich eindeutig auf Bots beziehen mit Verweis auf obige Informationsquellen von Moderatoren geschlossen werden werden.

    AutoIt hat so viele schöne Seiten und es gibt so viele sinnvolle Sachen, die man damit machen kann - wirklich! :love:

    peethebee

    Alles anzeigen

    Topic Closed

  • Excel-Tabelle in GUI-Fenster eingebettet?

    • BugFix
    • 9. Februar 2008 um 09:44

    Die Fehlermeldung besagt, dass das Excel-Objekt nicht existiert.
    Sollte man abfangen mit:

    [autoit]

    $Obj1 = ObjCreate('OWC10.Spreadsheet')
    If Not IsObj($Obj1) Then Exit MsgBox(0, 'Fehler', 'Excel-Objekt konnte nicht erstellt werden.')

    [/autoit]

    Um eine Referenz auf Excel zu erstellen mußt du natürlich Excel installiert haben. - Hast du das? ^^

  • Farbe eines Bildfensters ändern

    • BugFix
    • 8. Februar 2008 um 23:19

    Schau dir mal GUI-Style $WS_POPUP an.

  • Stringverarbeitung - wenn möglich schnelle Hilfe

    • BugFix
    • 7. Februar 2008 um 22:32
    Zitat von autoirrer

    Bin kein Freund von Arrays :cursing: .


    Wer mich bzw. meine Skripte kennt mag es kaum galuben - aber auch ich hatte anfangs immer einen Riesenbogen um Arrays gemacht. ;)
    Und inzwischen ist mir das Arbeiten mit Arrays fast schon zur Passion geworden. :D
    Verknüpf doch einfach in Gedanken das Wort Array mit Tabelle - denn damit läßt es sich am Einfachsten vergleichen - und schon hat es seinen Schrecken verloren.
    Oder lies mal mein Tut dazu, vielleicht guckst du hinterher dann auch so: 8o

  • Probleme beim Auswerten von Checkboxen

    • BugFix
    • 7. Februar 2008 um 21:48

    Kann das Nicht-Funktionieren bestätigen unter:
    AutoIt 3.2.10.0
    - XP Home SP2
    - XP Pro SP2

    Bei gleicher Hardware unter Vorgängerversion AutoIt mit Au3Lib funzt es bei mir auch.
    Aus meiner Sicht ein klarer Bug. Kannst du ja mal im EN-Bugforum posten.
    Allerdings mach ich dir nicht viel Hoffnung. Die sind dort gleich sowas von beleidigt, wenn man einen Bug vermutet.
    Du bekommst dann wahrscheinlich die umfangreiche Antwort: This is no Bug. :wacko:

  • probleme mit _arraysort...

    • BugFix
    • 6. Februar 2008 um 23:36

    Schon erledigt ;)

    [autoit]

    #include<Array.au3>
    Func _sort($text)
    Local $sort[1][2]
    $i = 0
    While True
    $char = StringLeft($text,1)
    $text = StringReplace($text,$char,"")
    $sort[$i][0] = $char
    $sort[$i][1] = @extended
    $i = $i+1
    ReDim $sort[$i+1][2]
    If $text = "" Then ExitLoop
    WEnd
    ReDim $sort[$i][2]
    _ArraySort($sort,1,0,0,2,1) ; erst sortieren
    Return $sort ; dann Return!!
    EndFunc
    _ArrayDisplay(_sort("hallo wie geht es euch ?"))

    [/autoit]
  • CSV anhand eines Feldwertes sortieren

    • BugFix
    • 6. Februar 2008 um 20:29

    Hi,
    ich hab dir mal 'ne Lösung erstellt. Ich bin davon ausgegangen, dass das Datum in der Form "TT.MM.JJJJ" vorliegt.
    Die Funktion ist so ausgelegt, dass Tag und Monat auch einstellig eingegeben sein können (also '9.' statt '09.').

    Spoiler anzeigen
    [autoit]

    #include <array.au3>
    #include <file.au3>

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

    Dim $file = 'test.csv'
    Dim $fileOut = 'test_1.csv'
    Dim $arRaw
    _FileReadToArray($file, $arRaw)
    Dim $arOut[$arRaw[0]][2]

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

    For $i = 1 To UBound($arRaw) -1
    $tmp = StringSplit($arRaw[$i], ';')
    $arOut[$i-1][0] = $i
    $arOut[$i-1][1] = _konvert2sortDat($tmp[3])
    Next

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

    Func _konvert2sortDat($STR)
    $var = StringSplit($STR, '.')
    Return $var[3] & '-' & StringRight(0 & $var[2], 2) & '-' & StringRight(0 & $var[1], 2)
    EndFunc

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

    _ArraySort($arOut, 0, 0, 0, 2, 1)

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

    $fh = FileOpen($fileOut, 1)
    For $i = 0 To UBound($arOut) -1
    FileWriteLine($fh, $arRaw[$arOut[$i][0]])
    Next
    FileClose($fh)

    [/autoit]
  • funktionen von createobj (geht auch exe?)

    • BugFix
    • 4. Februar 2008 um 22:29

    Also ich würde mal vorsichtig sagen, dass du Referenzen auf alle Microsoftprodukte erzeugen kannst. Nähere Hinweise zu Methoden etc. findest du bei MSDN.
    Bei anderen Produkten hilft nur probieren ;)

  • Excel-Tabelle in GUI-Fenster eingebettet?

    • BugFix
    • 4. Februar 2008 um 21:09

    Du möchtest also ein "EmbeddedObject" gestalten. Gesehen hab ich es noch nicht. Adhoc wüßte ich nicht, wie ich es angehen sollte, würde aber die Machbarkeit nicht unbedingt in Frage stellen.
    Ich wünsch dir auf jeden Fall Erfolg bei deiner Suche.

  • fenster im fenster

    • BugFix
    • 3. Februar 2008 um 01:59

    Mit GUICtrlSetResizing() kann man es "festnageln" ;)

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™