Hallo Leute,
ich habe folgendes Problem. Ich möchte aus einer txt-Datei die Einträge in inputboxen zufällig ausgeben. An sich nicht problematisch, allerdings sind es sieben inputboxen und nur vier Einträge in der Datei. Diese sollen aber in alle sieben inputboxen einfügbar sein, was bei mir nur funktioniert wenn ich die acht (verschiedene) Einträge in der Datei mache.
(z.B. new.txt mit den Einträgen)
Gast 1
Gast 2
Gast 3
Gast 4
5
6
7
8
und hier mein Beispiel-Quellcode:
Spoiler anzeigen
#include <GuiButton.au3>
#include <EditConstants.au3>
#include <GUIConstants.au3>
#include <File.au3>
Global $Form1 = GUICreate('Test', 440, 220,-1,-1)
[/autoit] [autoit][/autoit] [autoit]Global $button = GUICtrlCreateButton('',400,0,40,40,$BS_ICON)
_GUICtrlButton_SetImage(-1, "shell32.dll", 135, True)
Global $edit1 = GUICtrlCreateInput('',115,20,60,18,$ES_CENTER)
Global $edit2 = GUICtrlCreateInput('',175,20,60,18,$ES_CENTER)
Global $edit3 = GUICtrlCreateInput('',115,40,60,18,$ES_CENTER)
Global $edit4 = GUICtrlCreateInput('',175,40,60,18,$ES_CENTER)
Global $edit5 = GUICtrlCreateInput('',115,60,60,18,$ES_CENTER)
Global $edit6 = GUICtrlCreateInput('',175,60,60,18,$ES_CENTER)
Global $edit7 = GUICtrlCreateInput('',115,80,60,18,$ES_CENTER)
GUICtrlCreateLabel('Tisch 1:',15,22)
GUICtrlCreateLabel('Tisch 2:',15,42)
GUICtrlCreateLabel('Tisch 3:',15,62)
GUICtrlCreateLabel('Tisch 4:',15,82)
GUISetState()
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
_END()
Case $button
_read()
EndSwitch
[/autoit] [autoit][/autoit] [autoit]WEnd
[/autoit] [autoit][/autoit] [autoit]Func _read()
if FileExists("new.txt") Then
FileCopy("new.txt",@TempDir&"\db.tmp",1)
For $i = 0 To 6
Local $file=FileOpen(@TempDir&"\db.tmp",0)
Local $txt = @TempDir&"\db.tmp"
Local $iLines = _FileCountLines($txt)
Local $iNumber = Random(1,$iLines)
Local $key = FileReadLine($txt, $iNumber)
GUICtrlSetData($edit1+$i, $key)
Local $sRepl = $key&@crlf
Local $sText = FileRead($file)
Local $sNewText = StringReplace($sText, $sRepl,"")
FileClose($file)
FileDelete(@TempDir&'\db.tmp')
FileWrite(@TempDir&'\db.tmp', $sNewText)
Next
EndIf
EndFunc
Func _END()
FileDelete(@TempDir&'\db.tmp')
Exit
EndFunc
Vielleicht habt ihr eine Idee, was ich verbessern kann.
Gruß Gremlin
Edit Oscar: Bitte bei längeren Quelltexten zusätzlich zu dem AutoIt-Tag auch den Spoiler-Tag verwenden. Habe ich jetzt hier mal eingefügt.