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])
Bei mehreren Instanzen sind die zugehörigen PID's jeweils an Arrayposition[n][1].
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])
Bei mehreren Instanzen sind die zugehörigen PID's jeweils an Arrayposition[n][1].
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.
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.
Neue Version - s. Post 1
In der For-Schleife bei "Case $msg = $ButtonI " fehlt Next ![]()
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. ![]()
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.
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).
# 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
#Region - TimeStamp
; 2011-08-15 13:41:03 v 1.1
#EndRegion - TimeStamp
#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)
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]
; == 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
_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
$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)
_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)
$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)
GUISetState(@SW_SHOW, $Form1)
GUIRegisterMsg($WM_NOTIFY, "MY_WM_COMMAND")
While 1
Sleep(100)
WEnd
Func Form1Close()
Exit
EndFunc ;==>Form1Close
Func Form2Close()
GUISetState(@SW_HIDE, $Form2)
GUICtrlSetData($Edit1, '')
EndFunc ;==>Form2Close
Func Form3Close()
GUISetState(@SW_HIDE, $Form3)
If $edit Then
_WriteEditedAbbrev()
Else
_WriteNewAbbrev()
EndIf
EndFunc ;==>Form3Close
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
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
;==================================================================================================
; 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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
; 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
DL bisher: 278
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:
$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
;===================================================================================================
; 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
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.
#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.')
$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
GUISetState(@SW_SHOW)
[/autoit] [autoit][/autoit] [autoit]While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
ZitatAlles anzeigenHallo!
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!
peethebee
Topic Closed
Die Fehlermeldung besagt, dass das Excel-Objekt nicht existiert.
Sollte man abfangen mit:
$Obj1 = ObjCreate('OWC10.Spreadsheet')
If Not IsObj($Obj1) Then Exit MsgBox(0, 'Fehler', 'Excel-Objekt konnte nicht erstellt werden.')
Um eine Referenz auf Excel zu erstellen mußt du natürlich Excel installiert haben. - Hast du das? ![]()
Schau dir mal GUI-Style $WS_POPUP an.
Zitat von autoirrerBin kein Freund von Arrays
.
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. ![]()
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: ![]()
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:
Schon erledigt ![]()
#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 ?"))
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.').
#include <array.au3>
#include <file.au3>
Dim $file = 'test.csv'
Dim $fileOut = 'test_1.csv'
Dim $arRaw
_FileReadToArray($file, $arRaw)
Dim $arOut[$arRaw[0]][2]
For $i = 1 To UBound($arRaw) -1
$tmp = StringSplit($arRaw[$i], ';')
$arOut[$i-1][0] = $i
$arOut[$i-1][1] = _konvert2sortDat($tmp[3])
Next
Func _konvert2sortDat($STR)
$var = StringSplit($STR, '.')
Return $var[3] & '-' & StringRight(0 & $var[2], 2) & '-' & StringRight(0 & $var[1], 2)
EndFunc
_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)
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 ![]()
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.
Mit GUICtrlSetResizing() kann man es "festnageln" ![]()