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

  • warteschleife

    • BugFix
    • 6. Oktober 2007 um 21:19

    Ansatz nicht ganz richtig.
    So klappt es:

    [autoit]

    include <date.au3>

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

    Dim $hh = "00", $mm = "40", $ss = "00"
    Dim $verl_loop = _TimeToTicks($hh, $mm, $ss)

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

    While 1
    Sleep(100)
    If $verl_loop <= _TimeToTicks() Then ExitLoop
    WEnd
    MsgBox(0, '', 'Schleife beendet')

    [/autoit]
  • Edit Multiline - Zeile auslesen

    • BugFix
    • 6. Oktober 2007 um 21:05

    Hi,
    beim Arbeiten mit dem Editcontrol ist mir folgendes aufgefallen:
    Da keine Funktion zur direkten Ausgabe einer Zeile existiert muß man einen anderen Weg wählen.
    - Mit $index = _GUICtrlEditGetSel($Edit1) wird der Index des markierten Bereiches bzw. der Cursorposition ermittelt.
    - Mit $lineindex = _GUICtrlEditLineFromChar($Edit1, $index[2]) wird der (Null-basierte) Index der Zeile ermittelt die den ZeichenIndex enthält.
    - Mit $line = _GUICtrlEditGetLine($Edit1, $lineindex+1) wird der Text der Zeile zurückgegeben, wobei diese Funktion einen 1-basierten Index verlangt.

    Das Problem:
    Egal welche Auswahl als erstes getroffen wird - es wird immer ein falsches Ergebnis zurückgegeben.
    Bei weiteren Lesevorgängen stimmt es dann.
    Aber wenn der letzte Eintrag per Markierung ausgelesen wird klappt dies nicht. Stelle ich den Cursor jedoch in die letzte Zeile ohne zu markieren funktioniert es.

    Vielleicht hat ja jemand schonmal damit gekämpft.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #Include <GuiEdit.au3>

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

    Opt("GUIOnEventMode", 1)
    Global $index, $lineindex, $line

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

    $Form1 = GUICreate("Test Edit Zeilen lesen", 325, 421, 193, 115)
    GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
    $Edit1 = GUICtrlCreateEdit("", 12, 12, 301, 161, -1, $ES_MULTILINE)
    GUICtrlSetData(-1, "Das ist Zeile #1" & @CRLF & _
    "Das ist Zeile #2" & @CRLF & _
    "Das ist Zeile #3" & @CRLF & _
    "Das ist Zeile #4" & @CRLF & _
    "Das ist Zeile #5" & @CRLF & _
    "Das ist Zeile #6")
    $bRead = GUICtrlCreateButton("Zeile lesen", 216, 381, 100, 30, 0)
    GUICtrlSetOnEvent(-1, "bReadClick")
    $InIndexChr = GUICtrlCreateInput("", 232, 201, 80, 21)
    $Label1 = GUICtrlCreateLabel("_GUICtrlEditGetSel( )", 12, 184, 103, 17)
    $Label2 = GUICtrlCreateLabel("Zeichen-Index markierter Bereich Start/Ende:", 12, 204, 218, 17)
    $Label3 = GUICtrlCreateLabel("_GUICtrlEditLineFromChar( )", 12, 230, 136, 17)
    $Label4 = GUICtrlCreateLabel("ZeilenIndex in der Zeichen-Index enthalten:", 12, 252, 209, 17)
    $InIndexZeile = GUICtrlCreateInput("", 232, 249, 80, 21)
    $Label5 = GUICtrlCreateLabel("_GUICtrlEditGetLine( )", 12, 277, 108, 17)
    $Label6 = GUICtrlCreateLabel("Text der Zeile mit ZeilenIndex:", 12, 296, 146, 17)
    $InText = GUICtrlCreateInput("", 164, 293, 148, 21)
    $InInfo = GUICtrlCreateInput("Cursor in eine Zeile stellen oder einen Textbereich markieren.", 12, 352, _
    301, 21, BitOR($ES_AUTOHSCROLL,$ES_READONLY))
    GUISetState(@SW_SHOW)

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

    While 1
    Sleep(100)
    WEnd

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

    Func bReadClick()
    $index = _GUICtrlEditGetSel($Edit1)
    GUICtrlSetData($InIndexChr, $index[1] & ' / ' & $index[2])
    $lineindex = _GUICtrlEditLineFromChar($Edit1, $index[2]) ; Index ist 0-basiert
    GUICtrlSetData($InIndexZeile, $lineindex)
    $line = _GUICtrlEditGetLine($Edit1, $lineindex+1) ; Line verlangt 1-basierten Index
    GUICtrlSetData($InText, $line)
    EndFunc

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

    Func Form1Close()
    Exit
    EndFunc

    [/autoit]

    Edit:
    Ich habe nun eine voll funktionierende Lösung gefunden.
    Wie es aussieht, sind die UDF zum Edit-Ctrl nicht ganz ausgereift.
    Habe jetzt komplett umgestellt auf ControlCommand und damit funktioniert es tadellos.
    Spare ich mir auch das Include ;)

    Spoiler anzeigen
    [autoit]

    Func bReadClick()
    $lineindex = ControlCommand($Form1, '', $Edit1, "GetCurrentLine", "")
    GUICtrlSetData($InIndexLine, $lineindex)
    $line = ControlCommand($Form1, '', $Edit1, "GetLine", $lineindex)
    GUICtrlSetData($InText, $line)
    EndFunc

    [/autoit]
  • tatsächliche Schriftgröße ermitteln

    • BugFix
    • 5. Oktober 2007 um 21:55

    Der Schriftgrad eines Schriftfonts sagt ja nur indirekt etwas über die Schrifthöhe in Pixeln aus.

    Aber gerade wenn ich Controlgrößen festlegen muß, möchte ich natürlich wissen wieviel Platz für verwendete Fonts benötigt wird.

    Mit diesem Programm läßt sich die tatsächliche Pixelhöhe eines Fonts ermitteln.
    Dabei bin ich von der maximal möglichen vertikalen Platzbelegung ausgegangen.
    Es wird die Zeichenfolge 'qÄ' in ein Label einer GUI geschrieben.
    In einer Schleife wird der Schriftgrad in 0.5-er Schritten von Size = 6 bis Size = 28 gesetzt und dann die vertikale Auslenkung gescant.
    Das Ergebnis wird in die Datei: "FontPixelSize.txt" geschrieben.

    Schriftgrad und Font könnt ihr nach Bedarf anpassen.

    Edit: Hab grad bemerkt, dass einige Schriftarten bei kleinem Schriftgrad einen Fehler liefern - entsprechende Fehlerroutine eingebaut.

    Spoiler anzeigen
    [autoit]

    #include <guiconstants.au3>

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

    Dim $file = @ScriptDir & "\FontPixelSize.txt"
    Dim $sizeMin = 6, $sizeMax = 28
    Dim $font = 'Comic Sans MS'

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

    $gui = GUICreate('', 200, 150, 40, 40)
    $label = GUICtrlCreateLabel('', 0, 0, 200, 130, $SS_CENTERIMAGE)

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

    GUISetState()
    GUICtrlSetData($label, 'qÄ')
    GUICtrlSetColor($label, 0xFF0000)

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

    $fh = FileOpen($file, 1)
    FileWriteLine($fh, $font)
    FileWriteLine($fh, 'Schriftgrad / Größe in Pixel')
    For $i = $sizeMin To $sizeMax Step 0.5
    GUICtrlSetFont($label, $i, 400, -1, $font)
    Select
    Case ($i <= 10) Or (IsInt($i) = 1)
    FileWriteLine($fh, $i & @TAB & @TAB & _scanLetter())
    Case Else
    FileWriteLine($fh, $i & @TAB & _scanLetter())
    EndSelect
    Next
    FileClose($fh)

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

    Func _scanLetter()
    Local $arSize[1]
    For $i = 40 To 190
    $pos = PixelSearch(40, $i, 240, $i, 0xFF0000)
    If IsArray($pos) Then
    ReDim $arSize[UBound($arSize)+1]
    $arSize[UBound($arSize)-1] = $pos[1]
    EndIf
    Next
    If UBound($arSize) > 1 Then Return $arSize[UBound($arSize)-1] - $arSize[1] +1
    EndFunc

    [/autoit]

    Dateien

    GetFontPixelSize.au3 1,04 kB – 390 Downloads
  • [Diablo II] Auto Bonewall Script - Brauche wieder ein wenig hilfe, hehe

    • BugFix
    • 5. Oktober 2007 um 17:28

    :lol: Ich würd mal sagen, dass hat jetzt mit AutoIt noch soviel gemeinsam, wie ein Kuhfladen mit 'ner Pizza. :rofl:
    Also ab in die Talk-Ecke mit euch, husch husch. :P

  • _ieform

    • BugFix
    • 3. Oktober 2007 um 23:04

    Also es gibt folgende Mausbezogene GUI-Events:

    $GUI_EVENT_PRIMARYDOWN
    $GUI_EVENT_PRIMARYUP
    $GUI_EVENT_SECONDARYDOWN
    $GUI_EVENT_SECONDARYUP
    $GUI_EVENT_MOUSEMOVE

    Diese kannst du nutzen.
    Für Maus gedrückt halten demzufolge das Intervall zwischen den Events $GUI_EVENT_PRIMARYDOWN und $GUI_EVENT_PRIMARYUP.
    Da es GUI-Events sind benötigst du aber eine GUI-Umgebung.
    Versuchs vielleicht mal mit _IECreateEmbedded( ).

  • html auslesen...

    • BugFix
    • 3. Oktober 2007 um 17:12

    Die Daten auf der Seite sind in Tabellenform.
    Also alle Tabellen anzeigen lassen, gucken welche die Daten enthält, die du verwenden möchtest ( Index merken ).
    Und dann nur diese eine Tabelle abfragen.

    [autoit]

    #include <IE.au3>

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

    $oIE = _IECreate("http://www.autoit.de/portal.php")
    $oTable = _IETableGetCollection($oIE)

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

    $index = 0
    For $table In $oTable
    $aTableData = _IETableWriteToArray ($table)
    _ArrayDisplay($aTableData, "Table Index: " & $index)
    $index += 1
    Next

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

    _IEQuit($oIE)

    [/autoit]
  • html auslesen...

    • BugFix
    • 3. Oktober 2007 um 09:08

    Tipp:
    Statt den Text auszulesen und mühsam zu selektieren, laß dir mal die Table der Seite ausgeben. Da hast du die gewünschten Daten gleich parat.
    Die Table kannst du in Array wandeln. Das vereinfacht den Zugriff.

  • ie Radio ?

    • BugFix
    • 2. Oktober 2007 um 19:04
    Zitat

    Original von monkey
    Das musst es über den quelltext machen

    schau doch mal auf http://wiki.autoit.de/


    monkey

    :D - den erstellt er ja selber.
    Das Problem ist, dass eine Änderung bei der Auswahl der Radiobutton nicht im Quelltext sichtbar wird.

    5 Radio und ein Button sieht in etwa so aus:

    Spoiler anzeigen
    Code
    <body>
    
    
    <form method="POST" action="--WEBBOT-SELF--">
      <!--webbot bot="SaveResults" u-file="_private/form_results.csv" s-format="TEXT/CSV" s-label-fields="TRUE" --><fieldset style="padding: 2">
      <legend>Gruppenfeld</legend>
      <input type="radio" value="V1" checked name="R1"><p>
      <input type="radio" name="R1" value="V2"></p>
      <p><input type="radio" name="R1" value="V3"></p>
      <p><input type="radio" name="R1" value="V4"></p>
      <p><input type="radio" name="R1" value="V5"></p>
      </fieldset><input type="submit" value="Abschicken" name="B1"></form>
    
    
    </body>
    Alles anzeigen

    und das bleibt so, egal welcher Radio checked ist. ;)

  • ie Radio ?

    • BugFix
    • 2. Oktober 2007 um 16:32

    Sry, aber aus deiner Fragestellung ist beim besten Willen nicht ersichtlich, was du vorhast.

    Bitte genauere Angaben:
    - Zustand Ist
    - Zustand Soll

  • gui- loop-problem

    • BugFix
    • 2. Oktober 2007 um 08:52

    Was mir zumindest sofort auffällt:
    In deiner Func "startmodus()" fehlt die Umbenennung des Buttons ( GUICtrlSetData($b_start, "STOP") ). Denn du willst ja eine Switchfunktion für den Button erreichen.
    Ich finde es aber etwas kompliziert per Auslesen der Beschriftung des Buttons den Status zu erfragen. Hier würde ich mit Boolscher Variable arbeiten.

    [autoit]

    Dim $statusStart = True
    ;..
    ;..
    Case $b_start
    If $statusStart Then
    ; Code für Startmodus
    Else
    ; Code für Stopmodus
    EndIf
    $statusStart = Not $statusStart ; aus True wird False u. umgekehrt
    ;..

    [/autoit]
  • Systemsteuerung aufrufen

    • BugFix
    • 1. Oktober 2007 um 20:04

    Also entweder rufst du die Modemoptionen direkt auf:

    [autoit]

    Run('control.exe TELEPHON.CPL,,1')

    [/autoit]

    oder du hangelst dich durch die Register mit Tastaturbefehlen:
    - vorwärst zum nächsten Tab: "Strg+Tab"
    - zurück zum vorigen Tab: "Strg+Shift+Tab"

    Kannst du mit Send() verwenden.

  • Bibliothek

    • BugFix
    • 1. Oktober 2007 um 18:16

    Also echt: Ich war mal im Zoo. Affentitten sind NICHT geil!! :rofl:

  • Systemsteuerung aufrufen

    • BugFix
    • 1. Oktober 2007 um 15:38
    Zitat

    kannst du mir jetzt noch sagen woher du weiss, dass es telephon.cpl heisst ?

    Weil wir fleißig waren und sowas schon mal gesucht haben :D

    Guckst du hier:
    Systemeinstellungen per Cmd-Line

  • Taschenrechner

    • BugFix
    • 30. September 2007 um 20:16

    Da können wir schön weiter diskutieren, weil es in der Kaffeesatzleserei endet, wie denn die Aufgabe gemeint war ;)

    Um das zu vermeiden, einfach immer, wenn Aufgaben fehlinterpretiert werden könnten, zur Sicherheit Klammern verwenden.
    Dann brauchen wir auch keinen 3-seitigen Post über mathematische Selbstverständlichkeiten führen. :P

  • Mein Avatar

    • BugFix
    • 27. September 2007 um 22:50

    OK, OK

    ihr habt mich überredet. Aber ein wenig Privatsphäre müßt ihr mir schon gönnen.

    Spoiler anzeigen

    [Blockierte Grafik: http://home.arcor.de/bugfix/BugFix.jpg]

  • Mein Avatar

    • BugFix
    • 27. September 2007 um 21:17

    Na gut, wenn ihr mich so doll drängt.

    Aber vergeßt nicht, ich habe euch GEWARNT!!
    Hier also das personifizierte GRAUEN.

    Spoiler anzeigen

    [Blockierte Grafik: http://p3.focus.de/img/gen/H/C/HBHCAlwaqp2_Pxgen_r_311xA.jpg]

  • Mein Avatar

    • BugFix
    • 27. September 2007 um 20:56

    Glaubmir, DAS willst du dir nicht wirklich antun :rofl:

  • Mein Avatar

    • BugFix
    • 27. September 2007 um 20:31

    Hi,
    falls ihr euch wundert, dass ich mein Avatar gewechselt habe:
    Ich hatte von meinem letzten Avatar herausgefunden, wer der abgebildete "König" war :D
    Also habe ich, rechtstreu wie ich bin :rofl: , bei ihm nachgefragt, ob ich das Bild in meinem Avatar verwenden darf. Leider war ihm das nicht recht :(

    Somit habe ich nun Ersatz geschaffen. ;)

  • GUI-Tab abprüfen

    • BugFix
    • 27. September 2007 um 16:05

    Ich glaube die Frage erscheint jetzt schon mindestens zum 5.ten mal.
    Bemühe bitte die Forumsuche.

  • Begrenzer nach fettkursiv formatiertem Text

    • BugFix
    • 27. September 2007 um 14:41

    Da ich grade gestern mit dem Word-Object gespielt habe:
    Du kannst formatierte Bereiche damit selektieren: Selection.BoldRun Method
    Hier der Link: http://msdn2.microsoft.com/en-us/library/bb221847.aspx

    Und hier Word Selection Object mit allen Methoden

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™