AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Binärdatei schreiben und lesen?
Thema durchsuchen
Ansicht
Themen-Optionen

Binärdatei schreiben und lesen?

Ein Thema von milos · begonnen am 15. Jan 2014 · letzter Beitrag vom 16. Jan 2014
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von milos
milos

Registriert seit: 14. Jul 2008
Ort: Bern (CH)
509 Beiträge
 
Delphi 11 Alexandria
 
#1

Binärdatei schreiben und lesen?

  Alt 15. Jan 2014, 22:13
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
Milos
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#2

AW: Binärdatei schreiben und lesen?

  Alt 15. Jan 2014, 22:17
Ja mit der einzigen Bedingung, dass die Bitanzahl kongruent 0 modulo 8 sein muss, denn die kleinste darstellbare Einheit ist ein Byte!
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
Benutzerbild von milos
milos

Registriert seit: 14. Jul 2008
Ort: Bern (CH)
509 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Binärdatei schreiben und lesen?

  Alt 15. Jan 2014, 22:41
Also heisst es ich speichere in Bytes?

Das erste Byte "01001011", das zweite "10010011", und so weiter?

Wie kann ich so etwas realisieren?

MfG
Milos
  Mit Zitat antworten Zitat
Benutzerbild von Aphton
Aphton

Registriert seit: 31. Mai 2009
1.198 Beiträge
 
Turbo Delphi für Win32
 
#4

AW: Binärdatei schreiben und lesen?

  Alt 15. Jan 2014, 22:46
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;
das Erkennen beginnt, wenn der Erkennende vom zu Erkennenden Abstand nimmt
MfG
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: Binärdatei schreiben und lesen?

  Alt 15. Jan 2014, 22:54
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
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

AW: Binärdatei schreiben und lesen?

  Alt 15. Jan 2014, 23:04
Aphton du verwirrst ihn doch nur -.-

Ich denke er will einfach nur per TFilestream o.ä. Daten binär (statt in Textform) speichern.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von milos
milos

Registriert seit: 14. Jul 2008
Ort: Bern (CH)
509 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Binärdatei schreiben und lesen?

  Alt 16. Jan 2014, 01:46
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
Milos
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#8

AW: Binärdatei schreiben und lesen?

  Alt 16. Jan 2014, 02:09
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:
// 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;
Das ist ein Code aus einem Programm von 2002, ich weiß also nicht ob es heute noch funktioniert.

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);
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#9

AW: Binärdatei schreiben und lesen?

  Alt 16. Jan 2014, 02:39
Das erinnert mich ein wenig daran und daran
  Mit Zitat antworten Zitat
Benutzerbild von milos
milos

Registriert seit: 14. Jul 2008
Ort: Bern (CH)
509 Beiträge
 
Delphi 11 Alexandria
 
#10

AW: Binärdatei schreiben und lesen?

  Alt 16. Jan 2014, 04:13
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
Milos
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:29 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz