FileType fehlerhaft?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

juse4pro

Betreff: FileType fehlerhaft?

BeitragSo, Jun 07, 2009 16:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Moin,

Wenn ich FileType in Verbindung mit NextFile verwende, kommt es zu merkwürdigen Sachen:

Ich möchte mir ein Packer baun, welcher mir ein ganzen Ordner in eine Datein packt, inklusive Unterordner und Datein, und so weiter

Nur hört mein Programm zu früh auf, FileType meint, die Datei bla.txt (mit NextFile gefunden) existiert nicht, und liefert eine 0 zurück.

Ich komm grad nicht weiter

Hier mal ganzer Code:
BlitzBasic: [AUSKLAPPEN]

Print "Starting Pack-Tool..."

Global P$=Input("source directory: ")
Global TargetName$ = Input("packname: ")
TargetName$ = TargetName$ + ".rp"
Global TargetStream = WriteFile(TargetName$)
Global Time=MilliSecs()
Pack(P$)
Print (MilliSecs()-Time)+" ms needed"



Function Pack(DirPath$)
Local RootDir = ReadDir(DirPath$)

If RootDir = 0
Print "Verzeichnis existiert nicht!"
Return
EndIf
CloseDir(RootDir)

PackDir(DirPath$)
End Function



Function PackFile(Path$)
Print
Print "PACKFILE("+Path$+")"
Print "packing: "+Path$
Local File=ReadFile(Path$)
Local Count=0
Repeat
If Not Eof(File)
ReadByte(File)
Count=Count+1
Else
Exit
EndIf
Forever
Print "bytes counted: "+Count
WriteByte(TargetStream,1)
WriteInt(TargetStream,Count)
CloseFile(File)
File=ReadFile(Path$)
Local Count2=0
Repeat
If Count2<=Count
Count2=Count2+1
Local byte=ReadByte(File)
WriteByte(TargetStream,byte)
Else
Exit
EndIf
Forever
Print "bytes written: "+Count2
CloseFile(File)
End Function



Function PackDir(Path$)
Print
Print "PACKDIR("+Path$+")"
Local Dir=ReadDir(Path$)
NextFile(Dir):NextFile(Dir)
WriteByte(TargetStream,2)
WriteString(TargetStream,Path$)
Repeat
Print
Local CurrentFile$ = NextFile(Dir)
Local Typ = FileType(CurrentFile$)
Print "found: "+CurrentFile$
If CurrentFile = ""
Print "EXIT"
Print
Exit
EndIf

If Typ = 1
Print "file detected..."
PackFile(CurrentFile$)
ElseIf Typ = 2
Print "directory detected..."
PackDir(CurrentFile$)
ElseIf Typ = 0
Print "WTF, TYP 0?"
Else
Print "UNKNOWN ERROR!"
EndIf
Forever
CloseDir(Dir)
End Function


Hoffe, mir kann jemand helfen Wink
Portfolio |LinkedIn |XING

Xaymar

ehemals "Cgamer"

BeitragSo, Jun 07, 2009 16:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Das mit bytes counted kannst du durch filesize ersetzen. dein fehler tritt bei mir leider nicht auf Sad
Warbseite

juse4pro

BeitragSo, Jun 07, 2009 16:32
Antworten mit Zitat
Benutzer-Profile anzeigen
WFT?

Hmm... ok aber Danke erstmal für das mit dem FileSize Wink


EDIT:
ok, ich hab das problem:
FileType verlangt den Parameter: Pfad zur Datei

ich hab nur den Datei namen angegeben Wink
ohne den root-dir mit anzuhängen
Portfolio |LinkedIn |XING
 

aletes

BeitragSo, Jun 07, 2009 21:05
Antworten mit Zitat
Benutzer-Profile anzeigen
hmm sieht eigentlich ganz gut aus(abgesehen davon, das die gepackte datei größer ist als die vorherge) Wink

sieht aber ganz brauchbar aus Very Happy
allerdings ist bei mir kein fehler aufgetreten, ich musste auch keinen pfadnamen angeben...

juse4pro

BeitragMo, Jun 08, 2009 15:48
Antworten mit Zitat
Benutzer-Profile anzeigen
jo, hab das packtformat jetzt vollendet und es funktioniert super, habe bereits ein spiel von mir verpackt (in meinem RP format) hochgeladen, woanders wider runtergeladen und entpackt, und es funktioniert Wink
Portfolio |LinkedIn |XING
 

n-Halbleiter

BeitragMo, Jun 08, 2009 16:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du das jetzt noch komprimieren würdest, wäre das perfekt. Wink
mfg, Calvin
Maschine: Intel Core2 Duo E6750, 4GB DDR2-Ram, ATI Radeon HD4850, Win 7 x64 und Ubuntu 12.04 64-Bit
Ploing!
Blog

"Die Seele einer jeden Ordnung ist ein großer Papierkorb." - Kurt Tucholsky (09.01.1890 - 21.12.1935)

juse4pro

BeitragMo, Jun 08, 2009 16:10
Antworten mit Zitat
Benutzer-Profile anzeigen
denk mal schon wenn bytes doppelt sind, aber ich weiss noch nicht wie...
Portfolio |LinkedIn |XING
 

n-Halbleiter

BeitragMo, Jun 08, 2009 16:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Zum Beispiel mit der Shannon-Fano-Kodierung... Ich weiß nur nicht, inwieweit sie sich mit BB umsetzen lässt... Wobei sich byteweises Arbeiten ja realisieren lässt, dürfte also (zumindest auf ein paar Umwegen) machbar sein.

Und die Wahrscheinlichkeit, dass bei einigen hundert Bytes mal ein- oder zwei doppelt sind, liegt ja bekanntlich recht hoch, bei 256 Möglichkeiten. Wink

Eingeproggt

BeitragMo, Jun 08, 2009 17:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab dafür im Codearchiv mal ne Umsetzung gepostet (Huffman-Code).
Nachteil: Sie ist saulangsam und für typische BB-Dateien ziemlich unbrauchbar (png ist schon vorkomprimiert, EXE ist recht groß und würde sehr lange brauchen)
--> https://www.blitzforum.de/foru...ht=huffman

Andernfalls kannst du noch nach "blitz zip api" suchen, da gibts ne DLL die das *.zip-Format unterstützt.

mfG, Christoph.
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group