Entwickler-Ecke
Dateizugriff - Datei binär ausgeben
creeky - So 06.02.05 15:35
Titel: Datei binär ausgeben
Hallo,
ich möchte mir ein kleines Tool schreiben, mit dem ich jegliche Art von Dateien Binär auslesen kann.
Genauer gesagt will ich (rein Interesse halber) die einzelnen Speicherblöcke der Datei als Binör-Code ausgeben lassen.
Wie lässr sich dies realisieren.
Ich wäre über schnelle Antwort erfreut.
creeky
Udontknow - So 06.02.05 15:39
Hallo!
Einzelne Speicherblöcke? eine Datei ist erstmal nichts weiter als eine abgegrenzte Abfolge von Bytes, die nicht weiter segmentiert ist. Zumindest nicht auf logischer Seite. Wie das BS die Datei auf der HD ablegt, das ist eine andere Geschichte.
Benutze einfach einen FileStream, der eben die Daten byteweise ausliest. Siehe Delphi-Hilfe zu TFileStream.
Cu,
Udontknow
creeky - So 06.02.05 16:06
Okay, ich habe mich falsch ausgedrückt.
Da ich noch Neuling in Sachen Delphi bin, könntet ihr mir bitte genauere Anweisungen oder Links geben.
Udontknow - So 06.02.05 16:47
Hier mal der Code, um die einzelnen Byte-Werte in ein Memo zu schreiben:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29:
| procedure TForm1.DumpFileToMemo(FileName:String); var Stream:TFileStream; var Str:String; var B:Byte; begin Stream:=TFileStream.Create(FileName,fmOpenRead); try Str:=''; While Stream.Position<Stream.Size do begin Stream.ReadBuffer(B,SizeOf(B)); Str:=Str+IntToStr(B)+'-';
if Stream.Position mod 10 = 9 then begin Memo1.Lines.Add(Str); Str:=''; end; end; finally Stream.Free; end; end; |
Cu,
Udontknow
creeky - So 06.02.05 17:15
Danke.
Zitat: |
if Stream.Position mod 10 = 9 then |
Da hast dich glaub verschrieben. Muss doch so heißen:
Delphi-Quelltext
1:
| if Stream.Position mod 10 = 0 then |
Ich versteh das schon richtig, dass ich jetzt das Ganze noch in Binär-Code umwandeln muss.
Moderiert von
raziel: Code- durch Delphi-Tags ersetzt.
creeky - So 06.02.05 18:31
Vielen Dank für den Quellcode.
Ich habe nur noch ein Problem. Wenn ich größere Dateien öffnen möchte (z.B. mp3-Dateien) dann stürzt das Programm ab. An was liegt das? wie kann ich das ändern?
retnyg - So 06.02.05 18:50
creeky hat folgendes geschrieben: |
Ich habe nur noch ein Problem. Wenn ich größere Dateien öffnen möchte (z.B. mp3-Dateien) dann stürzt das Programm ab. An was liegt das? wie kann ich das ändern? |
vielleicht daran dass gewisse binärzeichen für systemdinge reserviert sind und beim versuch diese darzustellen ein fehler auftritt. rein theoretisch sollte der fehler bei fast jeder nicht-textdatei auftreten
creeky - So 06.02.05 19:24
Und dies lässt sich nicht irgendwie umgehen?
Delete - So 06.02.05 19:27
retnyg hat folgendes geschrieben: |
creeky hat folgendes geschrieben: | Ich habe nur noch ein Problem. Wenn ich größere Dateien öffnen möchte (z.B. mp3-Dateien) dann stürzt das Programm ab. An was liegt das? wie kann ich das ändern? |
vielleicht daran dass gewisse binärzeichen für systemdinge reserviert sind und beim versuch diese darzustellen ein fehler auftritt. rein theoretisch sollte der fehler bei fast jeder nicht-textdatei auftreten |
das glaube ichnicht Tim. Ich kann mit meinem HexLoader:
http://www.luckie-online.de/Delphi/Sonstiges/HexLoader.html jeder Dastei binär in einem Memo darstellen. Hex-Editoren können das ja auch.
retnyg - So 06.02.05 19:58
aber gewisse zeichen wie #13 #10 #9 usw werden auch als solche interpretiert -> linefeed z.b.
um dies zu umgehen muss man diese zeichen "ausfiltern"
Udontknow - Mo 07.02.05 09:19
Nun, es werden ja nicht die Zeichen ins Memo geschrieben, sondern die dezimalen Werte.
Wobei mein Code wirklich noch etwas fehlerhaft ist, da er unter Umständen die letzten Zeichen einer Datei nicht zeigt. Abstürzen sollte es aber nicht, obwohl es äusserst unperformant ist. Es sollte ja auch nur demonstrieren, wie es geht.
Edit: Was für ein BS hast du? Unter Win95 war die Menge, die ein Memo aufnehmen konnte, begrenzt, meine ich mich zu erinnern...
Cu,
Udontknow
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!