![]() |
Binärdatei schreiben und lesen?
Hallo,
ich bin mir nicht sicher ob das jetz möglich ist, frage aber trotzdem mal nach ^^ Kann ich eine Datei nur mit Bitwerten abspeichern? Also ich mein jetzt um die Datei so klein wie möglich zu halten z.B. für ein Bildformat. MfG |
AW: Binärdatei schreiben und lesen?
Ja mit der einzigen Bedingung, dass die Bitanzahl kongruent 0 modulo 8 sein muss, denn die kleinste darstellbare Einheit ist ein Byte!
|
AW: Binärdatei schreiben und lesen?
Also heisst es ich speichere in Bytes?
Das erste Byte "01001011", das zweite "10010011", und so weiter? Wie kann ich so etwas realisieren? MfG |
AW: Binärdatei schreiben und lesen?
Jup.
Indem du alle deine Bits in Bytes groupierst und diese dann wie gewohnt, in (d)eine Datei mit üblichen Methoden (recherchiere selbst; über die sufu lässt sich einiges finden) schreibst. Das gruppieren ginge z.B. so:
Delphi-Quellcode:
type
T8Bits = Array[0..7] of Boolean; function bitsToByte(const Bits: T8Bits): Byte; var i, j: Integer; begin Result := 0; j := 1; for i := 0 to 7 do begin if Bits[i] then Result := Result or 1; j := j shl 1; end; end; |
AW: Binärdatei schreiben und lesen?
BTW: Jede Datei besteht aus einer einfachen Folge von Bytes.
In keiner Datei wird z.B. Zeichen, Bilder gespeichert, sondern Bytes, die dann als Zeichen oder Bilder interpretiert werden. Diese Interpretationsvorschrift nennt man dann das Format der Datei ;) |
AW: Binärdatei schreiben und lesen?
Aphton du verwirrst ihn doch nur -.-
Ich denke er will einfach nur per TFilestream o.ä. Daten binär (statt in Textform) speichern. |
AW: Binärdatei schreiben und lesen?
Ich glaube TFilestream ist das richtige, jedoch finde ich nirgends einen Weg wie ich es so lösen kann wie ich es brauche :/
Wie kann ich nun wirklich nur Byts reinschreiben? Sry wenn ich was übersehe aber finde es wirklich nirgends o_O MfG |
AW: Binärdatei schreiben und lesen?
Vielleicht solltest du genauer schreiben was du willst, denn "ich will Bytes schreiben" ist etwas zu allgemein, denn selbst wenn du den Text "Hallo Welt!" in ein TMemo schreibst und es abspeicherst, schreibst du Bytes. Bytes schreiben ist also nichts ungewöhnliches.
Vielleicht suchst du aber auch nur das:
Delphi-Quellcode:
Das ist ein Code aus einem Programm von 2002, ich weiß also nicht ob es heute noch funktioniert.
// Läd eine Datei und übergibt ihn als String
// sInFile = Name der Datei die geladen werden soll // sFileString = VAR String - Datei als 8Bit String function LoadStringFromFile(sInFile: String; var sFileString: AnsiString): Boolean; var FileStream: TFileStream; begin Result := False; if not FileExists(sInFile) then Exit; FileStream := TFileStream.Create(sInFile, fmOpenRead); try if FileStream.Size <> 0 then begin SetLength(sFileString, FileStream.Size); FileStream.Read(sFileString[1], FileStream.Size); Result := True; end; finally FileStream.Free end; end; // Speichert den 8 Bit String als Datei // sOutFile = Name der Datei unter dem gespeichert werden soll // sFileString = 8 Bit String function SaveStringToFile(sOutFile: String; sFileString: AnsiString): Boolean; var FileStream: TFileStream; begin Result := False; FileStream := TFileStream.Create(sOutFile, fmCreate); try if Length(sFileString) <> 0 then begin FileStream.Write(sFileString[1], Length(sFileString)); Result := True; end; finally FileStream.Free end; end; Wie speicherst du dein Byte? Ganz einfach - erstelle ein AnsiString (AnsiStrings = 8 Bit; String = je nach dem). Das ist dann eine Kette von 8 Bit Bytes, auch wenn es sich String nennt.
Delphi-Quellcode:
var
s: AnsiString; begin s := s + #32 + #127 + #255; //oder s := s + Chr(32) + Chr(127) + Chr(255); |
AW: Binärdatei schreiben und lesen?
|
AW: Binärdatei schreiben und lesen?
Ist mir irgendwie zu kompliziert xD Ich glaube ich benutze vorerst Textbasierte Dateien und probiere es später in Bytes zu lösen xD
MfG |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:43 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