Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Datei byteweise aufbauen (https://www.delphipraxis.net/140752-datei-byteweise-aufbauen.html)

MisterNiceGuy 25. Sep 2009 10:44


Datei byteweise aufbauen
 
Hi, ich hab hier den Aufbau eines FAT12 Dateisystems:

http://www.jay-code.de/files/fat12.pdf

Jetzt würde ich gerne die Datei Byte für Byte gemäß der Spezifikation zusammenbasteln, weiß aber nicht genau wie.
Richtiger Ansatz wäre bestimmt über TFilestream oder blockwrite, aber ich brauch dringend ein bisschen
Starthilfe :)

hathor 25. Sep 2009 10:56

Re: Datei byteweise aufbauen
 
Nimm ein Disketten-Image für 1.44MB und schau es Dir mit einem Hexeditor an.

Auch interessant:
http://diskimagemanager.googlecode.com/svn/trunk/

MisterNiceGuy 25. Sep 2009 12:04

Re: Datei byteweise aufbauen
 
Ich weiß ja genau wie eins aussieht, Frage ist nur, wie ich eine Datei byteweise schreibe!

omata 25. Sep 2009 12:11

Re: Datei byteweise aufbauen
 
Delphi-Quellcode:
var f:file of byte;
    b:byte;
begin
  assignfile(f, 'test.hex');
  try
    rewrite(f);
    for b:=1 to 255 do
      write(f, b);
  finally
    closefile(f);
  end;
end;

SirThornberry 25. Sep 2009 12:12

Re: Datei byteweise aufbauen
 
Weißt du wie man mehr als 1 Byte in eine Datei schreibt? Wenn ja sollte es ein leichtes sein auch ein einzelnes Byte zu schreiben.
Wenn nicht solltest du dir vorher überlegen welche Variante du verwenden willst. Entweder die objektorientierte (mit TFileStream etc.) oder die globale welche nicht mit Objekten arbeitet (also direkt die Api-Funktionen, Assign, Rewrite etc.)

p80286 25. Sep 2009 13:17

Re: Datei byteweise aufbauen
 
Hallo Mr NiceGuy,

warum Byteweise schreiben?
Eine Diskette besteht (je nach Format natürlich) aus 2Seiten 80 Spuren und 9 Sektoren mit je 512Byte.
Du könntest z.B. ein (mehrdimensionales)array definieren, daß die Struktur deiner "Diskette" wiedergibt, die gewünschten Daten eintragen und dann das array mit blockwrite oder Tfilestream.write auf einen Rutsch wegschreiben.

Gruß
K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:35 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