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

  • Erweiterte Stringverarbeitung für AutoIT3

    • BugFix
    • 13. September 2006 um 09:22

    Danke, würde es gern testen aber:

    C
    ERROR: can't open include file <\Archiv\Prg\AutoIt\Include\tools00.au3>
    #include <\Archiv\Prg\AutoIt\Include\tools00.au3>

    Wir brauchen also noch die "<tools00.au3>" auf die die "<rexx01.au3>" verweist. ;)

  • zweite GUI

    • BugFix
    • 10. September 2006 um 20:17

    Ich antworte trotzdem mal :)
    Das Umschalten zwischen 2 Fenstern kannst du am einfachsten so realisieren:

    Spoiler anzeigen
    Code
    #include <GuiConstants.au3>
    $gui1 = GUICreate("GUI 1", 400,200, -1, -1)
    $Button1 = GUICtrlCreateButton("GUI 2", 90, 100, 80, 25)
    $gui2 = GUICreate("GUI 2", 200,100,-1,-1)
    $Button2 = GUICtrlCreateButton("GUI 1", 90, 50, 80, 25)
    GuiSetState(@SW_SHOW, $gui1)
    While 1
    	$msg = GuiGetMsg()
    	Select
    	Case $msg = $GUI_EVENT_CLOSE
    		ExitLoop
    	Case $msg = $Button1
    		GUISetState(@SW_HIDE, $gui1)
    		GuiSetState(@SW_SHOW, $gui2)
    	Case $msg = $Button2
    		GUISetState(@SW_HIDE, $gui2)
    		GuiSetState(@SW_SHOW, $gui1)		
    	EndSelect
    WEnd
    Exit
    
    
    ; oder wenn die erste GUI sichtbar bleiben soll (Hintergrund):
    
    
    While 1
    	$msg = GuiGetMsg()
    	Select
    	Case $msg = $GUI_EVENT_CLOSE
    		ExitLoop
    	Case $msg = $Button1
    		GuiSetState(@SW_SHOW, $gui2)
    	Case $msg = $Button2
    		GUISetState(@SW_HIDE, $gui2)
    		GuiSetState(@SW_RESTORE, $gui1)		
    	EndSelect
    WEnd
    Alles anzeigen
  • klicken auf label?

    • BugFix
    • 10. September 2006 um 16:58

    Ein Gedanke kommt mir grad.
    Schreib den gewünschten Text in ein Icon. Einmal ohne gestrichelter Umrandung und einmal mit. Bei Klick auf den Text (Icon) aktivierst du dann das andere Icon.

  • klicken auf label?

    • BugFix
    • 10. September 2006 um 16:26

    Hallo spider,

    um das bei einem Label zu machen hab ich grad keine Idee - aber vielleicht umgehst du das ganze, indem du statt klickbares Label ein Pushbotton setzt. Falls dir das optisch gefällt. Da hast du dann den Effekt, dass der geschaltete Zustand sichtbar ist.

    Code
    $Button1 = GUICtrlCreateButton("AButton1", 104, 88, 75, 25, BitOR($BS_PUSHBOX,$BS_CENTER,$BS_FLAT))
  • ToolTip( ) reagiert unterschiedlich

    • BugFix
    • 9. September 2006 um 23:44
    Zitat

    Die Darstellung könnte auch vom XP-Style abhängen

    Ja, ich verwende ausschließlich das klassische Design. Der einzige Unterschied zwischen beiden PC - einer hat XP -Home und der andere (bei dem die Balloon-Tips gezeigt werden) hat XP -Prof.

  • ToolTip( ) reagiert unterschiedlich

    • BugFix
    • 9. September 2006 um 20:12

    Hallo,
    habe das ganze mal auf 'nem anderen Rechner getestet. Zumindest die Darstellung des Ballon-Tip ist damit möglich. Was allerdings auch hier nicht funktioniert, ist die automatische Beendung des Tips. Aber damit kann ich leben, setze ich halt ToolTip("").
    Warum auf einem PC der Balloon-Tip dargestellt wird und auf dem andren nicht kann ich nicht nachvollziehen. Die Voraussetzung (IE5 oder höher) ist gegeben.

    Zitat

    Ich nehme mal an, dass es so lange dauert soll, aber du könntest das ganze natürlich auch schneller berechnen lassen.

    Ja, soll etwas dauern, hab extra verzögert für den visuellen Effekt.

  • ToolTip( ) reagiert unterschiedlich

    • BugFix
    • 9. September 2006 um 18:06

    Ist mein Lottogenerator ;)

    Spoiler anzeigen
    Code
    #include <GUIConstants.au3>
    #Include<Array.au3>
    Global $gezogen[6]
    
    
    ; == GUI generated with Koda ==
    $Lotto = GUICreate("Lotto 6 aus 49", 399, 398, 192, 125)
    GUICtrlCreateLabel("Ziehung", 120, 29, 43, 17)
    $iZiehung = GUICtrlCreateInput("", 192, 24, 32, 24, BitOR($ES_RIGHT,$ES_READONLY))
    GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
    GUICtrlSetColor(-1, 0x000080)
    $Group1 = GUICtrlCreateGroup("", 40, 72, 185, 281)
    $iZahl1 = GUICtrlCreateInput("", 152, 104, 32, 21, BitOR($ES_RIGHT,$ES_READONLY))
    GUICtrlSetColor(-1, 0x000080)
    GUICtrlCreateLabel("1. Zahl", 80, 106, 37, 17)
    GUICtrlCreateLabel("2. Zahl", 80, 138, 37, 17)
    $iZahl2 = GUICtrlCreateInput("", 152, 136, 32, 21, BitOR($ES_RIGHT,$ES_READONLY))
    GUICtrlSetColor(-1, 0x000080)
    GUICtrlCreateLabel("3. Zahl", 80, 170, 37, 17)
    $iZahl3 = GUICtrlCreateInput("", 152, 168, 32, 21, BitOR($ES_RIGHT,$ES_READONLY))
    GUICtrlSetColor(-1, 0x000080)
    GUICtrlCreateLabel("4. Zahl", 80, 202, 37, 17)
    $iZahl4 = GUICtrlCreateInput("", 152, 200, 32, 21, BitOR($ES_RIGHT,$ES_READONLY))
    GUICtrlSetColor(-1, 0x000080)
    GUICtrlCreateLabel("5. Zahl", 80, 234, 37, 17)
    $iZahl5 = GUICtrlCreateInput("", 152, 232, 32, 21, BitOR($ES_RIGHT,$ES_READONLY))
    GUICtrlSetColor(-1, 0x000080)
    GUICtrlCreateLabel("6. Zahl", 80, 266, 37, 17)
    $iZahl6 = GUICtrlCreateInput("", 152, 264, 32, 21, BitOR($ES_RIGHT,$ES_READONLY))
    GUICtrlSetColor(-1, 0x000080)
    $Input5 = GUICtrlCreateInput("", 408, 328, 32, 21, BitOR($ES_RIGHT,$ES_READONLY))
    GUICtrlCreateLabel("Zusatzzahl", 80, 314, 55, 17)
    $iZahlZusatz = GUICtrlCreateInput("", 152, 312, 32, 21, BitOR($ES_RIGHT,$ES_READONLY))
    GUICtrlSetColor(-1, 0x800080)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $bStart = GUICtrlCreateButton("Start", 272, 24, 75, 25, 0)
    $bClear = GUICtrlCreateButton("Löschen", 272, 64, 75, 25, 0)
    $bEnd = GUICtrlCreateButton("Ende", 272, 120, 75, 25, 0)
    GUISetState(@SW_SHOW)
    While 1
    	$msg = GuiGetMsg()
    	Select
    	Case $msg = $GUI_EVENT_CLOSE Or $msg = $bEnd
    		ExitLoop
    	Case $msg = $bClear
    		_Clear()
    	Case $msg = $bStart
    		_Ziehung()
    	EndSelect
    WEnd
    Exit
    
    
    Func _Clear()
    	GUICtrlSetData($iZahl1,"")
    	GUICtrlSetData($iZahl2,"")
    	GUICtrlSetData($iZahl3,"")
    	GUICtrlSetData($iZahl4,"")
    	GUICtrlSetData($iZahl5,"")
    	GUICtrlSetData($iZahl6,"")
    	GUICtrlSetData($iZahlZusatz,"")
    	GUICtrlSetData($iZiehung,"")
    	For $i = 0 To 5
    		$gezogen[$i] = 0
    	Next
    EndFunc
    Func _Ziehung()
    	; Ziehung aller Zahlen
    	For $i = 1 to 7
    		While 1
    			$again = 0
    			$zufall = Random(1,49,1)
    			$pos = _ArraySearch($gezogen, $zufall)
    			If $pos <> -1 Then $again = 1
    			If $again = 0 Then
    				If $i < 7 Then
    					$gezogen[$i-1] = $zufall
    				Else
    					$ZusatzZahl = $zufall
    				EndIf
    				ExitLoop
    			EndIf
    		WEnd
    	Next
    	; Darstellung in GUI
    	For $i = 1 to 7
    		For $j = 1 To 49
    			GUICtrlSetData($iZiehung, $j)
    			Sleep(10)
    		Next
    		If $i < 7 Then
    			GUICtrlSetData($iZiehung, $gezogen[$i-1])
    		Else
    			GUICtrlSetData($iZiehung, $ZusatzZahl)
    		EndIf
    		Sleep(800)
    		Select
    			Case $i = 1
    				GUICtrlSetData($iZahl1,$gezogen[$i-1])
    			Case $i = 2
    				GUICtrlSetData($iZahl2,$gezogen[$i-1])
    			Case $i = 3
    				GUICtrlSetData($iZahl3,$gezogen[$i-1])
    			Case $i = 4
    				GUICtrlSetData($iZahl4,$gezogen[$i-1])
    			Case $i = 5
    				GUICtrlSetData($iZahl5,$gezogen[$i-1])
    			Case $i = 6
    				GUICtrlSetData($iZahl6,$gezogen[$i-1])
    			Case $i = 7
    				GUICtrlSetData($iZahlZusatz,$ZusatzZahl)
    		EndSelect
    	Next
    	; Sortierung
    	ToolTip("Nun die gezogenen Zahlen" & @LF & "in geordneter Reihenfolge",422,340,"Ergebnis der Ziehung",1)
    	Sleep(3000)
    	ToolTip("")
    	_ArraySort($gezogen)
    	GUICtrlSetData($iZahl1,$gezogen[0])
    	GUICtrlSetData($iZahl2,$gezogen[1])
    	GUICtrlSetData($iZahl3,$gezogen[2])
    	GUICtrlSetData($iZahl4,$gezogen[3])
    	GUICtrlSetData($iZahl5,$gezogen[4])
    	GUICtrlSetData($iZahl6,$gezogen[5])	
    EndFunc
    Alles anzeigen

    Konnte ich nicht vor 18 Uhr zeigen, sonst hättet ihr noch die 6 Mio. ohne mich abgeräumt :schild4:

  • ToolTip( ) reagiert unterschiedlich

    • BugFix
    • 9. September 2006 um 17:35

    Hallo,

    Ich habe im Code folgendes:

    Code
    ...
    ToolTip("Text", 350, 350, "Titel", 1)
    Sleep(3000)
    ...

    Im Programmablauf wird der Tip auch angezeigt - aber er verschwindet nicht wieder. Lasse ich nur diese 2 Codezeilen alleine laufen funktioniert es.
    Ich hab mir erst mal so geholfen:

    Code
    ...
    ToolTip("Text", 350, 350, "Titel", 1)
    Sleep(3000)
    ToolTip("")
    ...

    Dann verschwindet der Tip wieder, aber das ist ja nicht der Sinn der Funktion.
    Nun habe ich mal mit ToolTip( ) alle Einstellungen durchprobiert. Dabei ist mir aufgefallen, dass die Option: "1 = Display as Balloon Tip" (bzw. "3" in Addition mit "Center the tip") dazu führt, dass der ToolTip gar nicht angezeigt wird. Hat jemand damit Erfahrungen?

  • String mit x-gleichen Zeichen erzeugen

    • BugFix
    • 9. September 2006 um 16:50

    Was ist an einem #include unübersichtlich?
    Wenn dir damit die Datei zu groß wird, kopier dir doch nur die Funktion raus, die du brauchst.
    Brauchst du die Funktion nur einmal im code, kannst du dir das schenken. Aber bei mehrfachem Aufruf ist es schon sinnvoll.

  • Eigene Funktionen

    • BugFix
    • 8. September 2006 um 21:22

    Ich fand immer am Besten zum Üben das Umsetzen mathematischer Aufgaben.
    Selbst wenn diese math. Funktionen schon in AutoIt enthalten sind, kann man sie zu Testzwecken auch mal selber neu erfinden.
    Sehr schön zum Anfang finde ich z.B.: "n!" oder "Quersumme von n"
    Wenn du es dann etwas härter magst: Primzahlen bis "n"
    Als schöne Übung für eine GUI: Lotto 6 aus 49

    Viel Spaß!

  • Dateien aus versch. Directorys kopieren

    • BugFix
    • 8. September 2006 um 11:59

    Hi basler,
    ich hab dir mal ne Lösung gebastelt. Brauchst dazu die Beta. Ist getestet und funzt :)

    Spoiler anzeigen
    [autoit]

    #Include <File.au3>
    #Include <Array.au3>
    $source_path = "C:\BENUTZER\"
    $target_path = "C:\CHECK\" ; Speicherzielordner
    $searchstring = "crash" ; z.B. "crash20060905.txt"
    $n = 0 ; Anzahl der kopierten Dateien
    $FolderList=_FileListToArray($source_path, "*",2) ; Flag 2 = nur Ordner
    If (Not IsArray($FolderList)) and (@Error=1) Then
    MsgBox (0,"","Keine Ordner gefunden.")
    Exit
    EndIf
    For $i = 1 To $FolderList[0]
    $FileList = _FileListToArray($source_path & $FolderList[$i])
    If IsArray($FileList) Then
    For $j = 1 To $FileList[0]
    If $FileList[$j] = "Data" Then ; dein gesuchter Unterordner - falls vorhanden
    $DataFileList = _FileListToArray($source_path & $FolderList[$i] & "Data")
    If IsArray($DataFileList) Then
    For $k = 1 to $DataFileList[0]
    If StringInStr($DataFileList[$k], $searchstring) <> 0 Then ; in Dateiname ist $searchstring enthalten
    FileCopy($source_path & $FolderList[$i] & "\" & $FileList[$j] & "\" & $DataFileList[$k], _
    $target_path & $FolderList[$i] & "\" & $DataFileList[$k], 8) ; Flag 8 = Ordner erstellen, falls nicht vorhanden
    $n = $n 1
    EndIf
    Next
    EndIf
    EndIf
    Next
    EndIf
    Next
    If $n > 0 Then
    MsgBox(0,"", "Es wurde(n) " & $n & "Datei(en) kopiert.")
    Else
    MsgBox(0,"", "Es wurden keine Dateien kopiert.")
    EndIf

    [/autoit]

    EDIT - wichtig

    Hier klappt was mit der Darstellung nicht. Meine Backslashes sind alle gelöscht! auch mit editieren werden sie wieder gelöscht!
    Also bei $source_path und $target_path gehören vor und hinter den Ordnernamen Backslash.
    In der Codezeile: " $DataFileList = _FileListToArray($source_path & $FolderList[$i] & "Data") " ist vor dem Ordnernamen "Data" ein Backslash zu setzen.
    In der Codezeile: "FileCopy...." sind jeweils zwischen den: & "" & auch Backslash einzufügen.

    EDIT 2
    Nach viel Bastelei sollte die Darstellung jetzt stimmen. (6 Edits - persönl. Rekord ;) )
    Sicherheitshalber lösche ich das vorige Edit aber nicht.

    Nachsatz: Mit Version 3.2.0.1 brauchst du nicht die Beta hierfür.

    bernd670 : Backslashes wieder reingeschrieben

    letztes (?) ! Edit - #9 :LOL:
    Da durch die Darstellung jetzt einiges von der Funktionalität verloren gegangen ist, hänge ich die Datei mal an.

    Dateien

    test_FileListToArray.au3 1,27 kB – 292 Downloads
  • log Files Inhalte archivieren/löschen

    • BugFix
    • 4. September 2006 um 21:23

    Also rein vom Ablauf her würde ich es so machen:
    - LogFile einlesen
    - jetzt Zeile für Zeile bis Dateiende
    wenn Datum noch nicht 10 Tage alt -> Zeileninhalt kopieren - an Array übergeben
    - LogFile schließen und löschen
    - LogFile neu erstellen
    - Zeilenweise Arrayeinträge einfügen
    - LogFile schließen

  • GUICtrlCreateListView scrollt falsch

    • BugFix
    • 4. September 2006 um 11:14
    Code
    $WS_HSCROLL

    heißt doch: Erzeugt Window mit horizontaler Scrollbar
    Wenn du vertikal scrollen willst brauchst du

    Code
    $WS_VSCROLL
  • GUICtrlCreateListViewItem macht aus mehreren zeilen eine Zeile

    • BugFix
    • 3. September 2006 um 22:41
    Code
    case $chk7 <> 0

    Hiermit fragst du explizit <> 0 , also Zahl.
    Wenn du wissen willst ob $chk7 leer ist, so:

    Code
    case $chk7 <> ""
  • regexp wieder

    • BugFix
    • 3. September 2006 um 22:08

    Da muß ich echt passen, hab grad seit 15 min versucht die Syntax zu verstehen - erfolglos. ;(
    Aber dafür haben wir ja zum Glück unsren Pee ;)

  • regexp wieder

    • BugFix
    • 3. September 2006 um 21:38

    Also ich verstehe eins nicht, warum willst du unbedingt die Funktion StringRegExp() verwenden?
    ich she auch nicht zwingend den Ansatz dafür. Bei Auswahl der Zahl aus der WEB-Adresse weiß ich nicht ob es überhaupt damit geht.

    Meine Lösung, funktioniert:

    Code
    $text = "Gästebuch (123)"
    $pos1 = StringInStr($text, "(")
    $pos2 = StringInStr($text, ")")
    $zahl = StringMid($text, $pos1+1, $pos2 - $pos1-1)
    MsgBox(0, "Zahl selektiert", $zahl)

    und

    Code
    $text = "http://www.esl.eu/eu/cs/5on5/mr12/ladder/player/1917142/"
    $len = StringLen($text)
    $pos1 = StringInStr($text,"/",1,-2)
    $zahl = StringMid($text,$pos1+1,$len-$pos1-1)
    MsgBox(0,"Zahl selektiert",$zahl)
  • regexp wieder

    • BugFix
    • 3. September 2006 um 21:10

    Äh, wenn du dich hier auf 'nen anderen Thread beziehst, sag mal welchen.
    So versteh ich das ganze nicht.

  • Checkbox

    • BugFix
    • 3. September 2006 um 17:43

    Ja, manchmal ist man echt zu schnell beim Schreiben (Sorry). Erstmal natürlich die Checkbox auslesen:

    Code
    If GuiCtrlRead($Checkbox1) = 4 Then Send("{F6}")

    Edit: trallala war schneller :)

  • Wie markiertes Item aus einer GuiCtrlList löschen?

    • BugFix
    • 3. September 2006 um 17:27

    Schau mal hier rein: http://autoit.aufwaerts.de/thread.php?threadid=384
    Dort habe ich eine GUI mit den wesentlichen GUICtrlList-Funktionen hinterlegt.

    Habe das Beispiel von oben mal so geändert, dass die Ausgabe in einer MsgBox erfolgt:

    Spoiler anzeigen
    C
    #include <GUIConstants.au3>
    #include <GuiList.au3>
    
    
    Opt ('MustDeclareVars', 1)
    
    
    Dim $msg, $ret, $INHALT = ""
    Dim $listbox, $button, $label, $i
    
    
    GUICreate("ListBox Selected Items Text Demo", 400, 250, -1, -1)
    
    
    $listbox = GUICtrlCreateList("", 125, 40, 180, 120, BitOR($LBS_SORT, $WS_BORDER, $WS_VSCROLL, $LBS_NOTIFY, $LBS_MULTIPLESEL))
    GUICtrlSetData($listbox, "test1|more testing|even more testing|demo|")
    $button = GUICtrlCreateButton("Get Selected", 150, 160, 120, 40)
    
    
    GUISetState()
    While 1
        $msg = GUIGetMsg()
        Select
            Case $msg = $GUI_EVENT_CLOSE
                ExitLoop
            Case $msg = $button
                $ret = _GUICtrlListGetSelItemsText ($listbox)
                If (Not IsArray($ret)) Then
                    MsgBox(16, "Error", "Unknown error from _GUICtrlListGetSelItemsText")
                Else
                    For $i = 1 To $ret[0]
    					If $INHALT = "" Then
    						$INHALT = $ret[$i]
    					Else
    						$INHALT = $INHALT & @LF & $ret[$i]
    					EndIf
    				Next
    				MsgBox(0, "Gesamte Liste", $INHALT)
                EndIf
        EndSelect
    WEnd
    Alles anzeigen
  • Checkbox

    • BugFix
    • 3. September 2006 um 17:04
    Code
    If $checkbox1 = 1 then Send("{F6}")

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™