 |
| |
|
|
 |
Autor |
Nachricht |
 |
| |
| xSkaschY |
#1| Verfasst am: 02.07.2008, 07:01 Titel: Datei Header und Struktur? |
 |
 |
 |
|
aktives Mitglied Alter: 21 Status: offline Beiträge: 78 angemeldet: 19.06.2006 Wohnort: Bünde RAD-Studio 2007 Professional

|
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 Informationen die ich dafür brauche, ich weiss aber nicht wie ich die richtig anwende.
Wie sage ich meinem Programm nun das er die Datei mit den o.g. Daten öffnet?
Grüße
Toby |
Zuletzt bearbeitet von xSkaschY am 02.07.2008, 20:04, insgesamt 1-mal bearbeitet. |
 |
|
|
|
| |
| xSkaschY |
#2| Verfasst am: 02.07.2008, 19:10 Titel: Re: Datei Header und Struktur? |
 |
 |
 |
|
aktives Mitglied Alter: 21 Status: offline Beiträge: 78 angemeldet: 19.06.2006 Wohnort: Bünde RAD-Studio 2007 Professional

|
Sooo,
hab mal etwas gegoogelt und bin nun soweit gekommen:
Delphi-Quellcode: | zusammenfalten | markieren | 1 · · · 5 · · · · 10 · · · · 15 · · · · 20 · · · · 25 · · 28
| 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) + '<br />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; |
|
Die Ausgabe stimmt genau mit der Datei überein, jedoch wenn ich nach
das hier hinzufüge;
zeigt er mir "0" an. eine weitere Ausgabe von sBuffer sagt mir das diese Variable leer ist, warum ist dem so?
LG Toby |
Zuletzt bearbeitet von xSkaschY am 02.07.2008, 19:13, insgesamt 5-mal bearbeitet. |
 |
|
|
|
| |
| shmia |
#3| Verfasst am: 02.07.2008, 19:38 Titel: Re: Datei Header und Struktur? |
 |
 |
 |
|
Mitglied Status: offline Beiträge: 3.965 angemeldet: 02.03.2004 Delphi 5 Professional

|
| Delphi-Quellcode: | markieren | 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 |
|
sieht komisch aus, ist aber so
Die Verwendung von ReadBuffer anstelle von Read erspart dir das Prüfen, ob auch alle Bytes gelesen wurden |
|
 |
|
|
|
| |
| xSkaschY |
#4| Verfasst am: 02.07.2008, 20:03 Titel: Re: Datei Header und Struktur? |
 |
 |
 |
|
aktives Mitglied Alter: 21 Status: offline Beiträge: 78 angemeldet: 19.06.2006 Wohnort: Bünde RAD-Studio 2007 Professional

|
| shmia hat folgendes geschrieben: |
Die Verwendung von ReadBuffer anstelle von Read erspart dir das Prüfen, ob auch alle Bytes gelesen wurden |
Dann bekomme ich ein "Stream-Lesefehler" an den Kopf geworfen.
Mein Code at the moment:
Delphi-Quellcode: | zusammenfalten | markieren | 1 · · · 5 · · · · 10 · · · · 15 · · · · 20 · 22
| 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) + '<br />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><br /><br />Filecontent:<br />';
sContent := sContent + '<code>' + sBuffer + '</code>';
finally
Result := sContent;
rPBOFile.Free;
end;
end; |
|
Streams können echt nervig sein. |
|
 |
|
|
|
 |
|
 |
| |
|
|
| |
 
|
|
| |
|
Du darfst keine Beiträge in dieses Forum schreiben. Du darfst auf Beiträge in diesem Forum nicht antworten. Du darfst Deine Beiträge in diesem Forum nicht bearbeiten. Du darfst Deine Beiträge in diesem Forum nicht löschen. Du darfst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum nicht posten. Du kannst Dateien in diesem Forum nicht herunterladen.
|
|
 |