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

Beiträge von L3viathan

  • C++ oder Java?

    • L3viathan
    • 25. März 2011 um 01:29

    C++, C++ und nochmal C++.
    Stirb, Java!

    blubbstar: Ich gehe mal davon aus, dass du nichts "Koda-mäßiges" mehr brauchst.
    Dennoch: Delphi und VB bieten genau das an.
    Wenn du das auch für C++ brauchst, gibt es Microsofts Visual C++.
    Ich sage aber mal: C++, weil du eh nur dlls erstellen musst, die du dann mit AutoIt aufrufen kannst.
    Sorry, war etwas wirr...

  • Japan - Atomare Katastrophe

    • L3viathan
    • 24. März 2011 um 22:19

    Ganz spannend: http://xkcd.com/radiation/

  • Wechselt/Updatet ihr euren Browser?

    • L3viathan
    • 23. März 2011 um 23:16

    Bin schon länger auf Firefox 4 (Beta, RC und jetzt Final), habe aber auch noch Firefox 3.6, Opera, Safari, IE, Chrome und Rockmelt drauf.
    Ich benutze aber eigentlich nur FF4, selten mal Opera oder Chrome/Rockmelt.

  • WeatherVoice - Lass dir das Wetter vorlesen

    • L3viathan
    • 22. März 2011 um 19:28

    Langfristig ist es mein Ziel, eine Art "Sekretär" zu erstellen: Wenn ich den Rechner morgens aufklappe, soll er mir Wetter, Nachrichten, Batteriestatus, Anzahl neuer Mails, etc. vorlesen :D

  • WeatherVoice - Lass dir das Wetter vorlesen

    • L3viathan
    • 22. März 2011 um 12:47

    Ich hatte plötzlich diese fixe Idee, ein paar Minuten später fand ich die wetter.com-API, und wieder 10 Minuten später war es fertig: WeatherVoice.
    das folgende Skript liest die Wettervorhersage der nächsten drei Tage für Chios (wo ich gerade bin) vor.
    Da ihr sicherlich einen anderen Ort haben möchtet, müsst ihr drei Angaben in der URL ändern: GRXXX0026 zu der ID des Ortes (zu finden auf wetter.com)
    Dann braucht ihr einen API-Key. Wenn ihr den habt, tragt ihr statt weathervoice den Namen eures Projektes ein und statt dem nach /cs/ eine md5-Summe von Ort (die ID), Projektname und API-Key (alles ohne irgendein Trennzeichen verbinden und md5en)

    Da ich keine deutsche Stimme habe, werden die (deutschen) Angaben von wetter.com ins Englische übersetzt (und MS Sam liest das dann vor).

    Spoiler anzeigen
    [autoit]

    #include <String.au3>

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

    $weather=BinaryToString(InetRead("http://api.wetter.com/forecast/weather/city/GRXXX0026/project/weathervoice/cs/40798025cf6c488f476f1ec63b33c0a6"),4)
    $weather=_StringBetween($weather,"<w_txt>","</w_txt>")
    $alt=0

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

    sayforday(0,"Today")
    Sleep(400)
    sayforday(1,"Tomorrow")
    Sleep(400)
    sayforday(2,"The day after tomorrow")
    Sleep(600)
    _Say("All in all: Today " & t($weather[4]) & ". Tomorrow " & t($weather[9]) & ". The day after: " & t($weather[14]) & ".")

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

    Func sayforday($i,$day)
    If $weather[0+5*$i]=$weather[1+5*$i] And $weather[1+5*$i]=$weather[2+5*$i] And $weather[2+5*$i]=$weather[3+5*$i] Then
    _Say($day & ", the whole day " & t($weather[0+5*$i]))
    ElseIf $weather[0+5*$i]=$weather[1+5*$i] And $weather[1+5*$i]=$weather[2+5*$i] Then
    _Say($day & ", until the afternoon " & t($weather[0+5*$i]) & ", in the night " & t($weather[3+5*$i]))
    ElseIf $weather[0+5*$i]=$weather[1+5*$i] And $weather[2+5*$i]=$weather[3+5*$i] Then
    _Say($day & ", until noon, " & t($weather[0+5*$i]) & ", later " & t($weather[3+5*$i]))
    ElseIf $weather[0+5*$i]=$weather[1+5*$i] Then
    _Say($day & ", until noon, " & t($weather[0+5*$i]) & ", in the afternoon " & t($weather[2+5*$i]) & " and in the night " & t($weather[3+5*$i]))
    ElseIf $weather[1+5*$i]=$weather[2+5*$i] And $weather[2+5*$i]=$weather[3+5*$i] Then
    _Say($day & ", " & t($weather[0+5*$i]) & " in the morning, later it gets" & t($weather[2+5*$i]))
    ElseIf $weather[1+5*$i]=$weather[2+5*$i] Then
    _Say($day & ", " & t($weather[0+5*$i]) & " in the morning, later it gets" & t($weather[2+5*$i]) & " and in the night " & t($weather[3+5*$i]))
    ElseIf $weather[2+5*$i]=$weather[3+5*$i] Then
    _Say($day & ", " & t($weather[0+5*$i]) & " in the morning, " & t($weather[1+5*$i]) & " at noon, later it gets" & t($weather[3+5*$i]))
    Else
    _Say($day & ", " & t($weather[0+5*$i]) & " in the morning, " & t($weather[1+5*$i]) & " at noon, " & t($weather[2+5*$i]) & " in the afternoon and " & t($weather[3+5*$i]) & " at night.")
    EndIf
    EndFunc
    Func _Say($sText, $iRate = 1, $iVolume = 100)
    If $iRate > 10 Or $iVolume > 100 Then Return
    Local $oTalk = ObjCreate('SAPI.SpVoice')
    If Not @error Then
    $oTalk.Rate = $iRate
    $oTalk.Volume = $iVolume
    $oTalk.Speak($sText)
    EndIf
    ConsoleWrite($sText & @CRLF)
    EndFunc
    Func t($what)
    Switch $what
    Case "heiter"
    Return "sunny"
    Case "leicht bewölkt"
    Return "partly cloudy"
    Case "wolkig"
    Return "cloudy"
    Case "regen","Regen"
    Return "rainy"
    Case Else
    Return $what
    EndSwitch
    EndFunc

    [/autoit]
  • FABSIL Array Based Stupid Interpreter Language (Neue Version 2)

    • L3viathan
    • 21. März 2011 um 11:14

    Ja, ist echt praktisch. Das gleiche mache ich quasi mit Stift und Papier ;)
    Du kannst nicht zufällig Perl?

  • FABSIL Array Based Stupid Interpreter Language (Neue Version 2)

    • L3viathan
    • 21. März 2011 um 00:45

    Oh, @progandy, hätte ich das früher gesehen, hätte ich die Änderungen an meinem Interpreter vielleicht bleiben lassen.

    Jedenfalls: Neue Version 2 (final?) mit Dateieinlesung und Ausführlichkeitsoption.
    Ich muss mal eine Spezifizierung schreiben, um zwischen Interpreter und Sprache zu trennen.

    edit: Nochmal deinen Code angeguckt: Das kollidiert ja kaum mit meinen Änderungen, leichtes Abwandeln dürfte helfen.

  • FABSIL Array Based Stupid Interpreter Language (Neue Version 2)

    • L3viathan
    • 20. März 2011 um 23:39

    Ich habe es nach langer Fehlersuche geschafft, Ganzzahldivision in FABSIL umzusetzen (sogar mit Überprüfung, ob Divisor 0 ist):

    Code
    ["Fehler: Division durch null","Ergebnis: ",5,100,5,101,1,100,110,1,101,111,0,1,12,102,10,101,41,20,10,110,44,24,1,101,111,10,111,31,35,8,102,6,20,9,110,9,111,6,27,4,0,3,4,1,4,102,3]
  • FABSIL Array Based Stupid Interpreter Language (Neue Version 2)

    • L3viathan
    • 17. März 2011 um 00:57

    Eigentlich dürfte das nicht passieren, weil der Pointer ja am Ende der While-Schleife inkrementiert wird... o_O
    Naja, ich guck es mir mal an..

    edit: Nochmal überprüft: Kann ich nicht reproduzieren. It's not a bug, it's a feature (wegen dem ohnehin folgenden Inkrement).

  • FABSIL Array Based Stupid Interpreter Language (Neue Version 2)

    • L3viathan
    • 16. März 2011 um 21:47

    Soeben gemacht:

    Code
    ["Zahl 1 eingeben:","Zahl 2 eingeben:","Die größere Zahl ist ",@CRLF,4,0,5,100,4,3,4,1,5,101,4,3,1,100,120,1,101,121,10,120,36,26,10,121,41,30,9,120,9,121,6,22,4,2,4,101,3,4,2,4,100,3]


    Ich musste allerdings einen kleinen Bug fixen, siehe #1

  • FABSIL Array Based Stupid Interpreter Language (Neue Version 2)

    • L3viathan
    • 15. März 2011 um 23:33

    Okay, kommt noch.

    edit: done, siehe #1

  • FABSIL Array Based Stupid Interpreter Language (Neue Version 2)

    • L3viathan
    • 15. März 2011 um 22:40

    :D Genau.
    Versuch doch mal, ein sinnvolles "Skript" damit zu schreiben.

  • FABSIL Array Based Stupid Interpreter Language (Neue Version 2)

    • L3viathan
    • 15. März 2011 um 22:27

    Jaja, das ist dumm, ich weiß.
    Trotzdem hier: v2.1 des FABSIL Interpreters. :D

    Den Programmcode schreibt man in das Array $MEM eine Datei, die Daten mit Zeilenumbruch getrennt. Die möglichen Befehle stehen in dem längeren Kommentar.

    Spoiler anzeigen

    [autoit;FABSIL AutoIt based stupid interpreter Language
    #include <Array.au3>
    #include <File.au3>
    Global $V=False, $MEM, $POINTER=0, $DIR=1
    If $CMDLINE[0] Then
    For $i = 1 To $CMDLINE[0]
    Switch $CMDLINE[$i]
    Case '-?','--help'
    MsgBox(0x40000, 'FABSIL Commandline Options', _
    'The only possible switch oder than -? / --help is -v / --versatile before the filename to output everything that''s happening')
    Exit
    Case '-v','--versatile'
    $V = True
    Case Else
    If not FileExists($CMDLINE[$i]) Then Exit MsgBox(16,"FABSIL Error","File doesn't exist")
    $FILE=$CMDLINE[$i]
    EndSwitch
    Next
    Else
    $FILE=FileOpenDialog("FABSIL Interpreter",@WorkingDir,"FABSIL File (*.fabsil)|All files (*.*)",1)
    If not FileExists($FILE) Then Exit
    EndIf

    _FileReadToArray($FILE,$MEM)
    If $MEM[0] = 0 Then Exit MsgBox(16,"FABSIL Error","The file is empty")
    _ArrayDelete($MEM,0)

    Func w($data)
    ;Write Data to the current pointer position
    guarantee($POINTER)
    $MEM[$POINTER] = $data
    EndFunc
    Func r()
    ;Read Data from the current pointer position
    If UBound($MEM) > $POINTER Then Return $MEM[$POINTER]
    Return 0
    EndFunc
    Func i()
    $POINTER += $DIR
    EndFunc
    Func d()
    $POINTER -= $DIR
    EndFunc

    #cs commands
    NET = NextElement'sTarget
    0 do nothing
    1 put the element from the next in the element of the following element (1,2,3: put content from 2 in 3)
    2 change the direction
    3 quit
    4 output the data of the next element ( 4,2: output $MEM[2]
    5 input data into next element ( 5,2: input into $MEM[2]
    6 jump to position of the next element
    7 relative jump of the number of the next element
    8 increment the element of the next element
    9 decrement the element of the next element
    10 if next elements target is zero, jump to the next but one. otherwise jump to next but second one.
    #ce

    ;Interpreter:
    ConsoleWrite(@CRLF & @CRLF)
    While 1
    Switch r()
    Case 0;do nothing
    V("Doing nothing" & @CRLF)
    Case 1;put
    i()
    $from=r()
    guarantee($from)
    V("Copying from " & $POINTER & " (" & r() & ") to")
    i()
    guarantee(r())
    $MEM[r()]=$MEM[$from]
    V(r() & @CRLF)
    Case 2;decrease
    $DIR *= -1
    V("Changing direction (now " & $DIR & ")" & @CRLF)
    Case 3;quit
    V("Exiting")
    ConsoleWrite(@CRLF & @CRLF)
    ExitLoop
    Case 4;output
    i()
    V("Outputting the data from " & r() & ":" & @CRLF)
    $oldP = $POINTER
    guarantee($POINTER)
    $POINTER = r()
    ConsoleWrite(StringReplace(r(),"@CRLF",@CRLF))
    $POINTER = $oldP
    Case 5;input
    i()
    $oldP=$POINTER
    $POINTER=r()
    guarantee($POINTER)
    V("Demanding input")
    w(InputBox("Machine","Eingabe verlangt:"))
    V(" (" & r() & ")" & @CRLF)
    $POINTER=$oldP
    Case 6;jumpto
    i()
    $POINTER = r()-$DIR
    V("Jumping to " & $POINTER+$DIR & @CRLF)
    If UBound($MEM) <= $POINTER Then
    V("Exiting because of pointer beyond memory")
    Exit
    EndIf
    Case 7;jumprelative
    i()
    V("Jumping " & r() & " steps forward (now ")
    $POINTER += (r()-$DIR)
    If UBound($MEM) <= $POINTER Then
    V(@CRLF & "Exiting because of pointer beyond memory")
    Exit
    EndIf
    V($POINTER+$DIR & ")" & @CRLF)
    Case 8;increment
    i()
    $oldP=$POINTER
    $POINTER=r()
    guarantee($POINTER)
    V("Incrementing " & $POINTER & " (now " & r()+1 & ")" & @CRLF)
    w(r()+1)
    $POINTER=$oldP
    Case 9;decrement
    i()
    $oldP=$POINTER
    $POINTER=r()
    guarantee($POINTER)
    V("Decrementing " & $POINTER & " (now " & r()-1 & ")" & @CRLF)
    w(r()-1)
    $POINTER=$oldP
    Case 10
    i()
    V("If " & $MEM[r()] & "is zero (is")
    If $MEM[r()] = 0 Then
    i()
    $POINTER = r()-$DIR
    V("), thus jumping to " & $POINTER+$DIR & @CRLF)
    If UBound($MEM) <= $POINTER Then
    V(@CRLF & "Exiting because of pointer beyond memory")
    Exit
    EndIf
    Else
    i()
    i()
    $POINTER = r()-$DIR
    V(" not), thus jumping to " & $POINTER+$DIR & @CRLF)
    If UBound($MEM) <= $POINTER Then
    V(@CRLF & "Exiting because of pointer beyond memory")
    Exit
    EndIf
    EndIf
    EndSwitch
    i()
    WEnd

    Func V($data)
    If $V Then ConsoleWrite($data)
    EndFunc
    Func guarantee($num)
    While UBound($MEM) <= $num
    _ArrayAdd($MEM,0)
    WEnd
    EndFunc[/autoit]

    Alter Beispielcode

    Edit: Erklärung des Beispielcodes:
    [4,2,"Wie heißt du?",5,14,4,7,@CRLF & "Hallo, ",4,14,4,13,3,"!",0]
    4,2: Gib den Inhalt von Position 2 aus.
    Danach ist der Pointer auf dem String, aber da der Interpreter keinen Befehl sieht, überspringt er es.
    5,14: Verlange eine Eingabe und speichere sie in Position 14.
    4,7: Gib den Inhalt von Position 7 aus (@CRLF & "Hallo ")
    String wird wieder übersprungen.
    4,14: Gib Position 14 aus (den Namen)
    4,13: Und jetzt das Ausrufezeichen von Position 13.
    3: Skript wird beendet.

    edit: Interpreter verbessert und eine Fehlerquelle behoben. Springt man zu einem noch nicht existierenden Speicherplatz, wird er automatisch erzeugt.
    Man kann nun die Kommandozeilenoption -v mitgeben, dann ist der Interpreter besonders ausführlich. Der Befehl 2 ist komplett neu: Richtungswechsel. Das ermöglicht einen netten Effekt:
    Gibt achtmal "Test" aus:

    Code
    Test,6,3,4,0,4,0,4,0,4,0,2


    "@CRLF" wird beim Ausgeben automatisch zum Zeilenumbruch geändert.
    Die komplette FABSIL-Spezifikation für Leute, die selbst einen Interpreter schreiben wollen, findet sich auf http://www.l3viathan.de/fabsil.


    Ich habe die Bedeutung der Abkürzung außerdem von "AutoIt Based" zu "Array Based" geändert, weil ich als Übung plane, den Interpreter in einer anderen Sprache umzusetzen.

  • aus JPG durch Umformung ein PNG erstellen

    • L3viathan
    • 26. Februar 2011 um 02:59

    Definitiv hat PdN ne Freistellfunktion, habe es selbst jahrelang benutzt.

  • Funkey Schrift Generator - ∫ЦηκΣλ S(ЧRЇ∫τ ςΣηΣRΛτ0R

    • L3viathan
    • 26. Februar 2011 um 02:20

    stayawayknight: Nein, das geht nur für ASCII+

  • aus JPG durch Umformung ein PNG erstellen

    • L3viathan
    • 26. Februar 2011 um 02:18
    Zitat von autoBert

    ich habe keine Bildbearbeitungssoftware mit Freistellungsfunktunktion


    Dann lad dir doch eine kostenlose runter, zum Beispiel Paint.NET...

  • Funkey Schrift Generator - ∫ЦηκΣλ S(ЧRЇ∫τ ςΣηΣRΛτ0R

    • L3viathan
    • 25. Februar 2011 um 22:01

    Leider kann ich da nur kauderwelsch lesen, weil ich das griechische Alphabet griechisch ausspreche :D
    "Frliz jlsd im komrlstt vsrolhrlostsi tlxi qusr durch bllsri"


    Aber lustig, ich habe praktisch ein identisches Skript mal für Leetspeak geschrieben ^^

  • Erster Versuch , und schon gleich am Anfang schwierigkeite. Benutzereingaben

    • L3viathan
    • 20. Februar 2011 um 17:34

    Hast du vlt. einfach den Parameter vergessen, zu übergeben?

    [autoit]

    $answer = InputBox("IP Adresse", "Bitte geben Sie die IP Adresse ihres Gerätes ein...?", "xxx.xxx.xxx.xxx", "", _
    -1, -1, 0, 0)

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

    If $answer="" Then
    ControlSend("Drucker hinzufügen", "", "[CLASS:Edit; INSTANCE:1]",$answer)
    Exit
    #cs ;<-- Else ist nicht nötig.
    Else ; andernfalls tue

    Exit
    #ce
    EndIf

    [/autoit]
  • Monopoly Digital 1.0

    • L3viathan
    • 20. Februar 2011 um 01:22

    Schöne Sache, aber etwas Kritik:

    Was für eine seltsame Monopoly-Variante ist das denn, mit Gemeinde, Kirche und so nem Kram? Es geht um Kapitalismus!!11
    Es wird ein bisschen viel gespendet. Optisch wäre es schön, wenn nicht *alle* Nachrichten in ner MsgBox kommen würden.

    Kleiner Bug: Das Skript merkt nicht, dass man verloren hat, wenn die Überschreitung der 0-Grenze durch Spende/Ereignis-karte zustande kommt.

  • Jeopardy! (beta)

    • L3viathan
    • 19. Februar 2011 um 13:55

    Also: autoBert: Das Rufen ist nur zum Spaß, wie in der Show halt ;)

    stayawayknight: Das sind ja auch nur Fragen, die ich mir in 5 Minuten schnell mal ausgedacht habe. Die QDB.ini musst du selbst anpassen, da sind übrigens ( @manuel6000) auch die Lösungen (als Kommentare) drin.

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™