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

Beiträge von Oscar

  • Unbekannte Wörter aus TXT auslesen

    • Oscar
    • 3. Dezember 2008 um 11:20

    funkey: Da ging es aber darum den gesamten Text ohne die Tags ("<...>") zu erfassen. Hier will er ja nur den Text zwischen diesen bestimmten Tags ("In meinem TXT ist eine unmenge von Text bzw. Code").

  • Unbekannte Wörter aus TXT auslesen

    • Oscar
    • 3. Dezember 2008 um 11:12

    Kannst Du mit StringRegExp lösen:

    [autoit]


    #include<Array.au3>
    $string = '<word><name>Beispielwort</name> was ganz anderes <word><name>trara</name> 455tgfere<word><name>gefunden</name><wwfeee>'
    $array = StringRegExp($string, '<word><name>(.*?)</name>', 3)
    _ArrayDisplay($array)

    [/autoit]
  • Process Überwachungs Programm

    • Oscar
    • 2. Dezember 2008 um 19:32

    Das macht keinen Unterschied. Eine Endlosschleife bleibt eine Endlosschleife, ganz egal welche Zahl Du da einträgst.
    Du musst Dir erstmal Deinen Programmablauf anschauen. Die erste Endlosschleife wird doch nirgendwo verlassen (Stichwort: ExitLoop).

    Edit: Oder, was hier angebrachter wäre, Du läßt die zweite Schleife weg, packst den Rest aus der 2. Schleife in eine Funktion und rufst diese per AdlibEnable auf.

  • Process Überwachungs Programm

    • Oscar
    • 2. Dezember 2008 um 19:24

    Und wann (zu welchem Zeitpunkt) wird die zweite While...WEnd-Schleife ausgeführt? [Wink mit dem Zaunpfahl] ;)

  • Probleme mit ListView

    • Oscar
    • 2. Dezember 2008 um 15:45

    Ich habe mein Script mal kommentiert (und noch etwas erweitert) und in Scripte gepostet.

  • Listview-Datenbank-Beispiel

    • Oscar
    • 2. Dezember 2008 um 15:42

    Es gibt ein neues, verbessertes Beispiel-Script: Listview-Datenbank v3


    Hier ist mal ein (kommentiertes) Beispiel-Script, wie man mit Listview eine Datenbank erstellen kann.

    Vorhandene Eigenschaften:
    - Neuen Eintrag erstellen
    - Eintrag bearbeiten
    - Datenbank laden/speichern
    - Markierte Einträge löschen
    - Alle Einträge löschen
    - Kontextmenü für "Neuen Eintrag", "Eintrag bearbeiten" und "Markierte Einträge löschen"
    - Sortieren des Listviews über einen Klick auf die Spaltenüberschrift
    - Suche im gesamten Listview nach dem eingegebenen Suchbegriff und Anzeige in einem extra Listview

  • While mit Timeerstart usw. benutzen.

    • Oscar
    • 2. Dezember 2008 um 12:43

    Micha, Deine "Sparvariante" ist aber eine Zeile länger. :P

  • While mit Timeerstart usw. benutzen.

    • Oscar
    • 2. Dezember 2008 um 11:52

    Benutze zwei ineinander verschachtelte Schleifen:

    [autoit]


    While 1
    $begin = TimerInit()
    While TimerDiff($begin) < 5000
    Sleep(100)
    WEnd
    MsgBox(0, "", "")
    WEnd

    [/autoit]
  • Probleme mit ListView

    • Oscar
    • 2. Dezember 2008 um 10:25

    Das geht mit:

    [autoit]


    _GUICtrlListView_RegisterSortCallBack($hLVHandle)

    [/autoit]

    und dann:

    [autoit]


    Case $hListView
    _GUICtrlListView_SortItems($hLVHandle, GUICtrlGetState($hListView))

    [/autoit]
  • Probleme mit ListView

    • Oscar
    • 2. Dezember 2008 um 10:10

    Hmm...habe das gerade mal mit ~1500 Einträgen probiert. Ich finde, dass das recht flott geht.
    Ok, das sortieren dauert etwas, aber so schlimm finde ich das nicht.

    Liegt wohl auch am verwendeten Rechner. ;)

    Edit: Noch ein Test mit 5380 Einträgen: umsortieren des Listview dauert bei mir ~20 sek. Naja, für eine Scriptsprache ganz passabel.

  • µit - November

    • Oscar
    • 2. Dezember 2008 um 09:48

    Wie sieht es denn jetzt mit dem November-Wettbewerb aus?

    Wer hat denn alles mitgemacht und, vor allem, wo sind die Scripte? :)

  • Probleme mit ListView

    • Oscar
    • 2. Dezember 2008 um 05:33

    Eine Inidatei ist als Datenbank nicht so gut geeignet. Benutze lieber ein eigenes Format.
    Ich habe Dein Beispielscript mal zu einem "Listview-Datenbank-Beispiel" ausgebaut:

    Edit: Jetzt mit noch mehr Funktionen (Neuer Eintrag, Eintrag bearbeiten, Markierte Einträge löschen, usw.)

    Edit2: Habe die Load-Funktion noch etwas beschleunigt.

    Spoiler anzeigen
    [autoit]


    #include<ListViewConstants.au3>
    #include<ButtonConstants.au3>
    #include<GUIConstantsEx.au3>
    #include<Guilistview.au3>

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

    Global $sHeader = "Artikelnummer|Art|Nummer|Baureihe|Name"
    Global $sDBFile = @ScriptDir & "\datenbank.txt"
    Global $iEdit

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

    #Region Hauptfenster
    Global $hGui = GUICreate("Listview-Datenbank-Beispiel", 600, 480)
    Global $hListView = GUICtrlCreateListView($sHeader, 0, 0, 600, 420, $LVS_SHOWSELALWAYS)

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

    Global $hLVHandle = GUICtrlGetHandle($hListView)
    _GUICtrlListView_SetColumn($hLVHandle, 0, "Artikelnummer", 120, 1) ; 120 Px breit, rechts ausgerichtet
    _GUICtrlListView_SetColumn($hLVHandle, 1, "Art", 60, 0) ; 60 Px breit, links ausgerichtet
    _GUICtrlListView_SetColumn($hLVHandle, 2, "Nummer", 90, 0) ; 90 Px breit, links ausgerichtet
    _GUICtrlListView_SetColumn($hLVHandle, 3, "Baureihe", 100, 0) ; 100 Px breit, links ausgerichtet
    _GUICtrlListView_SetColumn($hLVHandle, 4, "Name", 120, 0) ; 120 Px breit, links ausgerichtet

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

    Global $hNew = GUICtrlCreateButton("Neuer Eintrag", 5, 430, 80, 35, $BS_DEFPUSHBUTTON)
    Global $hEdit = GUICtrlCreateButton("Markierten Eintrag bearbeiten", 95, 430, 110, 35, $BS_MULTILINE)
    Global $hLoad = GUICtrlCreateButton("Laden", 230, 430, 70, 35)
    Global $hSave = GUICtrlCreateButton("Speichern", 310, 430, 70, 35)
    Global $hDel = GUICtrlCreateButton("Markierte Einträge löschen", 400, 430, 90, 35, $BS_MULTILINE)
    Global $hDelAll = GUICtrlCreateButton("Alle Einträge löschen", 500, 430, 90, 35, $BS_MULTILINE)
    #EndRegion Hauptfenster

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

    #Region Fenster für neuen Eintrag
    Global $hGuiNew = GUICreate("Neuer Eintrag", 502, 120)
    Global $aHeader = StringSplit($sHeader, '|'), $aNew[$aHeader[0]]
    For $i = 1 To $aHeader[0]
    GUICtrlCreateLabel($aHeader[$i], 4 + ($i - 1) * 100, 25, 90, 20)
    $aNew[$i - 1] = GUICtrlCreateInput("", 2 + ($i - 1) * 100, 40, 98, 20)
    Next
    Global $hCreate = GUICtrlCreateButton("Eintrag speichern", 190, 90, 130, 25, $BS_DEFPUSHBUTTON)
    #EndRegion Fenster für neuen Eintrag

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

    _GUICtrlListView_RegisterSortCallBack($hLVHandle)

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

    GUISetState(@SW_SHOW, $hGui)

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

    If FileExists($sDBFile) Then Load()

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

    While 1
    $nMsg = GUIGetMsg(1)
    Switch $nMsg[0]
    Case $hListView
    _GUICtrlListView_SortItems($hLVHandle, GUICtrlGetState($hListView))
    Case $hNew
    WinSetTitle($hGuiNew, "", "Neuer Eintrag")
    GUISetState(@SW_SHOW, $hGuiNew)
    GUISetState(@SW_DISABLE, $hGui)
    Case $hEdit
    WinSetTitle($hGuiNew, "", "Eintrag bearbeiten")
    GUISetState(@SW_SHOW, $hGuiNew)
    GUISetState(@SW_DISABLE, $hGui)
    Edit()
    Case $hLoad
    Load()
    Case $hSave
    Save()
    Case $hDel
    If MsgBox(256 + 32 + 4, "Einträge löschen", "Wollen sie die markierten Einträge wirklich löschen?") = 6 Then _GUICtrlListView_DeleteItemsSelected($hLVHandle)
    Case $hDelAll
    If MsgBox(256 + 32 + 4, "Einträge löschen", "Wollen sie wirklich alle Einträge löschen?") = 6 Then _GUICtrlListView_DeleteAllItems($hLVHandle)
    Case $hCreate
    NewItem()
    Case $GUI_EVENT_CLOSE
    Switch $nMsg[1]
    Case $hGui
    If MsgBox(32 + 4, "Beenden", "Wollen sie das Programm wirklich beenden?") = 6 Then End()
    Case $hGuiNew
    $iEdit = 0
    GUISetState(@SW_HIDE, $hGuiNew)
    GUISetState(@SW_ENABLE, $hGui)
    WinActivate($hGui)
    EndSwitch
    EndSwitch
    WEnd

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

    Func End()
    ;~ Save()
    _GUICtrlListView_UnRegisterSortCallBack($hLVHandle)
    Exit
    EndFunc

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

    Func NewItem()
    Local $sItem = ""
    For $i = 0 To UBound($aNew) - 1
    If $iEdit Then
    _GUICtrlListView_SetItemText($hLVHandle, $iEdit, GUICtrlRead($aNew[$i]), $i)
    Else
    $sItem &= GUICtrlRead($aNew[$i]) & "|"
    EndIf
    GUICtrlSetData($aNew[$i], "")
    Next
    If $iEdit Then
    $iEdit = 0
    GUISetState(@SW_HIDE, $hGuiNew)
    GUISetState(@SW_ENABLE, $hGui)
    WinActivate($hGui)
    Else
    GUICtrlSetState($aNew[0], $GUI_FOCUS)
    GUICtrlCreateListViewItem(StringTrimRight($sItem, 1), $hListView)
    EndIf
    EndFunc ;==>NewItem

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

    Func Edit()
    $iEdit = _GUICtrlListView_GetSelectionMark($hLVHandle)
    Local $aItem = _GUICtrlListView_GetItemTextArray($hLVHandle, $iEdit)
    For $i = 1 To $aItem[0]
    GUICtrlSetData($aNew[$i - 1], $aItem[$i])
    Next
    EndFunc ;==>Edit

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

    Func Load()
    Local $hFile = FileOpen($sDBFile, 0), $sItem
    If $hFile <> -1 Then
    _GUICtrlListView_BeginUpdate($hLVHandle)
    While True
    $sItem = FileReadLine($hFile)
    If @error Then ExitLoop
    GUICtrlCreateListViewItem($sItem, $hListView)
    WEnd
    _GUICtrlListView_EndUpdate($hLVHandle)
    FileClose($hFile)
    EndIf
    EndFunc ;==>Load

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

    Func Save()
    Local $iCount = _GUICtrlListView_GetItemCount($hLVHandle) - 1, $sItem
    Local $hFile = FileOpen($sDBFile, 2)
    If $hFile <> -1 Then
    For $i = 0 To $iCount
    $sItem = _GUICtrlListView_GetItemTextString($hLVHandle, $i)
    FileWriteLine($hFile, $sItem)
    Next
    FileClose($hFile)
    EndIf
    EndFunc ;==>Save

    [/autoit]
  • guictrlcreateedit mehrfabrig

    • Oscar
    • 1. Dezember 2008 um 21:56

    Schau Dir mal mein Script aus dem folgenden Post an: [ offen ] taste gedrückt halten

  • MsgBox

    • Oscar
    • 1. Dezember 2008 um 21:24

    So, jetzt ist Schluß!

    Wir unterstützen hier keine Spaßviren. Thread closed!

  • guictrlcreateedit mehrfabrig

    • Oscar
    • 1. Dezember 2008 um 21:19

    Ich hatte nur gefragt, weil ich die oberen Zeilen nicht kommentiert hatte.

  • guictrlcreateedit mehrfabrig

    • Oscar
    • 1. Dezember 2008 um 20:35

    Hier kommt das Beispielscript:

    Spoiler anzeigen
    [autoit]


    #include<GUIConstantsEx.au3>
    #include<IE.au3>
    #include<WindowsConstants.au3>

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

    $HTMLTitle = 'Test'
    $sDest = '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">' & @CRLF & '<html>' & @CRLF
    $sDest &= '<head>' & @CRLF & '<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">' & @CRLF
    $sDest &= '<title>' & $HTMLTitle & '</title>' & @CRLF & '</head>' & @CRLF & '<body bgcolor="#000000">' & @CRLF
    $sDest &= '<p><font color="#ffff00">Das</font> <font color="#00ffff">ist ein</font> <font color="#00ff00">Beispieltext.</font></p>'
    $sDest &= '</body>'
    $sDestFile = @ScriptDir & '\beispieltext.html'
    $hFile = FileOpen($sDestFile, 2) ; Zieldatei zum schreiben öffnen
    FileWrite($hFile, $sDest) ; HTML in Datei schreiben
    FileClose($hFile) ; Datei schließen

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

    $Width = 500 ; Breite des Fensters
    $Height = 300 ; Höhe des Fensters
    $Left = Int(@DesktopWidth/2-$Width/2) ; Horizontale Position (zentriert)
    $Top = Int(@DesktopHeight/2-$Height/2) ; Vertikale Position (zentriert)

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

    $oIE = _IECreateEmbedded() ; Einen "eingebetteten" IE erstellen

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

    $hGui = GUICreate($HTMLTitle, $Width, $Height, $Left, $Top, $WS_SIZEBOX) ; Anzeigefenster erstellen

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

    GUICtrlCreateObj($oIE, 10, 10, $Width-20, $Height-50) ; IE in die GUI integrieren
    GUICtrlSetResizing(-1, $GUI_DOCKBORDERS)
    _IENavigate($oIE, $sDestFile) ; die HTML-Seite aufrufen
    GUISetState()

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

    Do
    Until GUIGetMsg() = -3

    [/autoit]

    Kannst Du HTML?

  • MsgBox

    • Oscar
    • 1. Dezember 2008 um 20:17

    Das habe ich mir schon gedacht. Deshalb mein Hinweis auf die Forenregeln!

    Du bist lange genug dabei. Lies sie und beachte sie!

  • guictrlcreateedit mehrfabrig

    • Oscar
    • 1. Dezember 2008 um 20:04

    Soll/muss es denn ein Eingabefeld sein?

    Weil, wenn Du das nur für eine Ausgabe benötigst, dann kannst Du auch eine HTML-Datei erstellen (mit verschiedenen Schriftfarben) und diese dann in einem embedded IE anzeigen lassen.

  • MsgBox

    • Oscar
    • 1. Dezember 2008 um 20:01

    Wozu brauchst Du 1000 Messageboxen?

    Ich habe das Gefühl, es wird mal wieder Zeit auf die Forenregeln hinzuweisen. X(

  • PSI

    • Oscar
    • 1. Dezember 2008 um 19:55

    Damit Du Dir nicht die Mühe machen musst, das Bild zu zerschneiden und dann mühsam wieder mit einzelnen Pics zusammenzusetzen habe ich Dir mal ein Beispiel erstellt, wie man es stattdessen machen kann:

    Spoiler anzeigen
    [autoit]


    #include<GUIConstantsEx.au3>
    Opt('MouseCoordMode', 0)
    Global $aCoord[5][4] = [ _
    [016,019,050,064], _
    [016,065,050,108], _
    [016,109,050,152], _
    [016,153,050,196], _
    [016,197,050,240] _
    ]
    Global $aElements[5] = [ _
    'Wasserstoff', _
    'Lithium', _
    'Natrium', _
    'Kalium', _
    'Rubidium' _
    ]
    $iLeft = 80
    $iTop = 30
    $hGui = GUICreate('PSE', 800, 600)
    GUISetBkColor(0xffffff)
    $hPic = GUICtrlCreatePic('pse-gross.gif', $iLeft, $iTop, 650, 442)
    GUISetState()
    While True
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE
    Exit
    Case $hPic
    $aInfo = GUIGetCursorInfo($hGui)
    $aInfo[0] -= $iLeft
    $aInfo[1] -= $iTop
    For $i = 0 To UBound($aCoord) - 1
    If $aInfo[0] > $aCoord[$i][0] And $aInfo[0] < $aCoord[$i][2] And $aInfo[1] > $aCoord[$i][1] And $aInfo[1] < $aCoord[$i][3] Then ExitLoop
    Next
    If $i <= UBound($aCoord) -1 Then
    ToolTip($aElements[$i])
    Else
    ToolTip('')
    EndIf
    EndSwitch
    WEnd

    [/autoit]

    Ist jetzt nur für die ersten 5 Elemente (hatte keine Lust alle Koordinaten rauszusuchen), aber ich denke, dass es das Prinzip verdeutlicht. Zum Ausbau also das Array erweitern und die übrigen Koordinatenwerte eintragen.

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™