Dreckgenerator

  • Hallo!
    Ich wollte ein AutoIt script schreiben, was auf 4 textdateien jeweils ein Wort rausnimmt, und diese in einem satz anordnet (anorden muss es nich halt nur so hintereinander in einer textbox anziegen).

    Wie mach ich das?
    Bitte nich so kompliziert erklären, bin neu

  • Hast du dir schon die aktuellen hilfen geladen? Den link dazu gibt es links in dder "Info-Links"-Box
    Guck dir mal FileRead bzw. InIread an, wenn ich ein bisschen zeit hab mach ich dir mal ein beispiel

    EDIT:
    Könntest du diese Textdateien mal Posten?

    mfg. Jam00

  • prinzipiell:

    name.txt
    => name1
    => name2
    => name3
    => ....

    verb.txt
    => geht
    => schläft
    => ...


    adj.txt
    => gelangweilt
    => nass
    => krank
    => ...


    ort.txt
    => am Bahnhof
    => zuhause
    => ....

  • [autoit]


    $1 = "Ich wollte ein AutoIt script schreiben" ;.txt Dateien können mit Fileread, Filereadline oder _Filereadtoarray eingelesen werden -> s. Hilfe
    $2 = "was auf 4 textdateien jeweils ein Wort rausnimmt"
    $3 = "und diese in einem satz anordnet"
    $4 = "in einer textbox anziegen"

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

    $a1 = stringsplit($1, " ")
    $r1 = Random(1, ubound($a1))

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

    $a2 = stringsplit($2, " ")
    $r2 = Random(1, ubound($a2))

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

    $a3 = stringsplit($3, " ")
    $r3 = Random(1, ubound($a3))

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

    $a4 = stringsplit($4, " ")
    $r4 = Random(1, ubound($a4))

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

    MsgBox(1, "", $a1[$r1] & " " & $a2[$r2] & " " & $a3[$r3] & " " & $a4[$r4])

    [/autoit]

    :D

    Einmal editiert, zuletzt von nuts (1. September 2009 um 16:46)

  • Hallo,
    mit

    [autoit]

    _filereadtoarray()

    [/autoit]

    liest du die einzelnen Zeilen deiner Datei in ein "Array"(Datenfeld). In diesem Array ist jede Zeile deiner Datei mit einer Indexnummer anzusprechen. Also Array[1]="Name1", Array[2]="Name2" , Array[3]="Name3"usw
    Dann kannst du mit

    [autoit]

    random()

    [/autoit]

    eine Zahl zwischen 1 und der Anzahl der Zeilen (steht in Array[0]^^) bestimmen und zum Beispiel der Variablen $randomzahl zuweisen.

    [autoit]

    $ersteswort=$Array[$randomzahl]

    [/autoit]

    ist das erste Wort. So machst du es mit den anderen Dateien auch.
    Zum guten Schluß würde ich den "Satz" in einer

    [autoit]

    Msgbox()

    [/autoit]

    ausgeben
    Wenn du auf die AutoIt-Befehle (blaue Schrift) im Browser klickst, öffnet sich die Hilfe....
    ciao
    Andy

  • in der textbox wird jtz garnix angezeigt xD

  • Also ich würde das dann nicht mit vielen TXT-Dateien machen sondern mit einer INI
    Ich hab dir mal ein beispiel gemacht:

    Script
    [autoit]

    $Ini = @ScriptDir & "\Dreck.ini"
    $Sections = IniReadSectionNames ($Ini)
    $Text = ""
    For $1 = 1 To $Sections[0]
    $Read = IniReadSection ($Ini,$Sections[$1])
    $Text &= " " & $Read[Random (1,$Read[0][0])][1]
    Next
    MsgBox (0,"",$Text)

    [/autoit]
    Die INI mit dem Namen Dreck

    mfg. Jam00

  • Hi,
    hier mal beispiel für eine Datei

    [autoit]

    #include <File.au3> ;die Bibliothek für den _filereadtoarray()-Befehl einfügen
    Dim $array ; das Array dimensionieren
    _filereadtoarray("Test1.txt",$array) ; Daten aus der Textdatei in ein Array einlesen
    $random=random(1,$array[0],1) ; eine Zufallszahl erzeugen
    msgbox(0,0,$array[$random]); den "zufälligen" Arrayinhalt darstellen

    [/autoit]

    ciao
    Andy


    "Schlechtes Benehmen halten die Leute doch nur deswegen für eine Art Vorrecht, weil keiner ihnen aufs Maul haut." Klaus Kinski
    "Hint: Write comments after each line. So you can (better) see what your program does and what it not does. And we can see what you're thinking what your program does and we can point to the missunderstandings." A-Jay

    Wie man Fragen richtig stellt... Tutorial: Wie man Script-Fehler findet und beseitigt...X-Y-Problem

    2 Mal editiert, zuletzt von Andy (1. September 2009 um 16:52)

  • Stiimt, machs einfach so

    Spoiler anzeigen
    [autoit]

    $Ini = @ScriptDir & "\Dreck.ini"
    $Sections = IniReadSectionNames ($Ini)
    $Text = ""
    For $1 = 1 To $Sections[0]
    $Read = IniReadSection ($Ini,$Sections[$1])
    $Text &= " " & $Read[Random (1,$Read[0][0] +1)][1]
    Next
    MsgBox (0,"",$Text)

    [/autoit]

    mfg. Jam00