[Frage]AutoIt auslesen

06/01/2010 17:27 henpii#1
moin moin,

ich bin momentan dabei n AutoIt script zu erstellen.
In diesem Script muss etwas aus einer txt datei ausgelesen werden.
(kann auch varriereren)
Jetzt habe ich 2 Probleme:
1. Es sollen die Angaben immer Zeielweise ausgelsesen werden.
Also als erstes das was in der ersten Zeile steht, damit dann was machen,
dann die nächste Zeile.
Bei einer TXT Datei funktioniert die Formatierung bei mir nicht, d.h. sie spring immer zurück, und alles wird in die erste Zeile geschrieben
(Weil ich sie immer runterladen will)
2.
Wie bekomme ich es hin dass die Zeilen nacheindander ausgelesen werden?
(so wie oben beschrieben)

das momentane Script sieht so aus:
Code:
#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>
#include <GUIConstants.au3>
#include <ButtonConstants.au3>
#include <StaticConstants.au3>
#include <GUIListBox.au3>
#include <GuiEdit.au3>
#include <IE.au3>
#Include <File.au3>

$ip = "patch.gameroffantasy.de"
$FILE = @TempDir & "/patchlist.ini"

FileRead($FILE)
$lines = _FileCountLines( $FILE )
    If $lines = 0 Then
        MsgBox(48,"Fehler",$lines)
    EndIf
$datei = FileReadLine($FILE,$lines)

$hWindow = GUICreate("World of Cerberus patcher", 402, 42)
$pProgress = GUICtrlCreateProgress(8, 8, 377, 25)
$pLabel_Fortschritt = GUICtrlCreateLabel("0 %", 192, 16, 36, 17)
GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
GUISetState(@SW_SHOW)
_Dl("http://"&$IP&"/pack/"&$datei)
Func _Dl($sFunc_URL = "")
    Local $hDownload = InetGet($sFunc_URL, @ScriptDir & "\" & $datei , 1, 1)
	    $hDateiGroese = InetGetSize($sFunc_URL)
	Do
        Sleep(100)
        GUICtrlSetData($pProgress,(InetGetInfo($hDownload, 0)/$hDateiGroese)*100)
        GUICtrlSetData($pLabel_Fortschritt,Round((InetGetInfo($hDownload, 0)/$hDateiGroese)*100,1) & " %")
    Until InetGetInfo($hDownload, 2)
    MsgBox(1,"","Download abgeschlossen!")
    GUICtrlSetData($pLabel_Fortschritt,"100 %")
    InetClose($hDownload)
	exit
endfunc
Das ganze wird wenn es fertig ist ein patcher.

Thx im Vorraus

LG

Henpi

ps: habe es jetzt mal mit ner Ini ausprobiert, die Formatierung (Zeilenumbrüche) sind jetzt immer da, nur das Zählen der Zeilen und das runterladen der einzelnen Dateien funktioniert auch nicht, weil ads auslesen der Ini nicht richtig abläuft
06/01/2010 17:30 Frezee#2
AutoIT Section...
06/01/2010 17:33 henpii#3
sry ;)
hab die übersehen

#pls deleten / closen
06/01/2010 17:39 HardCore.1337#4
Du musst keinen neuen Thread deswegen extra erstellen. Das verschiebt einfach ein Mod und gut ist.
06/01/2010 19:00 unknown661#5
so weit ich das seh verwendest du FileReadLine falsch. du liest immer die gleiche zeilennummer ein.

schau mal in der doc von autoIt nach [Only registered and activated users can see links. Click Here To Register...] hier ist auch ein beispiel wie du bis eof liest
06/02/2010 12:56 Cholik#6
#moved
06/02/2010 14:06 .nAno#7
PHP Code:
#include <File.au3>

$path InputBox """Dateipfad", @ScriptDir "\testfile.txt" )

For 
$a=1 To _FileCountLines $path )

    
$line FileReadLine $path$a )

    
_tuIrgendwas()

Next

Func _tuIrgendwas
()
    
MsgBox 0""$line )
EndFunc 
Das liest z.B. jede Zeile eines Textdokumentes aus und gibt sie in diesem Fall durch eine MsgBox aus ;)

Dein 1. Problem verstehe ich nicht so ganz, erklär das bitte mal genauer :P
06/03/2010 11:51 henpii#8
ok, das mit dem auslesen habe ich jetzt auch so geschafft, aber trotzdem danke ;)

der code sieht momentan so aus:

Code:
#include <File.au3>
#include <GUIConstantsEx.au3>
#include <ProgressConstants.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>
#include <GUIConstants.au3>
#include <ButtonConstants.au3>
#include <StaticConstants.au3>
#include <GUIListBox.au3>
#include <GuiEdit.au3>
#include <IE.au3>
#Include <File.au3>

Global $IP = "patch.gameroffantasy.de"
Global $File = @TempDir & "/patchlist.txt"

Dim $aTextlines

_FileReadToArray("patchlist.txt",$aTextlines)

for $i = 1 to UBound($aTextlines)-1
MsgBox(0,"",$aTextlines[$i])
Global $Datei = $aTextlines[$i]
start()
next

Func start()
	Global $hWindow = GUICreate("World of Cerberus patcher", 402, 42)
	Global $pProgress = GUICtrlCreateProgress(8, 8, 377, 25)
	Global $pLabel_Fortschritt = GUICtrlCreateLabel("0 %", 192, 16, 36, 17)
	GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
	GUISetState(@SW_SHOW)
	_Download("http://" & $IP & "/pack" & $Datei)
EndFunc	

Func _Download($sFunc_URL = "")
		Local $hDownload = InetGet($sFunc_URL, @ScriptDir & "\" & $Datei, 1, 1)
			$hDateiGroese = InetGetSize($sFunc_URL)
		Do
			Sleep(100)
			GUICtrlSetData($pProgress,(InetGetInfo($hDownload, 0)/$hDateiGroese)*100)
			GUICtrlSetData($pLabel_Fortschritt,Round((InetGetInfo($hDownload, 0)/$hDateiGroese)*100,1) & " %")
		Until InetGetInfo($hDownload, 2)
		MsgBox(1,"","Download abgeschlossen!")
		GUICtrlSetData($pLabel_Fortschritt,"100 %")
		InetClose($hDownload)
EndFunc
Das ganze soll dann so aussehen wenn es funktionieren würde:

1. patchlist.txt erste Zeile auslesen
2. Die Zeile in einer msgBox ausgeben
3. Downloadbalken kreieren
4. Diese Datei downloaden
5. zweite Zeile auslesen
6. siehe pkt. 2
usw...


Das problem ist nur dass der Downloadbaken generiert wird, die Datei aber nicht gedownloadet wird...

wenne s fertig ist soll es ein Patcher werden..
warum ich nicht die vorgefertigten nehme?
ganz einfach, ich mache die meisten sachen selber..
Microsoft hat ihr Betriebssystem ja auch nicht von irgentwem genommen...

LG

Henpii

danke im Vorraus

€: habe mal die Größe von der DL datei ausgeben lassen:
0 ...
=> die Datei wird nicht auf dem Server gefunden, bin schon auf der Suche nach der Lösung.



€: ES LÄUUUFTTTTTTT =)

Problem war:
die Dateien lagen auf dem Server in dem order /pack/test.py
gedownloadet werden sollte aber /packtext.py

THX @ All

Lg

Henpi