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

  • Fortschrittsbalken

    • BugFix
    • 31. Oktober 2007 um 16:00
    Zitat

    Original von Fast2
    Danke für eure Mühe ich schau mal ob das Funktioniert. Aber hört sich durchaus logisch an dass man guictrlset dingsbums braucht(Warum steht das eigentlich nicht in der Hilfe)?

    Ich weiß ja nicht, in welche Hilfe du schaust. Aber wenn du das Bsp. ansiehst steht dort genau das drin.

  • Array-Grundschule: 1. Klasse

    • BugFix
    • 31. Oktober 2007 um 10:07

    Hi Alina,

    ich habe dir jetzt eine gaaaanz schnuckelige Lösung gebastelt :]

    Den Button habe ich als Default Pushbutton definiert, damit man nicht immer zur Maus wechseln muß um die Eingabe zu bestätigen ;)

    Und es wird immer der zuletzt erfaßte Wert angezeigt. Wenn du also eine Liste abarbeitest, siehst du anhand der laufenden Nr. was du zuletzt beim Wickel hattest. Kannst also immer mal zwischendurch 'ne Kaffeepause machen.
    :tassen: geht natürlich auch :D

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <Date.au3>
    Dim $pathINI = @ScriptDir & "\daten.INI"
    GUICreate("Datum Eingabe", 200, 120, 100, 45, -1, 0x00000018)
    $lastRealDate = GUICtrlCreateLabel('', 90, 7, 80, 17)
    $lastNr = GUICtrlCreateLabel('', 10, 30, 60, 17)
    $lastDate = GUICtrlCreateLabel('', 90, 30, 60, 17)
    $aktNr = GUICtrlCreateLabel('', 10, 63, 60, 17)
    $file = GUICtrlCreateInput ( "", 90, 60, 80, 20)
    $ok = GUICtrlCreateButton ("OK", 70, 90, 60, 21, $BS_DEFPUSHBUTTON)

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

    If FileExists($pathINI) Then
    $val = IniReadSection($pathINI, "dat")
    $lfdnr = $val[$val[0][0]][0]
    GUICtrlSetData($lastRealDate, _REalinaDatum($val[$val[0][0]][1]))
    GUICtrlSetData($lastNr, $lfdnr)
    GUICtrlSetData($lastDate, $val[$val[0][0]][1])
    GUICtrlSetData($aktNr, StringRight('0000' & $lfdnr+1,5))
    Else
    $lfdnr = 0
    GUICtrlSetData($aktNr, '00001')
    EndIf
    GUISetState ()

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

    $msg = 0
    While $msg <> $GUI_EVENT_CLOSE
    $msg = GUIGetMsg()
    Select
    Case $msg = $ok
    $date = GUICtrlRead($file)
    If $date <> '' Then
    $lfdnr += 1
    $val = StringSplit($date, '.')
    $d = StringRight('0' & $val[1],2)
    $m = StringRight('0' & $val[2],2)
    If $val[3] > 30 Then
    $y = StringRight(19 & $val[3], 4)
    Else
    $y = StringRight(20 & $val[3], 4)
    EndIf
    $date2write = StringRight('00000' & _alinaDatum($y, $m, $d),6)
    If IniWrite($pathINI, "dat" , _
    StringRight('0000' & $lfdnr,5), $date2write) <> 1 Then
    GUICtrlSetData($file, 'FEHLER')
    Else
    GUICtrlSetData($file, '')
    GUICtrlSetData($lastRealDate, _REalinaDatum($date2write))
    GUICtrlSetData($lastNr, StringRight('0000' & $lfdnr,5))
    GUICtrlSetData($lastDate, $date2write)
    GUICtrlSetData($aktNr, StringRight('0000' & $lfdnr+1,5))
    EndIf
    EndIf
    EndSelect
    Wend

    Func _alinaDatum($year, $month, $day)
    Return StringFormat('%0.3d', $year - 1989) & StringFormat('%0.3d', _dayOfyear($year, $month, $day))
    EndFunc ;==>_alinaDatum

    Func _dayOfyear($year, $month, $day)
    Return _DateDiff('d', $year & '/01/01', $year & '/' & $month & '/' & $day) + 1
    EndFunc ;==>_dayOfyear

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

    Func _REalinaDatum($DATUM)
    Local $yyyy = StringLeft($DATUM, 3) + 1989
    Local $date = _DateAdd('d', Number(StringRight($DATUM, 3))-1, $yyyy & '/01/01')
    Return StringRight($date,2) & '.' & StringMid($date,6,2) & '.' & StringLeft($date,4)
    EndFunc

    [/autoit]

    Edit: Und noch ein wenig mehr Komfort. Du siehst jetzt immer den zuletzt eingetragenen Wert mit: lfd. Nr / konvertiertem Datum / Originaldatum

  • Array-Grundschule: 1. Klasse

    • BugFix
    • 30. Oktober 2007 um 23:24

    Hi, probiers mal so:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <Date.au3>

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

    $val = IniReadSection(@ScriptDir & "daten.ini", "dat")
    $lfdnr = $val[$val[0][0]][0]

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

    GUICreate("Datum Eingabe", 100,80, 100, 45, -1, 0x00000018); WS_EX_ACCEPTFILES
    ;~ $nr = GUICtrlCreateInput ( "", 10, 5, 80, 20)
    $file = GUICtrlCreateInput ( "", 10, 30, 80, 20)

    $ok = GUICtrlCreateButton ("Ok", 20, 55, 60, 20)
    GUISetState ()

    $msg = 0
    While $msg <> $GUI_EVENT_CLOSE
    $msg = GUIGetMsg()
    Select
    Case $msg = $ok
    $lfdnr += 1
    $date = GUICtrlRead($file)
    $val = StringSplit($date, '.')
    $d = StringRight('0' & $val[1],2)
    $m = StringRight('0' & $val[2],2)
    If $val[3] > 30 Then
    $y = StringRight(19 & $val[3], 4)
    Else
    $y = StringRight(20 & $val[3], 4)
    EndIf
    IniWrite(@ScriptDir & "daten.ini", "dat" , $lfdnr, _alinaDatum($y, $m, $d)); & @CRLF)

    EndSelect
    Wend

    Func _alinaDatum($year, $month, $day)
    Return StringFormat('%0.3d', $year - 1989) & StringFormat('%0.3d', _dayOfyear($year, $month, $day))
    EndFunc ;==>_alinaDatum

    Func _dayOfyear($year, $month, $day)
    Return _DateDiff('d', $year & '/01/01', $year & '/' & $month & '/' & $day) + 1
    EndFunc ;==>_dayOfyear

    [/autoit]
  • Array-Grundschule: 1. Klasse

    • BugFix
    • 30. Oktober 2007 um 22:15

    $val = IniReadSection($INI, 'section')
    letzter Schlüssel = $val[$val[0]][0]
    letzter Wert = $val[$val[0]][1]

    Beim Start Aufrufen und mit GUICtrlSetData() eintragen.

    Edit: Aber willst du die lfd. Nr. nicht lieber automatisch hochzählen? User machen nur Fehler :D

    Also in der GUI ganz rauslassen. Beim Start Auslesen und für aktuelle Nutzung +1.

  • Array-Grundschule: 1. Klasse

    • BugFix
    • 30. Oktober 2007 um 21:21

    Hi Alina,

    also die Aufgabe ist ja bereits durch die Funktionen von Xeno gelöst.
    Die Verwendung von Arrays ist für diese Aufgabe leider gar nicht zu gebrauchen.

    Hier die Lösung für die Aufgabe, für Arrays mußt du dir jetzt was neues ausdenken ;)
    Ich habs so gemacht, dass es egal ist, ob du '1.5.79' oder '01.05.1979' eingibst.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <Date.au3>
    GUICreate("Datum Eingabe", 100,50, 100, 45, -1, 0x00000018); WS_EX_ACCEPTFILES
    $file = GUICtrlCreateInput ( "", 10, 5, 80, 20)
    $ok = GUICtrlCreateButton ("Ok", 20, 25, 60, 20)
    GUISetState ()

    $msg = 0
    While $msg <> $GUI_EVENT_CLOSE
    $msg = GUIGetMsg()
    Select
    Case $msg = $ok
    $date = GUICtrlRead($file)
    $val = StringSplit($date, '.')
    $d = StringRight('0' & $val[1],2)
    $m = StringRight('0' & $val[2],2)
    If $val[3] > 30 Then
    $y = StringRight(19 & $val[3], 4)
    Else
    $y = StringRight(20 & $val[3], 4)
    EndIf
    ; statt ConsoleWrite ==> in INI schreiben
    ConsoleWrite(_alinaDatum($y, $m, $d) & @CRLF)
    EndSelect
    Wend

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

    Func _alinaDatum($year, $month, $day)
    Return StringFormat('%0.3d', $year - 1989) & StringFormat('%0.3d', _dayOfyear($year, $month, $day))
    EndFunc ;==>_alinaDatum

    Func _dayOfyear($year, $month, $day)
    Return _DateDiff('d', $year & '/01/01', $year & '/' & $month & '/' & $day) + 1
    EndFunc ;==>_dayOfyear

    [/autoit]
  • Schöne Grüße!

    • BugFix
    • 30. Oktober 2007 um 20:28

    Auch von mir ein Herzliches :willkommen:

    Wirst dich hier ganz sicher wohl fühlen ;)

  • Array-Grundschule: 1. Klasse

    • BugFix
    • 30. Oktober 2007 um 19:45

    Hab grad mal versucht zu verstehen, was du als Endergebnis haben möchtest.
    Das Datum, das du verwendest ist aber kein Julianisches Datum, denn dieses wird angegeben in der Zahl der Tage, die seit dem 1. Januar 4712 v. Chr.12:00 Uhr vergangen sind.

    Der 21.01.1997 ist Julianisch: 2450469,5

    Also, ich bin mir jetzt nicht ganz sicher, was du erreichen möchtest. Vielleicht kannst du das nochmal kurz skizzieren.
    Ich vermisse bei deiner Zusammenstellung eine Zuweisung für den Monat?

  • Array-Grundschule: 1. Klasse

    • BugFix
    • 30. Oktober 2007 um 19:08

    Nur mal nach einem kurzen Blick, die notwendigen Korrekturen, die Array betreffend:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <Date.au3>


    Dim $arTest[50] ; Array hat 50 Werte ==> OK
    ;~ Dim $arTest[0] ; Array's kleinster Wert = 0, also $arTest[0] ==> FALSCH
    ; Array wurde nochmal deklariert mit Größe '0' - das geht nicht, kleinste Größe 1

    Dim $arJahr[20] ; Array hat 20 Werte ==> ZU KLEIN, da 21 Werte gesetzt
    ;~ Dim $arJahr[0] ; Array's kleinster Wert = 0; also $arJahr[0] ==> FALSCH
    ; selber Fehler, wie oben

    ; hier die 50 Array-Werte
    ; Wenn fortlaufende Werte gesetzt werden sollen empfiehlt sich der Einsatz einer Schleife
    ; Beachten: Index 0 = Wert 1 ==> also immer: Wert = Index+1
    For $i = 0 To 49
    $arTest[0] = $i +1
    Next

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

    ; Hier wird in jeder Zeile das Array neu deklariert!!! ==> FALSCH
    ;~ Dim $arJahr[0] = '001' ; 1990
    ;~ Dim $arJahr[1] = '002' ; 1991
    ; Wertzuweisung ohne Dim!
    For $i = 0 To 20
    $arJahr[$i] = '00' & $i +1
    Next

    [/autoit]

    Nachher schau ich dann mal, was es eigentlich werden soll ;)

  • Fenstertittel per Doppelcklick auslesen

    • BugFix
    • 29. Oktober 2007 um 19:30

    Nochmal zum besseren Verständnis.
    Wir nehmen an:
    $clickspeed = 750

    - Maus wird gedrückt -> Zähler+1 ; aktuell 1
    - Prüfe Zähler = 2 -> Nein
    - Else-Zweig -> Starte Zeitmessung -> Zähler = 1

    Schleife von vorn

    - Maus wird gedrückt -> Zähler+1 ; aktuell 2
    - Prüfe Zähler = 2 -> JA
    - Zeitdifferenz ermitteln
    - Differenz < 750 -> das ist ein Doppelklick -> Zähler auf Null
    - Differenz > 750 -> Einfachklick -> Starte Zeitmessung -> Zähler = 1

    Durch das Rücksetzen des Zählers bei Zeitüberschreitung ist garantiert, dass nur 'echte' Doppelklicks gewertet werden.

  • Fenstertittel per Doppelcklick auslesen

    • BugFix
    • 29. Oktober 2007 um 18:57

    Nein!
    Wird die in der Registry eingetragene Zeit für Doppelklick überschritten ist es kein Doppelklick.
    - Mausklick -> Zähler+1 -> Zeitmessung starten
    - Wenn Zähler = 2 -> Zeitdifferenz zum ersten Klick feststellen
    - Ist Diff. < Registrywert -> war ein Doppelklick -> Zähler zurücksetzen -> Aufruf Dbl-Klick-Funktion

  • Fenstertittel per Doppelcklick auslesen

    • BugFix
    • 29. Oktober 2007 um 18:29

    Hier hast du die Version für Doppelklick:

    Spoiler anzeigen
    [autoit]

    #Include <Misc.au3>
    Global $start
    Global $n = 0
    Global $clickspeed = RegRead("HKEY_CURRENT_USER\Control Panel\Mouse", "DoubleClickSpeed")
    HotKeySet('^e', '_ende')

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

    While 1
    Do
    Sleep(100)
    Until _IsPressed('01')
    $n += 1
    If $n = 2 And (TimerDiff($start) < $clickspeed) Then
    _DblClick()
    $n = 0
    Else
    $start = TimerInit()
    $n = 1
    EndIf
    WEnd

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

    Func _DblClick()
    MsgBox(0, '',(WinGetTitle(''))
    EndFunc

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

    Func _ende()
    Exit
    EndFunc

    [/autoit]
  • Skript Vorschläge

    • BugFix
    • 29. Oktober 2007 um 17:38
    Zitat

    Alina
    Also mein größtes Problem habe ich z. B. mit Array. Da ist mein Verständnis einfach nicht da.

    Hi Alina, schau doch mal in unser Wiki. Da hab ich einen Link eingestellt für ein Tutorial, findest du auch in der Hilfe-FAQ.
    Array-Tutorial

    Ich hoffe, dass euch das ein wenig hilft.

  • input durch klick leeren

    • BugFix
    • 28. Oktober 2007 um 20:54

    Hier mal eine 'saubere' Lösung:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    Opt("MouseCoordMode", 0)
    Opt("GUIOnEventMode", 1)
    Dim $Input_X = 80, $Input_Width = 120
    Dim $Input_Y = 50, $Input_Height = 21

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

    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 316, 147, 193, 115)
    GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
    GUISetOnEvent($GUI_EVENT_PRIMARYDOWN, '_LeftMouse')
    $Input1 = GUICtrlCreateInput("Input1", $Input_X, $Input_Y, $Input_Width, $Input_Height)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    Sleep(100)
    WEnd

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

    Func Form1Close()
    Exit
    EndFunc

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

    Func _LeftMouse()
    Local $pos = MouseGetPos()
    If ( $pos[0] > $Input_X And $pos[0] < $Input_X+$Input_Width ) And _
    ( $pos[1] > $Input_Y+20 And $pos[1] < $Input_Y+$Input_Height+20) Then _
    GUICtrlSetData($Input1, '')
    EndFunc

    [/autoit]
  • frage zu Func

    • BugFix
    • 28. Oktober 2007 um 20:00

    klar geht das ;)
    In der Definition müssen die Argumente als Variablen definiert werden.

    [autoit]

    Func Summe($argument1, $argument2)
    Return $argument1 + $argument2
    EndFunc

    [/autoit]
  • input durch klick leeren

    • BugFix
    • 28. Oktober 2007 um 19:53

    Jein ;)
    mit Originalfunktionalität nicht. Dazu mußt du auswerten
    - Mausposition abfragen
    - ist die Maus über dem Control UND
    - wird geklickt
    dann GUIControlSetData($Input, '')

  • vergleichen

    • BugFix
    • 28. Oktober 2007 um 18:40

    Also wenn ich mich mal an meinen Mathe-Extrakurs erinnere (lang ist's her), dann wird dieser Weg nicht die exakte Wahrscheinlichkeit bringen.
    Das sind stochastische Berechnungen. Beim Würfeln gilt das Laplace-Modell (idealer Würfel). Und damit beträgt die Wahrscheinlichkeit eine Zahl zu würfeln exakt 1/6.
    Die tatsächliche Streuung, das ist das, was du vermutlich ermitteln möchtest, benötigt eine Großzahl von Ergebnissen um zu einer (halbwegs) verläßlichen Aussage zu kommen. Damit siehst du dann, welche Zahlen gehäuft gezogen werden. Aber auch diese Häufung kann dir nur begrenzt Auskunft über die mögliche nächste Zahl geben.

    Und die von mir oben angeführte Methode ist eigentlich eine Methode zur Häufungsermittlung.
    (Alle gezogenen Zahlen in einen Topf, sortieren nach Häufigkeit des Auftretens)

  • vergleichen

    • BugFix
    • 28. Oktober 2007 um 17:40
    Zitat

    Original von .::Mignon::.
    @ xeno : ich hab da doch wohl oft genug betont auch schon in vorherigen posts.

    Nun laß mal die Luft raus. Wenn sowohl Xeno als auch ich dir sagen, dass deine Erklärung NICHT ausreichend ist, brauchst du nicht anfangen zu gnatzen.
    Wir sind wahrlich keine Anfänger und versuchen aus jeder noch so vagen Problembeschreibung etwas herauszukitzeln.
    Da dies bei dir nicht das gewünschte Ergebnis bringt, wird wohl deine Problemschilderung eben nicht ausreichen.

  • vergleichen

    • BugFix
    • 28. Oktober 2007 um 15:23

    Hmm, also ich versteh nicht, was du meinst.

    Schreib es doch mal in Pseudo-Code:
    - nimm erste Zahl String1
    - zähle, wie oft diese Zahl im String1 ist
    - nun nimm erste Zahl String2
    - zähle, wie oft diese Zahl im String2 ist
    - wenn die Anzahl gleich ist, gib die größere von beiden zuerst aus

    Das mal als Bsp. Ich hab nämlich echt keinen Plan, was du nun wirklich willst. ?(

  • programm schließt erst nach 15sek

    • BugFix
    • 28. Oktober 2007 um 15:08
    Zitat

    und das sleep is ja nur da um den prozessor zu schonen.


    Bei GUIGetMsg völlig überflüssig. Diese Funktion führt selbst zu einer Lastreduzierung.
    Wie Junkie schon sagte, OnEvent-Mode - dann ist Sleep OK, aber im GUIGetMsg-Mode bremst es.

    Die Festlegung des Modus erfolgt direkt nach den Includes. GUIGetMsg-Mode ist default und braucht deshalb nicht deklariert werden.
    Ansonsten:

    [autoit]

    Opt("GUIOnEventMode", 1)

    [/autoit]
  • vergleichen

    • BugFix
    • 28. Oktober 2007 um 14:54

    die anzahl spielt keine rolle, einfach alle strings zu einem string verketten und fertig ;)

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™