Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Array of Byte in eine Datei schreiben (https://www.delphipraxis.net/123932-array-byte-eine-datei-schreiben.html)

inherited 11. Nov 2008 16:05

Re: Array of Byte in eine Datei schreiben
 
Sollte man hier nicht besser WriteBuffer benutzen?
Zitat:

Zitat von http://www.freepascal.org/docs-html/rtl/classes/tstream.write.html über TStream.Write
This method should be used when the number of bytes that should be written is not determined. If a specific number of bytes should be written, use TSTream.WriteBuffer instead.


shmia 11. Nov 2008 16:15

Re: Array of Byte in eine Datei schreiben
 
Zitat:

Zitat von inherited
Sollte man hier nicht besser WriteBuffer benutzen?

Man sollte eigentlich immer (*) WriteBuffer anstelle Write benützen, weil dann geprüft wird ob auch wirklich die gewünschte Anzahl von Bytes geschrieben wurden.
Falls nicht wird eine Exception ge"raised".
Das Gleiche gilt auch für Read und ReadBuffer.

*) Ausnahme: wenn man eine Streamklasse ableitet oder einen Proxystream entwickelt gilt das nicht.
Dann benützt man die Streamklasse quasi von Innen.

Cyberstorm 11. Nov 2008 21:58

Re: Array of Byte in eine Datei schreiben
 
Zitat:

Zitat von divBy0
TFileStream geht auch.

Delphi-Quellcode:
fs := TFileStream.Create('test.txt', fmCreate);

    fs.Write(Bytes[0], Length(Bytes)*SizeOf(Byte));

fs.Free;

danke!

jottkaerr 12. Nov 2008 05:55

Re: Array of Byte in eine Datei schreiben
 
Zitat:

Zitat von divBy0
TFileStream geht auch.

Delphi-Quellcode:
fs := TFileStream.Create('test.txt', fmCreate);

    fs.Write(Bytes[0], Length(Bytes)*SizeOf(Byte));

fs.Free;

Statt SizeOf() auf den Datentyp des Arrays anzuwenden, sollte man es besser direkt mit einem Element des Arrays aufrufen:

Delphi-Quellcode:
  fs.Write(Bytes[0], Length(Bytes) * SizeOf(Bytes[0]));
Das hat den Vorteil, dass man bei einer späteren Änderung des Datentyps (z.B. von Byte zu Word) nicht noch solche Stellen suchen muss. Dem Compiler ist es übrigens egal, ob Bytes[0] tatsächlich existiert; ihn interessiert nur der Typ des Ausdrucks.

jkr


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:30 Uhr.
Seite 2 von 2     12   

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