[Frage]auslesen mit Autoit

06/01/2010 17:34 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 22:42 kknb#2
du kannst mit filereadline nur EINE zeile einlesen sprich wenn du mit filecountlines was weiß ich 150 zeilen zählst und danach $datei = FileReadLine($FILE,$lines) aufrufst wird der dir immer nur die letzte zeile deiner datei einlesen.

ich weiß nicht genau was du machen möchtest, aber deine textdatei kannst du ganz simpel so zeilenweise einlesen:

Code:
$lines = _FileCountLines($FILE)
For $i = 1 To $lines
	$aktuellezeile = FileReadLine($FILE, $i)
Next
nach dem einlesen kannst du dann mit der jeweiligen zeile weiterarbeiten wie du willst.
06/02/2010 01:40 henpii#3
Also:
ich möchte einen Patcher erstellen.
Der erste teil besteht dadrinne die pathlist.ini down zu loaden.
dannach soll diese datei ausgelesen werden und zeile für zeile ausgelesen werden.

z.b.:

in der ersten zeile steht:

Code:
player.py
von dieser Datei soll dann die größe gesucht werden, und mit der localen Datei vergleichen. Wenn die locale datei eine andere größe hat, soll die Serverdatei runtergeladen werden.

Dannach soll die zweite Zeile ausgelesen werden, und diese datei dann wieder verglichen werden, und dann wieder downloaden wenn es eine andere Größe ist.

so besser verständlich?

und danke erstma =)

Lg

Henpi

ps: ein weiteres Problem habe ich auch:
ich habe nach dem Befehl zum Zählen der Zeilen mal ne msgbox erstellt die dann die anzahl der Zeilen ausgeben soll.
Dort steht immer 0 drinne... in der *.ini steht aber definitiv was drinne.
06/02/2010 11:39 Shadow992#4
Quote:
Originally Posted by henpii View Post
Also:
ich möchte einen Patcher erstellen.
Der erste teil besteht dadrinne die pathlist.ini down zu loaden.
dannach soll diese datei ausgelesen werden und zeile für zeile ausgelesen werden.

z.b.:

in der ersten zeile steht:

Code:
player.py
von dieser Datei soll dann die größe gesucht werden, und mit der localen Datei vergleichen. Wenn die locale datei eine andere größe hat, soll die Serverdatei runtergeladen werden.

Dannach soll die zweite Zeile ausgelesen werden, und diese datei dann wieder verglichen werden, und dann wieder downloaden wenn es eine andere Größe ist.

so besser verständlich?

und danke erstma =)

Lg

Henpi

ps: ein weiteres Problem habe ich auch:
ich habe nach dem Befehl zum Zählen der Zeilen mal ne msgbox erstellt die dann die anzahl der Zeilen ausgeben soll.
Dort steht immer 0 drinne... in der *.ini steht aber definitiv was drinne.
Ich weiß nicht wieso aber AutoIt ist da sehr eigen wenns ums auslesen von Dateien geht , am besten du bennenst die Datei von anfang an in .txt um oder du lässt sie von AutoIt umbennen und machst wennste fertig bist das ganze wieder Rückgängig .

Und zu deinem anderem Problem , denk doch mal nach wie Zeilen festgelegt sind , was sind Absätze denn eigentlich ?
Meistens @CRLF manchmal auch @CR (AutoIt Macros) .
Da hätte ich einfach die Idee die ganze Datei auslesen zu lassen und dann das Ausgelesene per StringSplit zu splitten . Dann haste ein schönes Array und kannst wenns nötig ist es auch später nocheinmal verwenden , dann haste auch kein Problem , dass du wissen musst wie groß die Datei ist ...
06/03/2010 11:52 henpii#5
Fortsetzung: [Only registered and activated users can see links. Click Here To Register...]

LG


henpi