Delphi-PRAXiS :: Das Forum für Fragen zu Delphi
Das Experten Forum für Delphi Programmierer
Hilfe für Borland Delphi gibts es hier im Forum
Delphi Quelltexte und Source Codes
 
Delphi-PRAXiS :: Foren-ÜbersichtForen-Übersicht Delphi-PRAXiS Modul-ÜbersichtSite-Map Delphi-PRAXiS durchsuchenSuchen Delphi-PRAXiS Code-LibraryCode-Library Jetzt registrieren!Registrieren Login  
   
 
0
 
Datei Header und Struktur?
Ein Thema von xSkaschY.

Vorheriges Thema anzeigen  |  Nächstes Thema anzeigen
Neuen Beitrag schreiben Auf Beitrag antworten
als PDF-Datei herunterladenThema ausdrucken
 Offene Frage von xSkaschY.
Delphi-PRAXiS Forum - Übersicht -> Programmieren allgemein
Seite 1 von 1   [ 4 Beiträge ]  
 
 Autor 
 Nachricht 
 
xSkaschY #1|Beitrag #911216Verfasst am: 02.07.2008, 07:01      Titel: Datei Header und Struktur? Antworten mit Zitat
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.
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
xSkaschY #2|Beitrag #911510Verfasst am: 02.07.2008, 19:10      Titel: Re: Datei Header und Struktur? Antworten mit Zitat
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
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
Delphi-Quellcode: markieren
sContent := sContent + 'Buffer:<code>' + sBuffer + '</code>';


das hier hinzufüge;

Delphi-Quellcode: markieren
sContent := sContent + 'First match: ' + IntToStr(Pos(Chr(0), sBuffer)) + '<br />';


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.
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
shmia #3|Beitrag #911521Verfasst am: 02.07.2008, 19:38      Titel: Re: Datei Header und Struktur? Antworten mit Zitat
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 Wink
Die Verwendung von ReadBuffer anstelle von Read erspart dir das Prüfen, ob auch alle Bytes gelesen wurden
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
 
xSkaschY #4|Beitrag #911530Verfasst am: 02.07.2008, 20:03      Titel: Re: Datei Header und Struktur? Antworten mit Zitat
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
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. Smile
nach oben nach unten
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen im Forum zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Google zu suchen. Markiere Begriffe im Text und klicke auf diesen Button, um nach zusätzlichen Informationen bei Wikipedia zu suchen.
 
Anzeige-Optionen:    
 
Delphi-PRAXiS Forum - Übersicht -> Programmieren allgemein Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1   [ 4 Beiträge ]  
 
  Neuen Beitrag schreiben Auf Beitrag antworten
als PDF-Datei herunterladenThema ausdrucken
 
   
Gehe zu:  
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.


Impressum / Kontakt
Allgemeine Geschäftsbedingungen
Verhaltenskodex & FAQ

Delphi-PRAXiS :: Das Forum für Delphi-Programmierer
Das Experten Forum für Delphi ProgrammiererHilfe für Borland Delphi gibts es hier im ForumDelphi Quelltexte und Source CodesDelphi-PRAXiS :: Das Forum für DelphiWindows APIInternet und NetzwerkeVCL und Datenbanken
 

Delphi-PRAXiS V.2005 III
© 2002-2008 by Daniel R. Wolf
powered by phpBB © phpBB Group

Impressum / Kontakt Allgemeine Geschäftsbedingungen