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

Beiträge von draien

  • Msgbox bei ini veränderung ausgeben

    • draien
    • 12. Januar 2015 um 11:06

    Eine extra GUI bräuchtest du dazu nicht. Du hast doch schon den richtigen Ansatz mit

    [autoit]

    _FileListToArray($Path_s,"*",1)

    [/autoit]


    Die 1 kannst du ja variabel halten (1 = Nur Dateien ; 2 = Nur Ordner) und je nachdem ausgeben.
    Die _refreshIni könnte dann so aussehen:

    [autoit]

    ;=========Die .ini erneuern========;
    Func _refreshIni($iFlag)
    If $iFlag = 1 OR $iFlag = 0 Then
    $Files_a = _FileListToArray($Path_s,"*",$iFlag)
    If IsArray($Files_a) Then
    $ClipGet = _ArrayToString($Files_a)
    If IniRead("C:\AutoIt\Test.ini","Allgemein","Dateien","not found") <> $ClipGet Then
    IniWrite("C:\AutoIt\Test.ini","Allgemein","Dateien",$ClipGet)
    If $iFlag = 1 Then
    MsgBox($MB_ICONINFORMATION,"Info!","Datei wurde hinzugefügt")
    Else
    MsgBox($MB_ICONINFORMATION,"Info!","Ordner wurde hinzugefügt")
    EndIf
    EndIf
    Else
    MsgBox($MB_ICONERROR,"Error!","_refreshIni mit falschem Parameter aufgerufen (0 oder 1)!")
    EndIf
    EndFunc

    [/autoit]


    (auch wieder nicht getestet)

    Die MsgBox erscheint aber bei jeder(!) neuen Datei. Evtl. musst du die Funktion um ein Flag/Returnvalue erweitern, der auf Änderung überprüft und nachdem alles verändert wurde angibt, dass sich etwas verändert hat.
    Und wegen dem entfernen einfach dich in die IniDelete einlesen (geht analog zu IniWrite).

  • Msgbox bei ini veränderung ausgeben

    • draien
    • 9. Januar 2015 um 13:21

    Wenn du vor dem Schreiben in die Inifile überprüfst, ob du überhaupt etwas in die schreiben musst(IniRead mit dem Write-wert vergleichen), kommt man relative schnell auf die Lösung. Hab's mal nicht getestet, aber so in etwa sollte es klappen (hab das ClipGet mal als String genommen).

    [autoit]

    ;=========Die .ini erneuern========;
    Func _refreshIni()
    $Files_a = _FileListToArray($Path_s,"*",1)
    If IsArray($Files_a) Then
    $ClipGet = _ArrayToString($Files_a)
    If IniRead("C:\AutoIt\Test.ini","Allgemein","Dateien","not found") <> $ClipGet Then
    IniWrite("C:\AutoIt\Test.ini","Allgemein","Dateien",$ClipGet)
    MsgBox($MB_ICONINFORMATION,"Info!","Ini file wurde verändert")
    EndIf
    For $a = 1 to $Files_a[0]
    Next
    EndIf
    EndFunc

    [/autoit]


    Für was die Forschleife gut sein soll, habe ich mich auch noch gefragt.

  • Neuste Dateien zuerst speichern

    • draien
    • 9. Januar 2015 um 13:00

    Das mit dem Zwischenspeicherort ist zwar nicht schön, aber solange es funktioniert :D
    (Etwas Code zum anschauen wäre trotzdem nett gewesen)
    Hoffe geholfen zu haben.

  • GUICtrlCreateCombo

    • draien
    • 9. Januar 2015 um 12:51

    Füge das in deine While Schleife innerhalb des Switch ein:

    [autoit]

    Case $hCombo1
    GuiCtrlSetData($Input1,GuiCtrlRead($hCombo1))

    [/autoit]

    Jedesmal, wenn ein Element in hCombo1 ausgewählt wird, wird dieses ausgelesen (GuiCtrlRead) und in Input1 abgelegt(GuiCtrlSetData).
    Den Wert von Input1 lässt sich analog auch mit GuiCtrlRead($Input1) auslesen und übergeben,

  • Neuste Dateien zuerst speichern

    • draien
    • 8. Januar 2015 um 10:30

    Hallo,

    Etwas schwer das ganze nachzuvollziehen aber vielleicht hilf ja folgender Gedanke/Ablauf:

    • Alle Dateinamen aus der Speicherkarte auslesen (in eine Array,ohne Pfad --> Siehe Befehl _PathSplit und _FileListToArray)
    • (Array ablaufen) Überprüfen ob der Name im Array im Zielort vorhanden ist
      • Nein: FileCopy von Speicherkarte nach Zielort
      • Ja: Neuen Namen generieren (_PathSplit,StringMid,StringTrimRight etc.) (_XX +10 ; Maximum ist dabei auf _20)
        • FileCopy von Zielort nach Zielort mit neuem Namen (mit FC_OVERWRITE, dann muss man die über _20 nicht löschen)
        • FileCopy von Speicherkarte nach Zielort


    Wenn du bereits etwas geschrieben hast, könnte man daran weiterarbeiten aber ich hoffe das hilft

  • Roboterarm / FTDI FT232RL / Com-Usb

    • draien
    • 17. Dezember 2014 um 12:40

    Hallo,

    Danke GTASpider für die Antwort, auch wenn mir diese nicht sehr viel weiter geholfen hat.
    Jedoch hab ich folgenden Thread entdeckt, der eine UDF für FT232R handling enthält und konnte damit schon Erfolge erzielene (LED, die kommunikation indiziert, blinkt :) )

    Vielleicht hat damit schonmal wer Erfahrungen gemacht und kann mir weiterhelfen?

  • Roboterarm / FTDI FT232RL / Com-Usb

    • draien
    • 12. Dezember 2014 um 15:11

    Hallo Zusammen,

    Einleitung:
    Aktuell beschäftige ich mich mit dem Arexx RA1-Pro. Dieser ist mit einem ATMEGA64 uController ausgestattet, der mit dem PC über ein FTDI FT232RL kommuniziert. Jener sitzt auf eine Platine und ist über USB (Typ A - Typ B) mit dem PC verbunden. Ich konnte ein Programm auf den uController schreiben, dass mir den Input in eine Bewegung des Arms übersetzt. Bisher geschieht der Input jedoch noch über das Terminal des beigelegten Programms "RobotLoader". Nun möchte ich -zumindest was den Input/output betrifft - jenes umgehen und durch AutoIt ersetzen (die Möglichkeiten scheinen unbegrenzt :party: ).

    Problem:
    Ich weiss nicht wie ich diese Kommunikation nun in AutoIt realisieren soll, bzw. wo genau ich anfangen soll.
    Bisher konnte ich mir ein paar Beiträge zu DLL's,RS232,Com-Port UDF etc. durchlesen (auch im englischen Forum, und es wird komischerweise immer auf ein Thema verwiesen, was nicht mehr existiert :( ).
    Dieses Thema schien sehr vielversprechend, nur weiss ich nocht nichtmal, ob ich damit überhaupt richtig liege.
    Nur was davon brauch ich jetzt genau? Spielt das überhaupt eine Rolle? Benutze ich jetzt COM UDF's oder USB? (Im Geräte Manager ist ja der COM Port gelistet, aber auch der USB Serial Converter :wacko: )

    Ziel:
    Nach dem Starten des Roboters und connecten des RobotLoaders lässt sich durch ein einfaches senden von "s" das geladene Programm starten. Dies ware als ersteres in AutoIt zu realisieren :)

    Würde mich freuen wenn jemand damit bereits Erfahrungen gemacht hat oder mir vielleicht 1-2 Tipps geben kann, wo genau ich anfangen soll.

  • _XMLSetAttrib falsche Syntax?!

    • draien
    • 16. Oktober 2014 um 11:11

    Edit: *facepalm* hat sich erledigt -_-

    Hi AutoIt'ler!
    Bin aktuell dabei Daten aus einer Excel Tabelle mit einer XML-File zu vergleichen und ggf. zu ersetzen (das Attribut 'comment2' soll hierbei verändert werden)
    Dazu benutze ich die _XMLDomWrapper.au3
    Um es kurz zu halten, dieses funktioniert:

    Code
    $newAttr = "RoC_Alarm"
    _XMLSetAttrib("/MEMORY_EDITOR/MEMIMAGE[@name='DATASET']/MEMBYTE[@comment2='KF Alarm Temperaturgrenze Super']","comment2",$newAttr)

    Und dieses nicht:

    Code
    $oldAttr = 'KF Alarm Temperaturgrenze Super'
    $newAttr = "RoC_Alarm"
    _XMLSetAttrib("/MEMORY_EDITOR/MEMIMAGE[@name='DATASET']/MEMBYTE[@comment2=" & $oldAttr & "]","comment2",$newAttr)

    Das untere ergibt 3 errors:

    Spoiler anzeigen

    [Blockierte Grafik: http://exceeds.bplaced.net/err1.JPG]
    [Blockierte Grafik: http://exceeds.bplaced.net/err2.JPG]
    [Blockierte Grafik: http://exceeds.bplaced.net/err3.JPG]

    Was mache ich falsch? Bzw. was übersehe ich hier?

    Edit: BB-Code von autoit nach code verändert, da ungewollte ; erscheinen

  • Innerhalb einer GUI überprüfen welcher Button gedrückt ist?

    • draien
    • 3. September 2014 um 21:20

    Ich denke das Sprichwort:
    Manchmal sieht man den Wald vor lauter Bäumen nicht. :pinch:

    passt hier ganz gut. Vielen Dank dafür  :thumbup:

  • Innerhalb einer GUI überprüfen welcher Button gedrückt ist?

    • draien
    • 3. September 2014 um 21:05

    Hallo zusammen,
    ich arbeite derzeit etwas an einer GUI und frage mich, wie man etwas "schöner" programmiert.
    Mal als Beispiel: Ich habe etwa 25 Buttons (die alle mehr oder weniger die selbe Funktion aufrufen nur mit anderen Parametern)
    und anstatt eben jetzt 25 Switch-Case Anweisungen zu schreiben wollte ich das in einer packen.

    Hier mal mein Lösungsvorschlag

    [autoit]

    For $i = 0 To 5 Switch $nMsg[0] Case $north_shara[$i]
    MsgBox(0,"You clicked","Button: " & GuiCtrlRead($north_shara[$i]))

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

    EndSwitch Next

    [/autoit]

    (tut mir leid für diese schreckliche Formatierung, wBB scheint nicht zu wollen wie ich will)

    Es klappt auch soweit, was mich jedoch stört ist die Tatsache dass er permanent in dieser For-Schleife bleibt.
    Gibt es keinen einfacheren Weg o.O?

    Edit: gelöst gesetzt

  • _FFLoadWait() überbrücken

    • draien
    • 9. März 2012 um 17:54

    Natürlich! So klappt's.

    Warum ich dass nicht versucht habe?

    Naja fürs nächste mal weiß ich bescheid :)

    Danke dir vielmals.

  • _FFLoadWait() überbrücken

    • draien
    • 9. März 2012 um 16:46

    Hi :)

    Zitat

    Edit: Sry hab deine Frage nicht ganz verstanden gehabt.

    Ich stell sie einfach mal anders und etwas konkreter.
    Wenn ich ein neuen Tab durch _FFTabAdd öffne, wartet er bis zum öffnen eines nächsten Tabs bis die Seite geladen hat. Das will ich ändern. Vielleicht sogar zeitabhängig machen (dass wenn sie innerhalb von 2 sek. nicht geladen hat, etc.).
    In der FF.au3 steht folgendes:

    Spoiler anzeigen
    [autoit]


    Func _FFTabAdd($sURL = "about:blank", $bSelect = True, $bLoadWait = True)
    Local Const $sFuncName = "_FFOpenURL"

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

    If $sURL = Default Then $sURL = "about:blank"
    If Not __FFCheckURL($sURL) Then
    SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(URL) $sURL: " & $sURL))
    Return 0
    EndIf
    If $bSelect Then
    _FFCmd("gBrowser.selectedTab = gBrowser.addTab('" & $sURL & "')", 3000)
    Else
    _FFCmd("gBrowser.loadOneTab('" & $sURL & "',null,null,null,true)", 3000)
    EndIf
    If Not @error Then
    Sleep(1000)
    __FFSetTopDocument()
    If $bLoadWait Then Return _FFLoadWait()
    Return 1
    EndIf

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

    Return 0

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

    EndFunc ;==>_FFTabAdd

    [/autoit]


    Das was für das _FFLoadWait verantwortlich ist steht in der ersten, bzw den letzteren Zeilen. Wenn ich hier $bLoadWait = false setze, funktioniert das auch nicht. Also wollte ich fragen ob man vielleicht das gesamt _FFLoadWait() überbrücken/aussetzen kann. (Gibt es dafür einen Befehl/Parameter/etc?)

    Ich hoffe es ist ein bisschen klarer.

    Oder ist das ganze überhaupt nicht möglich, weil alles zu tiefi in der FF.au3 verankert ist?

    LG

  • _FFLoadWait() überbrücken

    • draien
    • 9. März 2012 um 14:00

    Hallo
    Bin neu hier und wusste nicht so recht wohin mit meiner Frage :)
    Ist es möglich, beim Aufrufen einer Seite (oder Erstellen eines neuen Tabs in meinem Fall), dass Laden der Seite zu überspringen, bzw direkt weiter zu machen, ohne dass er die komplette Seite erst Laden muss.
    Ich möchte mein Firefox mal etwas quälen und möchte daher einfach mal viele Seiten aus einem Array auf einmal, bzw schnell hintereinander öffnen, ohne dass jede Seite immer fertig laden muss :)
    Hier mal ein Beispiel:

    Spoiler anzeigen
    [autoit]


    While 1

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

    sleep(100)

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

    $aLinks = _FFLinksGetAll()

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

    for $i = 211 to 250

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

    _ArrayAdd($nLinks, $aLinks[$i][0])

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

    Next

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

    _ArrayDelete($nLinks, 0)

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

    _ArraySort($nLinks)

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

    for $j = 21 to 40

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

    _ArrayDelete($nLinks, $j)

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

    Next

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

    for $k = 0 to 10

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

    _FFTabAdd($nLinks[$k])

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

    Next

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

    _FFTabSetSelected("first","key")

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

    Sleep(5000)

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

    _FFTabCloseAll()

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

    for $m = 11 to 20

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

    _FFTabAdd($nLinks[$m])

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

    Next

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

    _FFTabSetSelected("first","key")

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

    Sleep(5000)

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

    _FFTabCloseAll()

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

    Sleep(5000)

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

    Send("{F5}")

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

    WEnd

    [/autoit]

    Hab in der FF.au3 versucht das LoadWait als false bei dem Befehl TabAdd einzutragen. Hat aber nicht funktioniert.

    Hoffe ihr könnt damit was anfangen.
    LG :)

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™