![]() |
Binäre Datei in Array of Byte laden
Guten Tag zusammen,
ich versuche gerade eine binäre Datei in ein Array of Byte zu speichern. Doch leider weiß ich nicht, wie ich anfangen soll. Die Dateien die gelesen werden sollen sind max. 10MB groß. Im Array soll die Datei also Byte für Byte eingelesen werden. Könnt ihr mir sagen, wie ich das anstellen soll? |
AW: Binäre Datei in Array of Byte laden
Du kannst z.B. einen Stream nehmen oder die Datei mit
![]() |
AW: Binäre Datei in Array of Byte laden
.. mit einer Instanz von TFileStream die Datei öffnen.
Mit fileStream.size die Größe der Datei ermitteln. Mit setLength(DeinArray, Dateigröße) das Array auf die entsprechende Größe ändern. Mit fileSize.readBuffer(DeinArray,ArrayGröße) die Datei in das Array einlesen. Grüße Klaus |
AW: Binäre Datei in Array of Byte laden
Das habe ich jetzt mal gemacht.
So sieht das jetzt bei mir aus:
Delphi-Quellcode:
Aber wenn ich das starte, bekomme ich einen Fehler:
procedure TForm1.Button2Click(Sender: TObject);
var bArray: Array of byte; FileStream: TFileStream; myfile : file; i, filesizevalue: integer; fname: string; begin FileStream := TFileStream.Create(Edit1.Text, fmOpenRead); setLength(bArray, FileStream.Size); FileStream.ReadBuffer(bArray, FileStream.Size); FileStream.Free; end; Erste Gelegenheit für Exception bei $00406637. Exception-Klasse $C0000005 mit Meldung 'access violation at 0x00406637: write of address 0x00190000'. Prozess Projekt1.exe (5236) Das hier wird dann im System-Tab Rrt makiert: FISTP QWORD PTR [EDX+ECX] |
AW: Binäre Datei in Array of Byte laden
.. versuche es mal so:
Delphi-Quellcode:
Grüße
procedure TForm1.Button2Click(Sender: TObject);
var bArray: Array of byte; FileStream: TFileStream; myfile : file; i, filesizevalue: integer; fname: string; begin try try FileStream := TFileStream.Create(Edit1.Text, fmOpenRead); except on E:Exception do showMessage(E.Message); end; setLength(bArray, FileStream.Size); FileStream.seek(0,soFromBeginning); FileStream.ReadBuffer(bArray, FileStream.Size); finally FileStream.Free; end; end; Klaus |
AW: Binäre Datei in Array of Byte laden
Habe ich jetzt kopiert, aber immernoch das Gleiche.
Gibt es eine Möglichkeit mit TEncoding.XXX.GetBytes() eine binäre Datei einzulesen? |
AW: Binäre Datei in Array of Byte laden
.. so sollte es gehen.
Delphi-Quellcode:
aber auch nur, wenn bArray irgendwo weiter verwendet wird.
procedure TForm1.Button2Click(Sender: TObject);
var bArray: Array of byte; FileStream: TFileStream; begin try try FileStream := TFileStream.Create(Edit1.Text, fmOpenRead); except on E:Exception do showMessage(E.Message); end; setLength(bArray, FileStream.Size); FileStream.seek(0,soFromBeginning); FileStream.ReadBuffer(bArray[0], FileStream.Size); finally FileStream.Free; end; end; Ansonsten wird es heraus optimiert. Grüße Klaus |
AW: Binäre Datei in Array of Byte laden
Nur bei statischen Arrays ist myarray und myarray[0] das gleiche, bei dyn arrays immer das erste Arrayelement angeben (myarray[0]).
Gruß K-H |
AW: Binäre Datei in Array of Byte laden
Ok erst einmal vielen Dank.
Ich hatte jetzt eigentlich vor das Array of Byte an die Win-API "UpdateResource" zu übergeben. Doch dann bekomme ich immer einen Fehler. Jetzt ist die Frage, ob ich das Array einfach so übergeben kann? Der Parameter wäre "lpData". Hier die Funktion: ![]() |
AW: Binäre Datei in Array of Byte laden
Da meine Glaskugel immer noch nicht geliefert wurde,
vermute ich Du bist hierüber gestolpert: Zitat:
|
AW: Binäre Datei in Array of Byte laden
Erstmal vielen Dank.
Ich habe den Fehler gefunden. Ich hatte die Länge des ByteArray mit 2 multipliziert als Länge. Jetzt habe ich nur mal die Länge genommen und es hat funktioniert. Danke nochmal für die super Hilfe :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:50 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz