Delphi-PRAXiS

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)

Cyberstorm 11. Nov 2008 14:46


Array of Byte in eine Datei schreiben
 
Mit welchem Code kann ich ein Array of Byte in eine Datei schreiben?

Danke

mkinzler 11. Nov 2008 14:48

Re: Array of Byte in eine Datei schreiben
 
Mit einer Schleife

SirThornberry 11. Nov 2008 14:56

Re: Array of Byte in eine Datei schreiben
 
Zitat:

Zitat von Cyberstorm
Mit welchem Code kann ich ein Array of Byte in eine Datei schreiben?

Danke

Könntest du die Frage bitte präzisieren? Wir helfen gern aber wir machen nicht kostenlos die Arbeit für andere.
An welcher Stelle kommst du nicht weiter? Was hast du schon?

Cyberstorm 11. Nov 2008 15:00

Re: Array of Byte in eine Datei schreiben
 
weiß einfach nicht, wie ich das anstellen soll. file of byte? stream?

Cyberbob 11. Nov 2008 15:01

Re: Array of Byte in eine Datei schreiben
 
Du könntest das Array of Byte auf als eigene Datentyp deklarieren und eine Datei diesen Datentyps erstellen. Das einfachste ist aber, das Araay von Anfang bis Ende durchzulaufen und die Wert in einer Date des Types Byte abzulegen!
Wo genau kommst du denn nicht weiter?
Wenn du einfach nur Speichern willst, nimm Fileof Byte und speichere es wie gesagt mittels einer Schleife

Neutral General 11. Nov 2008 15:11

Re: Array of Byte in eine Datei schreiben
 
Hi,

Das einfachste, und schnellste ist, einen T(Memory)Stream zu benutzen und mit der Methode Write das Array in die Datei zu schreiben. (Beim MemoryStream SaveToFile nicht vergessen!). Schreiben tut man, indem man als ersten Parameter das erste Element des Arrays übergibt und der 2. Parameter (Anzahl der zu schreibenden Bytes) muss Length(DeinArray)*SizeOf(Byte) sein.

Apollonius 11. Nov 2008 15:13

Re: Array of Byte in eine Datei schreiben
 
Warum sollte man einen TMemoryStream verwenden? Mit einem TFileStream spart man sich das Herumschieben im Speicher. Aber gegen die Pascal-Routinen spricht auch nichts.

Neutral General 11. Nov 2008 15:22

Re: Array of Byte in eine Datei schreiben
 
Zitat:

Zitat von Apollonius
Warum sollte man einen TMemoryStream verwenden? Mit einem TFileStream spart man sich das Herumschieben im Speicher. Aber gegen die Pascal-Routinen spricht auch nichts.

Ich hab das Memory ja auch in Klammern geschrieben. Ich persönlich benutze halt gerne MemoryStreams :P

divBy0 11. Nov 2008 15:23

Re: Array of Byte in eine Datei schreiben
 
TFileStream geht auch.

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

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

fs.Free;

SirThornberry 11. Nov 2008 15:44

Re: Array of Byte in eine Datei schreiben
 
@divBy0: gelernt hat der Fragesteller jetzt aber rein gar nichts :-( Er kam ja bereits selbst darauf das es File of Byte etc. gibt also hätte die Suche oder ein näheres damit befassen ihm das Ergebnis auch gebracht. So wird es aber wohl leider auf das abtippen hinaus laufen :?

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 06:46 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