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

  • Windows 7 Beta 1 - Erste Eindrücke

    • BugFix
    • 11. Januar 2009 um 18:16

    Ich spreche nicht von optischem Schnickschnack sondern von Basisdingen, wie Datenstruktur, Datensicherheit, Datenkonsistenz. Mit NTFS wurde schon ein riesiger Schritt getan, was man ja auch anerkennen muß. Aber mir ist auch klar, dass es wenig Sinn macht, einen Vergleich führen zu wollen. Warten wir die Zukunft ab, wie sich die Systeme weiterhin etablieren.

  • Frage zu Include

    • BugFix
    • 11. Januar 2009 um 17:41

    Klar geht das, macht aber wenig Sinn, weil du dann ALLE Funktionen einbindest und vllt. nur 20 brauchst. ;) Das erzeugt einen gewaltigen Overhead und deine Skripte werden statt 200 KB stolze 2MB oder mehr groß. :P

  • Windows 7 Beta 1 - Erste Eindrücke

    • BugFix
    • 11. Januar 2009 um 17:03

    Mein Kommentar:
    Wenn Windows gut werden soll, sollte versucht werden, dass damit wenigstens ansatzweise das möglich wird, was Linux perse kann. :D

  • Mehrer Variablen überprüfen und ein string in einer ini speichern

    • BugFix
    • 11. Januar 2009 um 10:50

    Du hast ja einmal einen INI-Eintrag allein für Slider und einmal fügst du den Slider Wert bei 'Command' an.
    Ich hab es jetzt mal so geändert, dass bei nicht markierter CB4 weder der Eintrag bei Slider noch bei Command erfolgt. Ist nur eine If-Abfrage, kannst du selber auch anpassen:

    Spoiler anzeigen
    [autoit]

    Func Speichern ()
    Local $read
    $string = ''
    $read = BitAND(GUICtrlRead($Checkbox1), $GUI_CHECKED)
    IniWrite($INI, "Box", "1", $read)
    If $read Then $string &= "/a on" & ';'
    $read = BitAND(GUICtrlRead($Checkbox2), $GUI_CHECKED)
    IniWrite($INI, "Box", "2", $read)
    If $read Then $string &= "/b on" & ';'
    $read = BitAND(GUICtrlRead($Checkbox3), $GUI_CHECKED)
    IniWrite($INI, "Box", "3", $read)
    If $read Then $string &= "/c on" & ';'
    $read = BitAND(GUICtrlRead($Checkbox4), $GUI_CHECKED)
    IniWrite($INI, "Box", "4", $read)
    If $read Then
    $string &= "/d on" & ' '
    $read = GUICtrlRead($Slider1)
    IniWrite($INI, "Slider", "1", $read)
    $string &= $read
    EndIf
    If StringRight($string, 1) = ';' Then $string = StringTrimRight($string, 1) & ' '
    IniWrite ($INI, "User", "Command", $string)
    $read = GUICtrlRead($Combo1)
    IniWrite($INI, "Combo", "1", $read)
    EndFunc

    [/autoit]
  • Mehrer Variablen überprüfen und ein string in einer ini speichern

    • BugFix
    • 11. Januar 2009 um 10:18

    Hi,
    ich habe es mal kpl. überarbeitet und den Code dadurch reduziert. Du hattest ja die Checkboxen doppelt ausgelesen und für jeden Wert eine Variable ausgegeben, das ist aber nicht nötig. Schau es dir mal an:

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    #include <GUIConstants.au3>

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

    Opt("GUIOnEventMode", 1)

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

    Global $1 , $2 = 1, $3 =50, $4 = 4, $5 = 50,$6 =1, $7 = 50, $string
    Global $INI = "c:\temp\Setup.ini"

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

    $Form1 = GUICreate("Dies ist ein Beispiel", 281, 447, 193, 125)
    $Label1 = GUICtrlCreateLabel("Dies ist ein Beispiel", 80, 32, 141, 25)
    GUICtrlSetFont(-1, 12, 400, 0, "Century Gothic")
    $Checkbox1 = GUICtrlCreateCheckbox("Checkbox1", 96, 64, 13, 13)
    $Label2 = GUICtrlCreateLabel("Test /a on", 128, 64, 54, 17)
    $Checkbox2 = GUICtrlCreateCheckbox("Checkbox2", 96, 96, 13, 13)
    $Label3 = GUICtrlCreateLabel("Test /b on", 128, 96, 54, 17)
    $Checkbox3 = GUICtrlCreateCheckbox("Checkbox3", 96, 128, 13, 13)
    $Label4 = GUICtrlCreateLabel("Test /c on", 128, 128, 54, 17)
    $Checkbox4 = GUICtrlCreateCheckbox("Checkbox4", 96, 160, 13, 13)
    $Label5 = GUICtrlCreateLabel("Test /d on", 128, 160, 54, 17)
    $Slider1 = GUICtrlCreateSlider(120, 184, 70, 37)
    $Combo1 = GUICtrlCreateCombo("Deaktiviert", 80, 232, 145, 25)
    GUICtrlSetData(-1, "Test e|Test f|Test g")
    $Button1 = GUICtrlCreateButton("Speichern", 104, 280, 75, 25, 0)
    GUICtrlSetOnEvent ($Button1 , "Speichern")
    GUISetOnEvent($GUI_EVENT_CLOSE, "_ende")

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

    GUISetState(@SW_SHOW)

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

    While 1
    Sleep(100)
    WEnd

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

    Func Speichern ()
    Local $read
    $string = ''
    $read = BitAND(GUICtrlRead($Checkbox1), $GUI_CHECKED)
    IniWrite($INI, "Box", "1", $read)
    If $read Then $string &= "/a on" & ';'
    $read = BitAND(GUICtrlRead($Checkbox2), $GUI_CHECKED)
    IniWrite($INI, "Box", "2", $read)
    If $read Then $string &= "/b on" & ';'
    $read = BitAND(GUICtrlRead($Checkbox3), $GUI_CHECKED)
    IniWrite($INI, "Box", "3", $read)
    If $read Then $string &= "/c on" & ';'
    $read = BitAND(GUICtrlRead($Checkbox4), $GUI_CHECKED)
    IniWrite($INI, "Box", "4", $read)
    If $read Then $string &= "/d on" & ' '
    If StringRight($string, 1) = ';' Then $string = StringTrimRight($string, 1) & ' '
    $read = GUICtrlRead($Slider1)
    IniWrite($INI, "Slider", "1", $read)
    $string &= $read
    IniWrite ($INI, "User", "Command", $string)
    $read = GUICtrlRead($Combo1)
    IniWrite($INI, "Combo", "1", $read)
    EndFunc

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

    Func _ende ()
    Exit
    EndFunc

    [/autoit]
  • Mehrer Variablen überprüfen und ein string in einer ini speichern

    • BugFix
    • 11. Januar 2009 um 09:57

    Na dann überspring doch die leeren Zellen:

    [autoit]

    For $i = 1 to UBound($alle) - 1
    If $alle[$i] = '' Then ContinueLoop
    $string = $string & $alle[$i] & ';'
    Next
    $string = StringTrimRight($string, 1)

    [/autoit]
  • µit - Dezember

    • BugFix
    • 11. Januar 2009 um 09:52

    Ich muß funkey zustimmen - ein Wettbewerb muß schon eine Herausforderung sein. Und das Umsetzen von Spielshows beinhaltet im Allgemeinen mehr Optik als Logik und ist somit wenig reizvoll (zumindest für mich).
    Also Alina, nicht traurig sein - aber das Thema war halt nicht der Brüller. Oder wie sagen die Briten so stilvoll: Shit happens! :D

  • Mehrer Variablen überprüfen und ein string in einer ini speichern

    • BugFix
    • 11. Januar 2009 um 09:39

    Hi,
    einfach in der Schleife, in der du das Array abarbeitest, das ';' anhängen und nach dem letzten Eintrag ein Zeichen abschneiden, da ja nun kein weiteres Element folgt:

    [autoit]

    For $i = 1 to UBound($alle) - 1
    $string = $string & $alle[$i] & ';'
    Next
    $string = StringTrimRight($string, 1)

    [/autoit]
  • Datei löschen funktioniert nicht

    • BugFix
    • 10. Januar 2009 um 20:56

    Richtig - FileOpen war das Problem.
    Hier mal als komprimierte Variante:

    Spoiler anzeigen
    [autoit]

    #include<GUIConstantsEx.au3>
    Opt("GUIOnEventMode", 1)
    $Form1 = GUICreate("Zahlenblock", 131, 171, 442, 396)
    GUISetOnEvent($GUI_EVENT_CLOSE, '_ende')
    $Button1 = GUICtrlCreateButton("1", 8, 8, 33, 33, 0)
    GUICtrlSetOnEvent(-1, '_buttonClick')
    $Button2 = GUICtrlCreateButton("2", 48, 8, 33, 33, 0)
    GUICtrlSetOnEvent(-1, '_buttonClick')
    $Button3 = GUICtrlCreateButton("3", 88, 8, 33, 33, 0)
    GUICtrlSetOnEvent(-1, '_buttonClick')
    $Button4 = GUICtrlCreateButton("4", 8, 48, 33, 33, 0)
    GUICtrlSetOnEvent(-1, '_buttonClick')
    $Button5 = GUICtrlCreateButton("5", 48, 48, 33, 33, 0)
    GUICtrlSetOnEvent(-1, '_buttonClick')
    $Button6 = GUICtrlCreateButton("6", 88, 48, 33, 33, 0)
    GUICtrlSetOnEvent(-1, '_buttonClick')
    $Button7 = GUICtrlCreateButton("7", 8, 88, 33, 33, 0)
    GUICtrlSetOnEvent(-1, '_buttonClick')
    $Button8 = GUICtrlCreateButton("8", 48, 88, 33, 33, 0)
    GUICtrlSetOnEvent(-1, '_buttonClick')
    $Button9 = GUICtrlCreateButton("9", 88, 88, 33, 33, 0)
    GUICtrlSetOnEvent(-1, '_buttonClick')
    $Button10 = GUICtrlCreateButton("0", 48, 128, 33, 33, 0)
    GUICtrlSetOnEvent(-1, '_buttonClick')
    $Button11 = GUICtrlCreateButton("C", 8, 128, 33, 33, 0)
    GUICtrlSetOnEvent(-1, '_dateileeren')
    $Button12 = GUICtrlCreateButton("OK", 88, 128, 33, 33, 0)
    GUISetState(@SW_SHOW)

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

    ;~ _dateiloeschen()

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

    While 1
    Sleep(100)
    WEnd

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

    Func _ende()
    _dateiloeschen()
    Exit
    EndFunc

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

    Func _buttonClick()
    Local $button = @GUI_CtrlId
    Local $fh = FileOpen("test.txt", 1)
    FileWrite($fh, ControlGetText($Form1, '', $button))
    FileClose($fh)
    MsgBox(0, "Test", FileRead("test.txt"))
    EndFunc

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

    ; löscht die Textdatei
    Func _dateiloeschen()
    If FileExists("test.txt") Then
    If FileDelete("test.txt") Then MsgBox(0, 'Löschen', 'Datei gelöscht!')
    EndIf
    EndFunc

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

    Func _dateileeren()
    Local $fh = FileOpen("test.txt", 2)
    FileWrite($fh, "")
    FileClose($fh)
    EndFunc

    [/autoit]
  • eine frage bezüglich Random

    • BugFix
    • 10. Januar 2009 um 17:34

    Also wenn du aus einem Pool an Fragen zufällig welche auswählen möchtest, ohne Wiederholungen, dann gibt es eine viel einfachere Methode: Du hast Fragen und Antworten in einem Array ([$i][0]=Frage, [$i][1]=Antwort). Du erstellst ein zweites Array, das nur die Indexzahlen des Frage/Antwort-Arrays enthält, den gezogenen Wert löscht du dann einfach aus dem Array.
    Hier mal ein Bsp.:

    Edit: Hab das Bsp. nochmal verändert, mit Frage-Antwort. Läuft solange, bis alle Fragen richtig beantwortet sind oder 'ENDE' als Antwort gegeben wird.

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    Global $aFragen[10][2] = [ _
    ['Frage1','Antwort1'], _
    ['Frage2','Antwort2'], _
    ['Frage3','Antwort3'], _
    ['Frage4','Antwort4'], _
    ['Frage5','Antwort5'], _
    ['Frage6','Antwort6'], _
    ['Frage7','Antwort7'], _
    ['Frage8','Antwort8'], _
    ['Frage9','Antwort9'], _
    ['Frage10','Antwort10']]

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

    Global $aIndex[10] = [0,1,2,3,4,5,6,7,8,9]

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

    While IsArray($aIndex)
    Local $index = _GetRandom()
    Local $in = InputBox('Frage [Beenden mit: ENDE]', $aFragen[$aIndex[$index]][0])
    If $in = 'ENDE' Then ExitLoop
    If $in = $aFragen[$aIndex[$index]][1] Then
    If UBound($aIndex) = 1 Then
    MsgBox(0, 'Richtig', 'ENDE - Das wars')
    Else
    MsgBox(0, 'Richtig', 'Und weiter gehts')
    EndIf
    _ArrayDelete($aIndex, $index)
    Else
    MsgBox(0, 'Falsch', 'Und weiter gehts')
    EndIf
    WEnd

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

    Func _GetRandom()
    Return Random(0,UBound($aIndex)-1,1)
    EndFunc

    [/autoit]
  • Andere Sprache:D

    • BugFix
    • 8. Januar 2009 um 21:35

    Was für eine Ressource hast du denn eingebunden? Falls es ein Bitmap ist, dafür hatte ich schonmal ein Bsp. erstellt:

    Load Bitmap from DLL
    [autoit]

    #include <WinAPI.au3>
    #include <Constants.au3>
    #include <GUIConstantsEx.au3>

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

    Global $ressource = "shell32.dll"
    Global $resID = 131
    Global $hGUI, $hInstance, $hBMP

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

    $hGUI = GUICreate('Test Bitmap from DLL', 500, 200)
    $hInstance = _WinAPI_LoadLibraryEx($ressource, $LOAD_LIBRARY_AS_DATAFILE)
    $hBMP = _WinAPI_LoadBitmap($hInstance, $resID)
    GUISetState()

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

    _ShowRessourceBMP($hGUI, $hBMP, 20, 20)
    _WinAPI_DeleteObject($hBMP)
    _WinAPI_FreeLibrary($hInstance)

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

    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE

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

    Func _ShowRessourceBMP($hGUI, $hBMP, $X, $Y)
    _GDIPlus_Startup ()
    Local $hBitmap = _GDIPlus_BitmapCreateFromHBITMAP($hBMP)
    Local $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI)
    _GDIPlus_GraphicsDrawImage($hGraphic, $hBitmap, $X, $Y)
    _GDIPlus_GraphicsDispose($hGraphic)
    _GDIPlus_ImageDispose($hBitmap)
    _GDIPlus_ShutDown()
    EndFunc

    [/autoit]
  • Kommunikation mit anderen Programmen

    • BugFix
    • 8. Januar 2009 um 21:15

    Hab mal kurz gegoogelt, um etwas über MapInfo zu erfahren. Wenn ich die Infos richtig verstanden habe, existiert in dem Programm eine Datenbank. Und ich habe auch zahlreiche Werbung einer Softwarefirma für ein Basicprogramm gefunden, dass zur Konzeption von Erweiterungen gedacht ist. Somit vermute ich mal, dass der Zugriff über COM nicht allzu schwierig sein sollte.
    Von Interesse wäre da natürlich die DB plus zugehörigem Treiber. Dann könnte man mal probieren, z.B. per Datenbankobjekt die gewünschten Daten abzufragen.
    Wobei das natürlich jetzt alles etwas frei interpretiert ist, da ich das Programm und seine Wirkungsweise überhaupt nicht kenne.

  • Arbeitzeit Erfassung

    • BugFix
    • 8. Januar 2009 um 20:57

    Sortierung mache ich i.A. per Spaltenklick:

    Spoiler anzeigen
    [autoit]

    #include <GuiConstantsEx.au3>
    #include <GuiListView.au3>
    #include <WindowsConstants.au3>

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

    $gui = GUICreate('Test LV-Sort')
    $hListView = GUICtrlCreateListView('Spalte 1|Spalte 2', 10, 10, 300, 200)
    For $i = 1 To 15
    GUICtrlCreateListViewItem(Chr(Random(65,90)) & '|' & Chr(Random(65,90)), $hListView)
    Next
    GUISetState()

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

    Global $B_DESCENDING[_GUICtrlListView_GetColumnCount($hListView)]

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

    GUIRegisterMsg($WM_NOTIFY, "WM_NOTIFY")

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

    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE

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

    Func WM_NOTIFY($hWnd, $iMsg, $iwParam, $ilParam)
    #forceref $hWnd, $iMsg, $iwParam
    Local $hWndFrom, $iIDFrom, $iCode, $tNMHDR, $hWndListView, $tInfo
    $hWndListView = $hListView
    If Not IsHWnd($hListView) Then $hWndListView = GUICtrlGetHandle($hListView)

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

    $tNMHDR = DllStructCreate($tagNMHDR, $ilParam)
    $hWndFrom = HWnd(DllStructGetData($tNMHDR, "hWndFrom"))
    $iIDFrom = DllStructGetData($tNMHDR, "IDFrom")
    $iCode = DllStructGetData($tNMHDR, "Code")
    Switch $hWndFrom
    Case $hWndListView
    Switch $iCode
    Case $LVN_COLUMNCLICK ; A column was clicked
    $tInfo = DllStructCreate($tagNMLISTVIEW, $ilParam)
    _GUICtrlListView_SimpleSort($hWndListView, $B_DESCENDING, DllStructGetData($tInfo, "SubItem"))
    EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
    EndFunc ;==>WM_NOTIFY

    [/autoit]
  • Button mag das bild nich :)

    • BugFix
    • 8. Januar 2009 um 20:27

    Ich denke mal, du solltest deinem Button den Style $BS_ICON verpassen.

  • frage zu Pixel Search

    • BugFix
    • 6. Januar 2009 um 17:32

    Diese Anwendung ist sowieso ein typischer Fall für eine fußgesteuerte Schleife. Denn es soll ja mindestens einmal durchlaufen werden:

    [autoit]

    Do
    Until PixelGetColor($x,$y) = "0xFF0000"

    [/autoit]
  • Code der nur "Progres" anzeigt

    • BugFix
    • 6. Januar 2009 um 17:03

    Versuche mal dich sauber zu artikulieren - ich versteh kein Wort :D

  • MouseHotKey - Beispiel

    • BugFix
    • 6. Januar 2009 um 16:30
    Zitat von FirePanther

    der leert den puffer? wofür das?


    Eigentlich nur beim ersten Aufruf (evtl.) nötig. Habe es sicherheitshalber reingesetzt, sonst kann es mal passieren, dass der Pufferinhalt den Key ausgibt, ohne dass es gewollt ist. Ist zwar etwas hypothetisch, aber sicher ist sicher.

  • GUICtrlCreateTabItem Problem...

    • BugFix
    • 6. Januar 2009 um 16:25

    Du mußt die Items direkt hintereinander festlegen!!!

  • GUICtrlCreateTabItem Problem...

    • BugFix
    • 6. Januar 2009 um 16:05
    Zitat von vism

    aber er zeigt mir den 2ten Tab trotzdem net an? Öö>


    Nimm mein Bsp. das zeigt beide TabItems an. Übrigens brauchst du zwingend eine Variable für den Tab. Sonst hast du keine Möglichkeit abzufragen, welches Item aktiv ist.

    [autoit]

    If $msg = $Tab Then $Item = _GUICtrlTab_GetCurSel ($Tab)

    [/autoit]
  • GUICtrlCreateTabItem Problem...

    • BugFix
    • 6. Januar 2009 um 15:47

    Du mußt den Tab immer 'schließen' beim Erstellen. Sonst ist nicht sichtbar, welche Ctrl dazu gehören.

    [autoit]

    GUICreate('Settings', 230, 130)
    GUICtrlCreateTab(10, 10, 200, 100)
    GUICtrlCreateTabItem("English")
    $Checkbox1 = GUICtrlCreateCheckbox("AutoUpdate", 20, 40)
    $Checkbox2 = GUICtrlCreateCheckbox("AutoLogin", 20, 60)
    $Checkbox3 = GUICtrlCreateCheckbox("Newsletter", 20, 80)
    GUICtrlCreateTabItem('') ; Close tabitem.
    GUICtrlCreateTabItem("Deutsch")
    GUICtrlCreateTabItem('') ; Close tabitem.

    [/autoit]

    :S Raupi war schneller...

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™