Änder mal Zeile 18
[autoit]GUISetState
[/autoit]
zu
GUICtrlSetState
[/autoit]Änder mal Zeile 18
[autoit]GUISetState
[/autoit]
zu
GUICtrlSetState
[/autoit]Wenn UDF, dann aber auch mit Beschreibung & Beispiel, sowie der Möglichkeit Arrays zu übergeben.
#include <GuiListView.au3>
Opt("MustdeclareVars",1)
_Example()
Func _Example()
Local $hGUI, $hListview, $aTestItems[3][3] = [["Test 1_1", "Test 1_2", "Test 1_3"],["Test 2_1", "Test 2_2", "Test 2_3"],["Test 3_1", "Test 3_2", "Test 3_3"]]
$hGUI = GUICreate("")
$hListview = _GUICtrlListView_Create($hGUI, "", 20, 20, 360, 360)
For $i = 0 To 2
_GUICtrlListView_AddColumn($hListview, "Col " & $i + 1)
_GUICtrlListView_SetColumnWidth($hListview, $i, 120)
Next
_GUICtrlListView_AddArray($hListview, $aTestItems)
GUISetState()
MsgBox(64, "Info", "Insert String")
_GUICtrlListView_InsertRow($hListview, "Test Neu 2_1" & @TAB & "Test Neu 2_2" & @TAB & "Test Neu 2_3" & @CRLF & "Test Neu 3_1" & @TAB & "Test Neu 3_2" & @TAB & "Test Neu 3_3", 1, @TAB)
MsgBox(64, "Info", "Insert Array")
_GUICtrlListView_InsertRow($hListview, $aTestItems, 2)
Do
Until GUIGetMsg() = -3
EndFunc ;==>_Example
; #FUNCTION# ======================================================================================
; Name ..........: _GUICtrlListView_InsertRow()
; Description ...: Inserts a row into a ListView. You can specify the Index by yourself
; Syntax ........: _GUICtrlListView_InsertRow($hWnd, $sText, $iIndex[, $sDelimCol = "|"[, $sDelimRow = @CRLF]])
; Parameters ....: $hWnd - ListVIew Handle
; $sText - String or Array to insert. If $sText is a String, you can select your delimiters in $sDelimCol and $sDelimRow
; $iIndex - Listview Index to insert at
; $sDelimCol - [optional] Delimiter to split $sText with. (default:"|")
; $sDelimRow - [optional] Delimiter to split $sText with. (default:@CRLF)
; Return values .: Success - Returns 1
; Failure - Returns 0 and sets @error to
; |1 - Error when splitting the String.
; |@extended specifies, weither the it happend while splitting Col (1) or Row(2)
; |2 - Array is not 1D or 2D.
; Author ........: SEuBo, AutoBert, m-obi (http://www.autoit.de)
; Remarks .......:
; Link ..........:
; Example .......: Yes
; =================================================================================================
Func _GUICtrlListView_InsertRow($hWnd, $sText, $iIndex, $sDelimCol = "|", $sDelimRow = @CRLF)
Local $aItem, $aSub, $fAr, $aText = $sText
If IsKeyword($sDelimCol) Then $sDelimCol = Opt('GuiDataSeparatorChar')
Switch IsArray($aText)
Case True
If UBound($aText, 0) <> 2 And UBound($aText, 0) <> 1 Then Return SetError(2, 0, 0)
Case False
$aItem = StringSplit($aText, $sDelimRow, 3)
If @error Then Return SetError(1, 1, 0)
For $i = UBound($aItem) - 1 To 0 Step -1
$aSub = StringSplit($aItem[$i], $sDelimCol, 3)
If @error Then Return SetError(1, 1, 0)
If Not $fAr Then
Dim $aText[UBound($aItem)][UBound($aSub)]
$fAr = True
EndIf
For $j = 0 To UBound($aSub) - 1
$aText[$i][$j] = $aSub[$j]
Next
Next
EndSwitch
For $i = UBound($aText) - 1 To 0 Step -1
_GUICtrlListView_InsertItem($hWnd, $aText[$i][0], $iIndex)
For $j = UBound($aText, 2) - 1 To 1 Step -1
_GUICtrlListView_AddSubItem($hWnd, $iIndex, $aText[$i][$j], $j)
Next
Next
Return SetError(0, 0, 1)
EndFunc ;==>_GUICtrlListView_InsertRow
Geh mal auf FireFox -> Extras -> MozRepl -> Start und danach auf -> Activate on Startup
Eine For-Next Schleife. Diese Schleife wird, verwendet um eine Aufgabe bestimmt oft zu wieder holen (zb: 1 to 10 = 1 bis 10). Die definierte Variable ist die sog. Laufvariable, die immer den aktuellen "Zähler" angibt. Optional ist bei einer For-Next schleife der Step Parameter, mit dem die Schrittweite angegeben werden
;1 - 10. In 1er Schritten
MsgBox(64, "", "1 - 10. In 1er Schritten")
For $i = 1 To 10
MsgBox(0, "For $i = 1 To 10", $i)
Next
; Oder in 2er Schritte
MsgBox(64, "", "1 - 10. In 2er Schritten")
For $i = 1 To 10 Step 2
MsgBox(0, "For $i = 1 To 10 Step 2", $i)
Next
; Das ganze geht auch rückwärts: (Dafür muss Step aber negativ sein!!)
MsgBox(64, "", "Das ganze geht auch rückwärts: (Dafür muss Step aber negativ sein!!)")
For $i = 10 To 1 Step -1
MsgBox(0, "For $i = 10 To 1 Step -1", $i)
Next
MsgBox(64, "", "For-Next schleifen werden Oft benutzt, um Arrays durchzugehen")
Dim $aArray[5] = [ _
"Wert 1", _
"Wert 2", _
"Wert 3", _
"Wert 4", _
"Wert 5" _
]
For $i = 0 To UBound($aArray)-1 ; Ubound gibt die Größe eines Arrays zurück. (Hier 5)
;Da der Array aber nur von $aArray[0] bis $aArrray[4] geht (arrays sind 0 basiert), machen wir nicht
;For $i = 1 to Ubound($aArray), sondern For $i = 0 to Ubound($aArray)-1
MsgBox(0
,"$aArray["&$i&"]",$aArray[$i])
Next
So rum besser?
Func _GUICtrlListView_InsertRow($hWnd, $sText, $iIndex)
$aItem = StringSplit($sText, @CRLF, 3)
For $i = UBound($aItem) - 1 To 0 Step -1
$aSub = StringSplit($aItem[$i], @TAB, 3)
If Not @error Then
_GUICtrlListView_InsertItem($hWnd, $aSub[0], $iIndex)
For $j = 0 To UBound($aSub) - 1
_GUICtrlListView_AddSubItem($hWnd, $iIndex, $aSub[$j], $j+1)
Next
EndIf
Next
EndFunc ;==>_GUICtrlListView_InsertRow
Soo Versuch #215235235
Func _GUICtrlListView_InsertRow($hWnd, $sText, $iIndex)
$aItem = StringSplit($sText, @CRLF, 3)
For $i = 0 To UBound($aItem) - 1
$aSub = StringSplit($aItem[$i], @TAB, 3)
If Not @error Then
_GUICtrlListView_InsertItem($hWnd, $aSub[0], $iIndex)
For $j = 0 To UBound($aSub) - 1
_GUICtrlListView_AddSubItem($hWnd, $iIndex, $aSub[$j], $j+1)
Next
EndIf
Next
EndFunc ;==>_GUICtrlListView_InsertRow
Hab mir jetzt auch extra ein Beispiel dazu gebastelt
#include <GuiListView.au3>
$hGUI = GUICreate("")
$hListview = _GUICtrlListView_Create($hGUI, "", 20, 20, 360, 360)
_Example($hListview)
_GUICtrlListView_InsertRow($hListview, "Test Neu 2_1" & @TAB & "Test Neu 2_2" & @TAB & "Test Neu 2_3" & @CRLF & "Test Neu 3_1" & @TAB & "Test Neu 3_2" & @TAB & "Test Neu 3_3", 1)
GUISetState()
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case -3
Exit
EndSwitch
WEnd
Func _GUICtrlListView_InsertRow($hWnd, $sText, $iIndex)
$aItem = StringSplit($sText, @CRLF, 3)
For $i = 0 To UBound($aItem) - 1
$aSub = StringSplit($aItem[$i], @TAB, 3)
If Not @error Then
_GUICtrlListView_InsertItem($hWnd, $aSub[0], $iIndex)
For $j = 0 To UBound($aSub) - 1
_GUICtrlListView_AddSubItem($hWnd, $iIndex, $aSub[$j], $j+1)
Next
EndIf
Next
EndFunc ;==>_GUICtrlListView_InsertRow
Func _Example($hListview)
Local $aTestItems[3][3] = [["Test 1_1", "Test 1_2", "Test 1_3"],["Test 2_1", "Test 2_2", "Test 2_3"],["Test 3_1", "Test 3_2", "Test 3_3"]]
_GUICtrlListView_AddColumn($hListview, "Col 1")
_GUICtrlListView_AddColumn($hListview, "Col 2")
_GUICtrlListView_AddColumn($hListview, "Col 3")
_GUICtrlListView_SetColumnWidth($hListview, 0, 120)
_GUICtrlListView_SetColumnWidth($hListview, 1, 120)
_GUICtrlListView_SetColumnWidth($hListview, 2, 120)
_GUICtrlListView_AddArray($hListview, $aTestItems)
EndFunc ;==>_Example
Da Oscar nicht da ist, und ich langeweile habe:
(?s) = . (unbekanntes Zeichen) kann auch für Zeilenumbrüche Stehen (sog. DotAll-Flag)
.* = 0 - unendlich viele unbekannte Zeichen
Kunde = Sucht nach dem WOrt Kunde
\t* = 0 - unendlich viele Tabs (@TAB)
(.+?) = Sucht nach mindestens einem, bis unendlich vielen unbekannten Zeichen (Das wird In ein Subpattern geschrieben)
\r = Gefolgt von einem Carriage Return (@CR)
.* = und Null bis unendlich viele unbekannte Zeichen
Der komplette gefundene Text wird durch das ersetzt, was In dem Subpattern steht (Zeile 5)
Also bleibt auch nur das, was Hinter "Kunde " steht, übrig.
Alles anzeigen
Wenn dich RegExp interessiert - http://www.google.de/search?q=StringRegExp+Tutorial
Sorry mein Fehler, hatte nich nochmal drüber geguckt.
So sollte es aber klappen (hoffe ich)
Func _GUICtrlListView_InsertRow($hWnd, $sText, $iIndex)
$aItem = StringSplit($sText, @CRLF, 3)
For $i = 0 To UBound($aItem) - 1
$aSub = StringSplit($aItem[$i], @TAB, 3)
If Not @error Then
_GUICtrlListView_InsertItem($hWnd, $aSub[0], $iIndex)
For $j = 1 To UBound($aSub) - 1
_GUICtrlListView_AddSubItem($hWnd, $iIndex, $aSub[$i], $i)
Next
EndIf
Next
EndFunc ;==>_GUICtrlListView_InsertRow
Probier mal bitte diese Funktion:
Func _GUICtrlListView_InsertRow($hWnd, $sText, $iIndex)
;m-obi, edit by SEuBo
$aItem = StringSplit($sText, @CRLF, 3)
For $i = 0 To UBound($aItem) - 1
$aSub = StringSplit($aItem[$i], @TAB, 3)
If Not @error Then
_GUICtrlListView_InsertItem($hWnd, $aSplit[0], $iIndex)
For $j = 1 To UBound($aSub) - 1
_GUICtrlListView_AddSubItem($hWnd, $iIndex, $aSplit[$i], $i)
Next
EndIf
Next
EndFunc ;==>_GUICtrlListView_InsertRow
Die Funktion von m-obi trennt ja auch an "|" und nicht bei @TAB?!
versuch doch erstmal ein Quadrat zu machen, dass sich von links nach rechts wandert, und wenn es rechts aus dem Bild raus ist, soll es links wieder reinkommen.
Ich würd dir ja den Link zu meinem angefangenen GDI+ Tut schicken, aber dann kommt GTASpider wieder und haut mir noch ne Verwarnung rein. Keinen Bock da drauf.
Hab jetzt einfach mal ALLES ausgelesen:
#include <Array.au3>
Global $sText
_Text()
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]$aKundeninfo = StringRegExp($sText, "(?i)(?:Kunde\s+(.+)\r\n)(?:Firma\s+(.+)\r\n)?(?:Strasse\s+(.+)\r\n)?(?:Ort\s+(.+)\r\n)?(?:Postfach\s+(.+)\r\n)?(?:Vorwahl\s+(.+)\r\n)?(?:Rufnummer\s+(.+)\r\n)?", 3)
;~ _ArrayDisplay($aKundeninfo)
For $i = 0 To UBound($aKundeninfo) - 1 Step 7
MsgBox(0, "", _
$aKundeninfo[$i + 0] & @CRLF & _
$aKundeninfo[$i + 1] & @CRLF & _
$aKundeninfo[$i + 2] & @CRLF & _
$aKundeninfo[$i + 3] & @CRLF & _
$aKundeninfo[$i + 4] & @CRLF & _
$aKundeninfo[$i + 5] & @CRLF & _
$aKundeninfo[$i + 6] _
)
$aBestellung = StringRegExp($sText, "Kunde\s+(" & $aKundeninfo[$i] & ")[\w\W]+?Bestellung\r\nDatum (.+)\r\nProdukte([\w\W]+?)(?=Geliefert)Geliefert\r\nDatum (.+)\r\nProdukte([\w\W]+?)(?=Kunde|\Z)", 3)
_ArrayDisplay($aBestellung)
Next
Func _Text()
$sText = _
"Kunde Max Mustermann" & @CRLF & _
"Firma autoit" & @CRLF & _
"Strasse Fragenzeichen xy" & @CRLF & _
"Ort nirgendwo" & @CRLF & _
"Postfach 0850" & @CRLF & _
"Vorwahl 0190" & @CRLF & _
"Rufnummer 110" & @CRLF & _
"" & @CRLF & _
"Bestellung" & @CRLF & _
"Datum 04.4.2010" & @CRLF & _
"Produkte" & @CRLF & _
"1 x Holz" & @CRLF & _
"2 x Fliesen" & @CRLF & _
"" & @CRLF & _
"Geliefert" & @CRLF & _
"Datum 06.04.2010" & @CRLF & _
"Produkte" & @CRLF & _
"2x Fliesen" & @CRLF & _
"1x Holz" & @CRLF & _
"" & @CRLF & _
"Kunde Max Musterfrau" & @CRLF & _
"Strasse Fragenzeichen xyz" & @CRLF & _
"Ort überall" & @CRLF & _
"Vorwahl 01805" & @CRLF & _
"Rufnummer 112" & @CRLF & _
"" & @CRLF & _
"Bestellung" & @CRLF & _
"Datum 14.4.2010" & @CRLF & _
"Produkte" & @CRLF & _
"2 x Laminat" & @CRLF & _
"3 x Eis" & @CRLF & _
"" & @CRLF & _
"Geliefert" & @CRLF & _
"Datum 16.04.2010" & @CRLF & _
"Produkte" & @CRLF & _
"2x Laminat" & @CRLF & _
"3x Eis"
EndFunc ;==>_Text
For $i = 0 to $anzahl
[/autoit]
zu
For $i = 0 to $anzahl-1
[/autoit]Ubound gibt die anzahl der Elemente aus (zb 10.)
Der Array selbst geht aber nur von 0-9.
Die neue Version ist genial. Ein großes Lob von mir!
Der Text ist nun gut lesbar (und vor allem bündig!). Sehr gut. Einziges Manko ist das leichte "laggen", der Text springt leicht nach oben, aber das wird wohl an den langsamen AutoIt Berechnungen liegen.
Neben der Mandelbrotmenge von Andy ist das hier definitv eins der Highlights dieses Jahres für mich.
You Rock
Vielleicht solltest du noch erwähnen, dass das Standard Passwort 12345 ist, und danach geändert werden muss (sollte).
Ansonsten ein cooles Ding
Lies doch einfach die Datei mit FileRead komplett ein, und ersetz am Ende mit StringReplace()
Danach schreibst du den bearbeiteten Text wieder komplett in die Datei...
Logischerweise ja.
If Not @error Then.... = If IsArray() Then ...
der else teil kommt dann also dran, wenn kein array besteht.
$shortdesc[0] = [""]
[/autoit]
zu
$shortdesc[0] = ""
[/autoit]Die eckigen klammern brauchst du nur, um bei der Array erstellung schon werte mitzugeben
[autoit]Dim $Test[3] = ["Eins","Zwei","Drei"]
[/autoit] ZitatFileInstall
Parameter
source Der Quellpfad der Datei, die eingebunden und kompiliert werden soll. Dieser muss ein reiner String sein; er kann keine Variable oder das Ergebnis eines Funktionsaufrufes sein. Es kann ein relativer Pfad (man verwendet .\ oder ..\ in dem Pfad) zu der Quelldatei (.au3) sein.dest Der Zielpfad (mit abschließendem "Backslash", falls nur das Verzeichnis angegeben wird). Das kann eine Variable sein.
flag [optional] Das Flag bestimmt, ob existierende Dateien überschrieben werden sollen:
0 = (Standard) Überschreibt bestehende Dateien nicht
1 = Überschreibt bestehende Dateien