[Frage]FileOpen In Zeile 1 springen

02/28/2011 22:16 ThornWithin#1
Guten Abend.

Ich habe folgendes Problem:
Für mein Projekt muss ich alle Dateien mit Size vom Mainfolder, von den Lower Foldern und den Loweren Foldern in eine .txt schreiben ...
Die Algorithmen dafür hab ich alle geschrieben und funzt alles makellos, nur gibt es einen kleinen Schönheitsfehler, den ich gerne behoben hätte:
Als erstes sollen die Ordner abgefragt werden + Size, damit ich aber die Size bekomme, muss ich erstmal alle Files abfragen ...
Und es wäre ja unnötig, diese dann nicht direkt in die Datei zu schreiben ...
Der Schönheitsfehler ist, dass die Abfrage erst jedes mal quer durch die Datei suchen müsste, bis sie die gekennzeichneten Ordner findet.
Deswegen hätte ich die Frage, ob ich bei dem geöffneten File zum Schreiben wieder in die erste Zeile springen könnte ...
Würde ich vorher eine rekursive Funktion einbauen, die erstmal die Ordnersizes rauskriqqt, würde das nämlich wieder auf Kosten der Performance gehen und Algorithmen sind ja so schon bekanntermaßen nicht die Schnellsten Verfahren.
Bitte um Antwort ( vielleicht fällt euch eine viel Bessere Methode ein, die ich nicht bedacht habe ) und Vielen Danke im Vorraus,

MfG

(KekZ -> ThornWithin)
03/01/2011 08:11 .2good4you111#2
Soviel ich mitkriege willst du immer oben statt am Ende der Datei schreiben?

Versuchs mal mit FileWriteLine()
(KP obs geht -- gerade dabei AutoIt zu verlernen ;))
03/02/2011 16:38 ThornWithin#3
neh FileWriteLine war natürlich für mich die naheliegendste Lösung ...
Leider wird dies mit FileReadLine verwechselt, denn im Ggsatz zu FileReadLine, schreibt FileWriteLine einfach "Text"+@CRLF ans Ende der Datei ;D
03/02/2011 16:41 derpo#4
Nimm doch .ini!
Das ist viel einfacher, weil man da mit IniRead Sachen, die man mit IniWrite geschrieben hat einfach lesen kann.
03/02/2011 17:33 lolkop#5
denn schreib dir halt selbst ne FileWriteFirstLine funktion o0

man könnte es zb einfach so machen:
PHP Code:
Func FileWriteFirstLine($file$line)
    
Local $content FileRead($file)
    
Local $fileHwnd FileOpen($file2)
    
FileWrite($fileHwnd$line & @CRLF $content)
    
FileClose($fileHwnd)
EndFunc 
03/03/2011 11:06 ThornWithin#6
Code:
Func FileWriteFirstLine($file, $line)
    Local $content = FileRead($file)
    Local $fileHwnd = FileOpen($file, 2)
    FileWrite($fileHwnd, $line & @CRLF & $content)
    FileClose($fileHwnd)
EndFunc
Nein durch fileOpen gelangt man automatisch ans ende des Files

und zum thema ini ...
die algorithmen, die ich entwickeln musste, passen nieeemals mit ini zusammen, da man bei der ini immer den key wissen muss (im ggsatz zu fileRead/Write)
und genau den will ich ja rausfinden ;D

außerdem müsste ich wenn überhaupt das gesamte programm umschreiben und das is ja auch keine lösung ..
03/03/2011 16:04 lolkop#7
hast du überhaupt eine ahnung wie funktionale programmierung im allgemeinen funktioniert?

fileopen springt überhaupt nirgendwo hin. es gibt lediglich ein handle einer datei zurück.

benutzen wir nun als parameter bei fileopen die 2, wird quasi eine vollkommen leere datei mit den name erzeugt, in die wir schreiben.

da wir vorher den kompletten inhalt von deiner datei mit fileread eingelesen und in content gespeichert haben, können wir diesen nun in die per fileopen geöffnete leere datei direkt eine zeile hinter die einzufügende schreben...

anstatt zu schreiben geht nich, könntest du wenigstens testen was man dir als hilfe anbietet..
03/03/2011 16:55 ThornWithin#8
hast du überhaupt eine ahnung wie funktionale programmierung im allgemeinen funktioniert?

Ehm? o_O
ich hab nichts gegen deine tolle Funktion gesagt, ich hab nur etwas dagegen gesagt, dass das funktioniert...
das Problem ist, dass FileOpen ne leere Datei macht, genau wie du sagtest...
Aber ich hab in der Datei schon alle Files stehen, d.h. ich hätte da dann die Ordner drin, die Files aber nicht.
Ich habs jetzt umgeschrieben, jetzt macht der einfach ne neue Datei, in die er die Folder reinschreibt =)

anstatt zu schreiben geht nich, könntest du wenigstens testen was man dir als hilfe anbietet..

solche Kommentare kann man sich meiner Meinung nach sparen, da ich sowas nicht schreibe, bevor ich mir nciht ganz sicher bin/es getestet habe.

Danke für die Hilfe, hab jetzt alles geschrieben und kann jetzt mein Projekt weiterentwickeln.

~edit Thema-name [Gelöst]
03/03/2011 18:57 lolkop#9
also...
angenommen du hast ne datei in der steht zb sowas:
Code:
blah
bleh
blubb
blih
bloh
angenommen die datei heist 'meinedatei.txt'

und du möchtest nun in die erste zeile von 'meinedatei.txt' ganz oben über alles andere 'neue zeile 1' schreiben...

dann nutzt du die von mir gepostete funktion mit
Code:
FileWriteFirstLine('meinedatei.txt', 'neue zeile 1')
sobald der befehl ausgeführt wurde, steht in der datei nun
Code:
neue zeile 1
blah
bleh
blubb
blih
bloh
falls ich deine frage falsch verstanden habe sry, aber meiner meinung nach ist das genau das was du gesucht hattest.
03/03/2011 19:41 ThornWithin#10
omg ... sry hab das FileRead vollkommen übersehen :)

klar warum bin ich nich früher drauf gekommen *noobfehler*
danke dir ;)