![]() |
Datei Header und Struktur?
Hallo zusammen,
ich wollte mal wieder ein wenig mit Delphi rum experimentieren, und mir mal die *.pbo-Dateien von meinem Spiel angeschaut. (Sind gepackte Dateien wie zip/rar) Dabei wollte ich mir ein Programm schreiben, welches mir den Inhalt dieser Datei anzeigt. Habe auch, glaube ich zumindestens, alle benötigten ![]() Wie sage ich meinem Programm nun das er die Datei mit den o.g. Daten öffnet? Grüße Toby |
Re: Datei Header und Struktur?
Sooo,
hab mal etwas gegoogelt und bin nun soweit gekommen:
Delphi-Quellcode:
Die Ausgabe stimmt genau mit der Datei überein, jedoch wenn ich nach
function readFile(pFilename: PChar): PChar; stdcall;
var rPBOFile: TFileStream; iFilesize: Integer; sContent, sBuffer: String; liLen: longInt; begin rPBOFile := TFileStream.Create(pFilename, fmOpenRead); try iFilesize := rPBOFile.Seek(0, 2); sContent := ExtractFileName(pFilename) + ' Filesize: ' + formatFilesize(iFilesize, true) + ' - Files in PBO: 0'; sContent := sContent + '<hr />'; rPBOFile.Read(liLen, iFileSize); SetLength(sBuffer, liLen); rPBOFile.Seek(0, 0); rPBOFile.Read(sBuffer, Length(sBuffer)); sContent := sContent + 'Buffer:<code>' + sBuffer + '</code>'; sContent := sContent + '<hr />'; finally rPBOFile.Free; Result := PChar(sContent); end; end;
Delphi-Quellcode:
das hier hinzufüge;
sContent := sContent + 'Buffer:<code>' + sBuffer + '</code>';
Delphi-Quellcode:
zeigt er mir "0" an. eine weitere Ausgabe von sBuffer sagt mir das diese Variable leer ist, warum ist dem so?
sContent := sContent + 'First match: ' + IntToStr(Pos(Chr(0), sBuffer)) + '
'; LG Toby |
Re: Datei Header und Struktur?
Delphi-Quellcode:
sieht komisch aus, ist aber so ;-)
rPBOFile.Read(sBuffer, Length(sBuffer)); // Falsch
// sBuffer ist ein AnsiString // das ist fast das Gleiche wie ein array of char // Deshalb muss man das 1. Element der Read() bzw. ReadBuffer() Methode übergeben rPBOFile.ReadBuffer(sBuffer[1], Length(sBuffer)); // Richtig Die Verwendung von ReadBuffer anstelle von Read erspart dir das Prüfen, ob auch alle Bytes gelesen wurden |
Re: Datei Header und Struktur?
Zitat:
Dann bekomme ich ein "Stream-Lesefehler" an den Kopf geworfen. Mein Code at the moment:
Delphi-Quellcode:
Streams können echt nervig sein. :)
function readFile(sFilename: String): String;
var rPBOFile: TFileStream; sContent, sBuffer: String; iFileSize: Integer; begin rPBOFile := TFileStream.Create(sFilename, fmOpenRead or fmShareDenyWrite); try iFileSize := rPBOFile.Size; { sContent := ExtractFileName(sFilename) + ' Filesize: ' + formatFilesize(iFileSize, true) + ' - Files in PBO: 0'; sContent := sContent + '<hr />'; } rPBOFile.ReadBuffer(sBuffer[1], iFileSize); //sContent := sContent + 'First match: [b]' + IntToStr(Pos(Chr(0), sBuffer)) + '[/b] Filecontent: '; sContent := sContent + '<code>' + sBuffer + '</code>'; finally Result := sContent; rPBOFile.Free; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz