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

Beiträge von James

  • .net dll in Autoit verwenden

    • James
    • 18. Mai 2014 um 17:49
    Zitat von GtaSpider

    Da Dies aber eine DotNet DLL ist und AutoIt damit nicht umgehen kann, musst du dir wohl eine andere DLL suchen.


    Indirekt schon:
    Möglichkeit 1
    Möglichkeit 2

  • StdoutRead bzw. StderrRead Progress formatieren (wie in Standard CMD)

    • James
    • 11. Mai 2014 um 22:40
    Zitat von Hakeem

    Der von Dir vorgeschlagene Test setzt @error auf 1 und liefert keine Ergebnisse...

    Naja, du hast ja selbst gesagt, dass 1x StderrRead einem Teil einer Zeile entspricht, somit kann auch nicht immer eine Prozentzahl gefunden werden. Außerdem dauert 1% wahrscheinlich auch länger als ein Schleifendurchlauf, weshalb StderrRead nicht immer neuen Text zurück gibt.

    Zitat von Hakeem

    Ich fürchte auch, dass es das Skript sehr "fett" macht, wenn ich den Stream ständig mit StringRegExp behandle und dann das Array verarbeite.

    Den Stream auszulesen + RegExp + eventuelles Update der Progressbar sind zusammen ca. 5 Zeilen, ich denke "sparsamer" geht es nicht wirklich. :D Es sei denn du meinst damit etwas anderes...

  • StdoutRead bzw. StderrRead Progress formatieren (wie in Standard CMD)

    • James
    • 11. Mai 2014 um 22:04
    Zitat von Hakeem

    Meintest du vielleicht ich soll pro Runde nach xxx% suchen?


    Das wäre wahrscheinlich am einfachsten. Solange sonst keine Prozentzahlen auftauchen sollte das kein Problem sein.
    Mit StringRegExp würde das übrigens so aussehen:

    [autoit]

    StringRegExp($var, "(\d{1,3})%", 3)

    [/autoit]
  • StdoutRead bzw. StderrRead Progress formatieren (wie in Standard CMD)

    • James
    • 11. Mai 2014 um 21:50

    Wofür brauchst du überhaupt die graphische Anzeige (in Form von Text) des Fortschritts? Soweit ich das verstehe sollte es reichen den Error-Stream zeilenweise auszulesen, die Prozentzahl herauszufiltern (dafür braucht man auch nur ganz wenig StringInStr bzw. regex) und diesen dann an eine ProgressBar weiterzuleiten. Und was genau meinst du mit den Meldungen, die dir dann entgehen?

  • Kleiner Prozentrechner

    • James
    • 11. Mai 2014 um 18:23
    Off-Topic bezogen auf den Kommentar von chesstiger
    Zitat von chesstiger

    Ich kenne die Schreibweise als $spCfg, wobei das s den Datentyp, und das p den Verwendungszweck angibt (wie auch in der ungarischen Notation gedacht), aber ein p allein signalisiert für gewöhnlich einen Zeiger / Pointer, und das ist in AutoIt bei einem String nicht so. ^^


    Bezieht sich die Klammer auf den Datentyp und den Zweck oder nur auf den Zweck? Falls ersteres der Fall ist: Der ursprüngliche Verwendungszweck der ungarischen Notation ist es Variablen gleichen Typs zu unterscheiden, deren Verwendungszweck bzw. Inhalt so unterschiedlich ist dass es ein großer Fehler wäre sie in irgendeiner Form zu kombinieren. Das Angeben des Typs ist erst später hinzugekommen und gibt dem Programmierer keine zusätzlichen Informationen, da man erstens einen (groben) Überblick über seine Variablen haben sollte und zweitens seine Variablen so benennen sollte, dass automatisch klar ist von welchem Typ die Variable ist und was in ihr gespeichert wurde. Ich bin mir natürlich dessen bewusst, dass die Angabe des Typs gerade Anfängern (und natürlich auch allen anderen) eine Hilfe sein kann.

    Die ungarische Notation macht vor allem Sinn wenn es darum geht Fehler im Code hervorzuheben: Wenn man zum Beispiel Benutzereingaben verwaltet ist eine Unterscheidung zwischen string und unsafe string sinnvoll, da man bei einer Zeile wie $sMessage = $usMessage sofort sieht, dass da irgendwas falsch ist.

    Da sich die andere Form der ungarischen Notation mit der Angabe des Datentyps allerdings fest in AutoIt eingebürgert hat und sich das auch in Zukunft wahrscheinlich nicht ändern wird ist dieser Post eigentlich vollkommen unnötig, vor allem da das ganze Thema sowieso Off-Topic ist. Ich wollte das aber trotzdem mal erwähnt haben. :)

  • ComboBox manuelle Eingabe verhindern

    • James
    • 10. Mai 2014 um 22:02

    Je nach dem wie viele Items die ComboBox haben soll solltest du als Style stattdessen eher BitOR($CBS_DROPDOWNLIST, $WS_VSCROLL) benutzen, sonst werden dir eventuell nicht alle Items angezeigt.

  • Revision Demoparty 2014 Streams'n'Tools (und allgemeine Demoparty Diskussion)

    • James
    • 27. April 2014 um 12:01
    Zitat von Andy

    Ich habe bei "Demo" aber maximal das 4K-Format im Auge.
    AutoIt ist ideal, die "Umgebung" bereitzustellen, d.h. Darstellung der Fenster usw.

    Aber da wir ja dann anscheinend trotzdem noch AutoIt verwenden wie es uns momentan zur Verfügung steht, wie willst du dann die 4K Grenze erreichen?

    Zitat von Andy

    Viel schöner wäre doch, wirklich EINFACHE Schleifen und Berechnungen im AutoIt-Code direkt in den Speicher zu compilieren und dort auszuführen, ein "Mini-Compiler" sozusagen. Aber das ist wohl etwas viel verlangt, aber was meint ihr?

    Wir haben doch schon mehrere Projekte die Assembler in AutoIt einbinden und zur Laufzeit benutzen, ist es dann wirklich so schwer das ganze mit einem geeigneten Compiler zu machen? Oder willst du Teile des AutoIt Codes kompilieren und nicht nur einen String mit z.B. C Code?

  • Revision Demoparty 2014 Streams'n'Tools (und allgemeine Demoparty Diskussion)

    • James
    • 25. April 2014 um 16:37

    Nur braucht man dafür eine "richtige" Programmiersprache (wie es gestern jemand formuliert hat): AutoIt kannst du nicht kompilieren und die Geschwindigkeit reicht auch nicht aus (wobei es dafür auch noch ASM gibt, aber dann am besten gleich richtig).

  • Revision Demoparty 2014 Streams'n'Tools (und allgemeine Demoparty Diskussion)

    • James
    • 25. April 2014 um 12:08
    Zitat von YaeroxXO

    Ist das denn so ziemlich der einzige Bereich? Ich hätte Lust auf ne Veranstaltung die da etwas offener ist vll ... oder andere Themen hat


    Meines Wissens nach nicht. Auch Wikipedia definiert den Begriff so.

    Zitat von Wikipedia

    Within the computer subculture known as the demoscene, a non-interactive multimedia presentation is called a demo (or demonstration).

    Links hat Andy ja schon gepostet, ansonsten ist auch Wikipedia sehr zu empfehlen was bestimmte Algorithmen angeht. (Beispiel: Diamond-square algorithm)

  • Revision Demoparty 2014 Streams'n'Tools (und allgemeine Demoparty Diskussion)

    • James
    • 25. April 2014 um 08:41

    Eine Demo ist eigentlich auch nichts anderes als in Echtzeit gerenderte Graphik mit Sound. Der einzige Nutzen ist es die Fähigkeiten des Entwicklers/Entwicklerteams zu demonstrieren. Die Zuschauer stimmen dann ab was ihnen am besten gefällt.

  • Was ist euch an einem RPG wichtig? [UMFRAGE]

    • James
    • 19. April 2014 um 19:06
    Zitat von hauke96

    Zudem würde es mich interessieren was euer lieblings RPG ist.


    Vampire: The Masquerade - Bloodlines, wobei ich dazusagen muss, dass ich bis jetzt nur zwei RPGs gespielt habe (VTMB und Skyrim).

    Edit: An The Legend of Zelda habe ich natürlich überhaupt nicht gedacht :pinch: ...dann eben VTMB und The Legend of Zelda: Link's Awakening.

    Edit #2: Hier mal eine kleine Ansammlung von Features die Vampire: Bloodlines meiner Meinung nach zu einem guten RPG machen:

    • Auswahl an verschiedenen Charakteren
    • Personalisierung des Charakters durch Vergeben von Punkten an Attribute und Talente, die dann zusammen wichtige Fähigkeiten definieren
    • sehr ausgeglichenes Gameplay (es ist nie zu schwer, aber auch nie zu leicht)
    • jede Entscheidung die man trifft scheint in irgendeiner Form wichtig zu sein und die Umgebung (die NPCs) reagieren darauf (auch sehr gut mit dem Vampir-Element verbunden)
    • abwechslungsreiche Handlungsorte/Quests; interessante NPCs; allgemein eine interessante Story
    • in Ansätzen vorhandener Realismus
  • WebBrowser Multitask | Problem mit eingabe von Enter usw.

    • James
    • 19. April 2014 um 12:59

    Ich kann dir bei deinem Problem zwar nicht helfen, will aber anmerken, dass du den Fehler vielleicht sogar selbst finden würdest, wenn du das Skript mit Arrays zusammenkürzen würdest. Alles ordentlich einzurücken ist auch nie schlecht, denn irgendwann kennst du dich selbst nicht mehr aus.

  • Admin-Geburtstag

    • James
    • 18. April 2014 um 15:36

    Alles Gute zum Geburtstag. :party:

  • Neue AutoIT SciTE V14.04.05.11 ab jetzt OHNE Obfuscator! - Alternative verfügbar?

    • James
    • 7. April 2014 um 14:54
    Zitat von skyteddy

    Mir ist klar, dass ein/der Obfuscator keinen 100%igen Schutz bietet. Dennoch möchte ich gerne weiterhin meine Programme schützen.

    Keinen 100%igen Schutz ist gut gesagt, der offizielle Obfuscator bietet wahrscheinlich überhaupt keinen Schutz, da die Dekompiler (zumindest die die ich kenne) die notwendigen Gegenmaßnahmen alle schon eingebaut haben (ist auch irgendwie kein Wunder, den Obfuscator gibt es ja jetzt auch schon eine Weile).

    Zitat von skyteddy

    Auch weiß ich, dass ich den momentanen Obfuscator noch verwenden kann, doch die AutoIt-Entwicklung geht ja weiter und wie z.B. die AutoIT-Version 3.3.11.4 zeigt, gibt es weitere Scipt Breaking Changes, was der Obfuscator sicherlich nicht mehr berücksichtigt.

    Hast du das denn schon ausprobiert? Solange das Programm noch funktioniert spricht ja nichts dagegen es weiterhin zu verwenden.

    Zitat von skyteddy

    Gibt es Alternativen? Wie handhabt Ihr das zukünftig?

    Da die neue bzw. erweiterte AutoIt-Syntax jetzt auch schon wieder einige Monate alt ist wird es sicherlich in Bälde neue Obfuscatoren geben. Ansonsten hasse ich es das sagen zu müssen, aber AutoIt ist für so etwas einfach nicht geeignet.

  • Kompilierte EXE mit 3.3.10.2 reagiert sehr langsam

    • James
    • 3. April 2014 um 17:45
    Zitat von simi4

    ich habe ein Projekt, welches ich schon mit der AutoIt Version 3.3.8.1 erfolgreich kompiliert habe. Nun bin ich auf die neue Version (3.3.10.2) umgestiegen und seit dem ist mein Programm sehr langsam geworden.

    Da stellt sich mir die Frage wieso du umgestiegen bist. Das Programm schien ja auch vorher schon zu laufen, also kann es ja nicht an den Neuerungen der aktuellen Version liegen. (Edit Andy: "es" bezieht sich hierbei auf den Umstieg und nicht auf das Langsamerwerden des Programms) Somit wäre die einfachste Möglichkeit das Problem zu lösen wieder auf Version 3.3.8.1 zu wechseln.

  • RegExp: String ausschließen

    • James
    • 17. März 2014 um 18:44
    Zitat von powerbass4

    Kannst du mir diesen Teil (?:<[^>]+>(?:[^<]+)</[^<]+>\s*) des Pattern bitte noch erläutern. :rolleyes:

    Das ist einfach nur ein beliebiges XML Tag bzw. eine Ansammlung von Tags, d.h. z.B. <irgendwas>a = b</irgendwas>. genauere Erklärung

    @all Auch wenn sich das Thema jetzt geklärt hat wüsste ich trotzdem gerne ob und wie man einzelne Strings von der Suche ausschließen kann, vielleicht weiß das ja jemand.

  • Speed Reading mit AutoIt

    • James
    • 17. März 2014 um 14:30
    Zitat von Jasfar

    Gefällt mir, habe für mich ein paar kleinigkeiten umgestellt, wie z.b. meine WPM von 600, mit der ich am besten zurecht komme...

    Genau dafür ist das Eingabefeld neben den Buttons, 250 ist nur der Standardwert.

    Zitat von Jasfar

    Was noch cool wäre, wenn man die Zeit stoppt, wie lange man benötigt diesen Text zu lesen, ich glaube ich bastel mir da auch noch etwas herum, wenn ich darf? :)

    Klar, aber das wollte ich sowieso noch einbauen. Das mache ich wenn ich nachher aus der Schule zurückkomme. Dann wahrscheinlich ähnlich wie bei Squirt: "You just read x words in y {optimale Zeiteinheit}!"

    Edit:
    Die "Stoppuhr" habe ich jetzt eingebaut, der Rest folgt gegen Ende der Woche, da ich dafür das Skript etwas umstrukturieren muss.

  • Speed Reading mit AutoIt

    • James
    • 16. März 2014 um 10:21
    Zitat von Cheater Dieter

    Nicht schlecht, wenns auch hier und da noch hakt. Z.B. mit Umlauten kommt das Programm gar nicht klar. Ein Wort wie Büro wird in die Teile B und ro getrennt. So ist das Programm für deutsche Texte leider nicht wirklich nützlich.

    Und das passiert, wenn man das Programm nur mit englischen Texten testet. Wird natürlich sofort geändert, danke für den Tipp.

    Zitat von minx

    Anpassung der Anzeigezeit an die Länge der Wörter

    Wenn ihr mir sagt wie ihr euch das genau vorstellt (wie viel langsamer das Wort dargestellt werden soll) baue ich das demnächst ein.

  • Speed Reading mit AutoIt

    • James
    • 15. März 2014 um 22:08
    Zitat von minx

    Es fehlt noch eine Anpassung der Anzeigezeit an die Länge der Wörter

    Macht das überhaupt einen Unterschied?

    Zitat von minx

    iReadFast verwendet z.B. ein Flackern (in etwa wie in eine, GuiCtrl ohne Double-Buffer) um das eigentliche Lesen von Wörtern zu verhindern, damit kann man sogar noch schneller lesen. Ich weiß nicht, wovon dieses Flackern abhängig gemacht wird, aber es wäre auch noch eine Idee ;)

    Sollte sich das ändern baue ich das natürlich gerne noch ein, sollte mit ein bisschen JavaScript ja kein großes Problem sein.

  • Speed Reading mit AutoIt

    • James
    • 15. März 2014 um 21:45

    Diskussion zum Thema

    Skript
    [autoit]

    #NoTrayIcon

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

    Global Const $GUI_ENABLE = 64
    Global Const $GUI_DISABLE = 128

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

    Global $oIE, $Form1, $btnStart, $btnPause, $inputWPM, $editText, $b = False, $nWPM, $aWords, $iWord = 0, $iTimer = -1
    Global $sHTML = '<center style="font-family: Courier New;font-size: 24px"><span id="text">%%</span></center>'

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

    $oIE = ObjCreate("Shell.Explorer.2")
    If @error Then Exit MsgBox(16, "Error", "Sorry, but you need to have the 'Shell.Explorer.2' object installed to use this program.")

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

    $Form1 = GUICreate("AutoIt Speed Reading Demo", 400, 320)
    GUICtrlCreateObj($oIE, 20, 20, 360, 80)
    GUISetFont(10, 1000, 0, "Courier New")
    $btnStart = GUICtrlCreateButton("Start", 20, 120, 80, 20)
    $btnPause = GUICtrlCreateButton("Pause", 110, 120, 80, 20)
    GUICtrlSetState($btnPause, $GUI_DISABLE)
    $inputWPM = GUICtrlCreateInput("", 200, 120, 180, 20)
    GUICtrlSendMsg($inputWPM, 0x1501, 0, "Words / Minute")
    $editText = GUICtrlCreateEdit("The quick brown fox jumps over the lazy dog.", 20, 150, 360, 130)
    $labelInfo = GUICtrlCreateLabel("", 20, 290, 360, 20)
    GUISetState(@SW_SHOW, $Form1)

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

    $oIE.navigate("about:blank")
    Sleep(10)
    UpdateHTML("Hello World!")

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

    Do
    Switch GUIGetMsg()
    Case -3
    ExitLoop
    Case $btnStart
    If $b Then
    _Stop()
    Else
    ParseText()
    _Start()
    $iWord = 0
    GUICtrlSetData($btnStart, "Stop")
    GUICtrlSetState($btnPause, $GUI_ENABLE)
    $b = True
    EndIf
    Case $btnPause
    If $b Then
    AdlibUnRegister("DisplayNextWord")
    GUICtrlSetData($btnPause, "Resume")
    $b = False
    Else
    _Start()
    GUICtrlSetData($btnPause, "Pause")
    $b = True
    EndIf
    EndSwitch
    Until False
    AdlibUnRegister("DisplayNextWord")
    $oIE = 0
    Exit

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

    Func _Start()
    $nWPM = Number(GUICtrlRead($inputWPM))
    If ($nWPM < 60) Then $nWPM = 250
    AdlibRegister("DisplayNextWord", Floor(60000/$nWPM))
    If ($iTimer < 0) Then $iTimer = TimerInit()
    EndFunc
    Func _Stop()
    AdlibUnRegister("DisplayNextWord")
    GUICtrlSetData($labelInfo, StringFormat("You just read %d word(s) in %s!", $iWord, _FormatSeconds(TimerDiff($iTimer)/1000)))
    $iTimer = -1
    GUICtrlSetState($btnPause, $GUI_DISABLE)
    GUICtrlSetData($btnStart, "Start")
    $b = False
    EndFunc

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

    Func ParseText()
    Local $text = GUICtrlRead($editText), $i, $a, $b
    Local $html = '\1<span style="color: #FF0000;">\2</span>\3'
    $aWords = StringRegExp($text, '("?[\wÄäÖöÜüß]+[,.:;!?-]*"?)', 3)
    For $i = 0 To UBound($aWords)-1
    $a = StringRegExp($aWords[$i], "[A-Za-zÄäÖöÜüß]+", 3)
    If (Not @error) Then
    $a = $a[0]
    If (StringLen($a) > 2) Then
    $b = getORPIndex($a)
    $aWords[$i] = StringReplace($aWords[$i], $a, StringRegExpReplace($a, '^(.{' & $b & '})(.)(.*)$', $html), 1, 1)
    EndIf
    EndIf
    Next
    EndFunc
    Func getORPIndex($s)
    Local $l = StringLen($s)
    If ($l = 1) Then Return 0
    If ($l = 2) Then Return 1
    If ($l = 3) Then Return 1
    Return Floor($l / 2) - 1
    EndFunc

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

    Func UpdateHTML($sContent)
    $oIE.document.body.innerHTML = StringReplace($sHTML, "%%", $sContent)
    EndFunc

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

    Func DisplayNextWord()
    UpdateHTML($aWords[$iWord])
    $iWord += 1
    If ($iWord >= UBound($aWords)) Then _Stop()
    EndFunc

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

    Func _FormatSeconds($n)
    If ($n > 86400) Then
    Return Round($n/86400, 2) & " day(s)"
    EndIf
    If ($n > 3600) Then
    Return Round($n/3600, 2) & " hour(s)"
    EndIf
    If ($n > 60) Then
    Return Round($n/60, 2) & " minute(s)"
    EndIf
    Return Round($n, 2) & " second(s)"
    EndFunc

    [/autoit]

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™