Einzelnen Beitrag anzeigen

ichbins

Registriert seit: 9. Jul 2005
Ort: Hohenaltheim
1.001 Beiträge
 
Delphi 2005 Personal
 
#8

Re: Wie lese ich den BINÄRCODE einer Datei aus?

  Alt 9. Mär 2006, 20:21
du kannst den Filestream verwenden, dann geht es nur etwas anderst:

Delphi-Quellcode:
var LStream: TFileStream;
    buf:array of byte;
begin
  SetLength(LBuffer, 10);
  LStream := TFileStream.Create(DeinDateiname, fmOpenReadWrite);
  //10 Zeischen aus der Datei lesen
  LStream.Read(LBuffer[1], 10);
  //zurück an position 0 springen
  //10 Zeischen zurück schreiben
  LStream.Write(LBuffer[1], 10);
  LStream.Free;
end;
//der Inhalt des Array of Byte beinhaltet nach dem Lesen die ersten 10 Zeichen der Datei als Byte-Zahlen, also 0-255. Die kannst du dann noch weiter in 1en und 0en oder alternativ Hex-Zeichen zerlegen:

Delphi-Quellcode:
function hex(b:byte):string;
var
  hexes:string='0123456789ABCDEF';
begin
  result:=hexes[1+ (b div 16)]+ hexes[1+(b mod 16)];
end;
es gibt noch unendlich viele andere Möglichkeiten, den Code auszulesen, ich persönlich halte den filestream nicht für die eleaganteste.

z.B. gibts da noch die file:
Delphi-Quellcode:
var
  f:file of {jederbeliebigeTyp ausser Strings und Klassen, wir nehemn file of byte, um einzelne 1-Byte-große zahlenwerte
auszulesen}
 byte;
  r:integer;
  buf:array [0..1023] of byte;
begin
  assignfile(f,dateiname);
  //jetzt Datei öffnen:
  reset(f); //um existierende datei zu öffnen
  rewrite(f); //um existierende datei zu überschreiben oder neue zu erstellen
  //jetzt lesen/schreiben
  blockread(f {Dateivariable, aus der gelesen wird},buf{buffer-Speichervariable in die gelesen wird},1024{anzahl der zu lesenden Bytes},r{Hier eine Integervariable angeben, in der nach dem lesen gespeichert ist wie viel der zu lesenden Bytes tatsächlich gelesen wurden});
  seek(f,position); //springe in der Datei an eine bestimmte Position (0 = Anfang, filesize(F) = Ende, 1200 = hinter dem 1200. Byte in der Datei)
  blockwrite(f {Dateivariable, in die geschrieben wird},buf{buffer-Speichervariable aus der geschrieben wird},1024{anzahl der zu schreibenden Bytes},r{Hier eine Integervariable angeben, in der nach dem schreiben gespeichert ist wie viel der zu schreibenden Bytes tatsächlich geschrieben wurden});
  
  filepos(f) //gibt die Position zurück an der die Datei sich gerade befindet
  //letztendlich Datei wieder schliessen
  closefile(f);
end;
Michael Enßlin
Ich, der ich weiß, mir einzubilden, dass ich weiß, nichts zu wissen, weiß, dass ich nichts weiß.
Sokrates
  Mit Zitat antworten Zitat