Datei 'binär' öffnen

Kann man eine Datei so öffnen, dass man direkt die einzelnen Bits schreiben kann? So vielleicht „f : file of bit“ oder so?
Oder muss ich die Bits erst in ein „normales“ Zeichen umwandeln und dann die Datei als Textdatei öffnen?

Danke
Mario

Kann man eine Datei so öffnen, dass man direkt die einzelnen
Bits schreiben kann? So vielleicht „f : file of bit“ oder so?
Oder muss ich die Bits erst in ein „normales“ Zeichen
umwandeln und dann die Datei als Textdatei öffnen?

nein. du musst die Datei mit TFileStream oder („veraltet“) als file of byte öffnen und dann „per hand“ auf die einzelnen Bits zu greifen. (mit den entsprechenden Bit-Operatoren etc.)

Um das ganze zu vereinfachen, müsste es gehen, wenn du immer eine bestimmte Anzahl an Bytes in einem TBits - Objekt pufferst und dann darauf zugreifst.

Grüße
Alexander Menk
__
self soft free software www.self-soft.de

Hallo Mario,

Kann man eine Datei so öffnen, dass man direkt die einzelnen
Bits schreiben kann? So vielleicht „f : file of bit“ oder so?

Ich hab mal ein Stück Source produziert, um Applikationen zu „aktivieren/deaktivieren“, so dass sie ein anderer Benutzer nicht mehr starten kann. Das hab ich so gemacht, dass ich die ersten 2 Bytes umgeschrieben hab. Also so was ähnliches was du auch vorhast.

Gruss
Markus

_{------------------------------------------------------------------------------}_
**function** \_MakeFileExecutable(ExeName: **string** ; Enabled: boolean): boolean;
**var**
 f : **file**  **of** Byte;
 b : byte;
**begin**
 Result := true;
**if** \_FileExist(ExeName) **then**  **begin**
**if** Enabled **then**  **begin**
**try**
 AssignFile(f, ExeName);
 Reset(f);
 Seek(f, 0);
 b := Ord('M');
 Write(f, b) ;
 b := Ord('Z');
 Write(f, b) ;
 CloseFile(f);
**except**
**try**
 CloseFile(f);
**except**
**end** ;
 Result := false;
**end** ;
**end**
**else**  **begin**
**try**
 AssignFile(f, ExeName);
 Reset(f);
 Seek(f, 0);
 b := Ord('@');
 Write(f, b) ;
 b := Ord('.');
 Write(f, b) ;
 CloseFile(f);
**except**
**try**
 CloseFile(f);
**except**
**end** ;
 Result := false;
**end** ;
**end** ;
**end**
**else** Result := false;
**end** ;

_{------------------------------------------------------------------------------}_
**function** \_IsFileExecutable(ExeName: **string** ): boolean;
**var**
 f : **file**  **of** Byte;
 b : byte;
**begin**
 Result := true;
**if** \_FileExist(ExeName) **then**  **begin**
**try**
 AssignFile(f, ExeName);
 Reset(f);
 Seek(f, 0);

 Read(f, b) ;
**if** Chr(b) 'M' **then**  **begin**
 Result := false;
**try**
 CloseFile(f);
**except**
**end** ;
 Exit;
**end** ;
 Read(f, b) ;
**if** Chr(b) 'Z' **then**  **begin**
 Result := false;
**try**
 CloseFile(f);
**except**
**end** ;
 Exit;
**end** ;

 CloseFile(f);
**except**
**try**
 CloseFile(f);
**except**
**end** ;
 Result := false;
**end** ;
**end**
**else** Result := false;
**end** ;