![]() |
AW: Binärdatei Record auslesen\zuweisen
Liste der Anhänge anzeigen (Anzahl: 1)
Hab arge Probleme mit deiner RecordSize, schreib oder Knipps mal erstes Record und sag exakt wie dafür die werte sein müßten.
Momentan komm ich damit nicht klar, siehe Bild. |
AW: Binärdatei Record auslesen\zuweisen
Zitat:
Standardmäßig ist jede Variable im Arbeitsspeicher ausgerichtet, für einen "optimalen" Speicherzugriff, ohne rumschieben und kopieren zu müssen. PS: wie wäre es mit einer Embedded DB? (Firebird, SQLite, ...) |
AW: Binärdatei Record auslesen\zuweisen
Zitat:
Wenn es das ist was du meinst. Der Streamname passt ja ist bei mir auch so. ;) gruss |
AW: Binärdatei Record auslesen\zuweisen
Sry himitsu, du hast natürlich Recht. Bin im Moment mit dem Handy angemeldet. Ich korrigiere das, sobald ich kann
|
AW: Binärdatei Record auslesen\zuweisen
Zitat:
Alternativ spiel mit diesem Schnippsel rum, mit dem entstand das Bild von oben. Nicht lachen aber so mach ich es.
Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
type TSTChannel = packed record ID : Integer; // streamName : Array [0..250] of AnsiChar; streamName : Array [0..MAX_PATH] of AnsiChar; freq : single; volume : single; pan : single; mute : byte; solo : byte; duration : Integer; percent : Integer; grouplevel : single; led : byte; rMeterValue : single; reserved : Array [0..25] of AnsiChar; end; var STChannel : TSTChannel; MyRead: File of TSTChannel; i : Integer; begin Memo1.Clear; AssignFile(MyRead, '.\Channels.bin'); Reset(MyRead); try while not EOF(MyRead) do begin Read(MyRead, STChannel); with STChannel do begin Memo1.Lines.Add('ID: '+IntToStr(ID)); Memo1.Lines.Add('StreamName: '+String(StreamName)); Memo1.Lines.Add('Freq: '+FloatToStr(freq)); Memo1.Lines.Add('Volume: '+FloatToStr(Volume)); Memo1.Lines.Add('Pan: '+FloatToStr(Pan)); Memo1.Lines.Add('Mute: '+IntToStr(Mute)); Memo1.Lines.Add('Solo: '+IntToStr(Solo)); Memo1.Lines.Add('Duration: '+IntToStr(Duration)); Memo1.Lines.Add('Percent: '+IntToStr(Percent)); Memo1.Lines.Add('GroupLevel: '+FloatToStr(GroupLevel)); Memo1.Lines.Add('Led: '+IntToStr(Led)); Memo1.Lines.Add('rMeterValue: '+FloatToStr(rMeterValue)); Memo1.Lines.Add('Reserved: '+String(Reserved)); Memo1.Lines.Add(''); end; end; finally CloseFile(MyRead); end; end; |
AW: Binärdatei Record auslesen\zuweisen
Ich habe nur das Bin file und versuche daraus die Korrekten Daten einzulesen.
Da mein einlesen der Datei fehlschlägt kann ich dir auch keine korrekten Daten für den erste Record liefern. Zitat:
gruss |
AW: Binärdatei Record auslesen\zuweisen
Hmm..
Ich werfe einfach mal Big-Endian/Little-Endian in den Raum. Eventuell wird für die Kodierung des Single-Wertes im Ausgangssystem auch was ganz anderes verwendet... (Nur so eine Idee ;) ) |
AW: Binärdatei Record auslesen\zuweisen
Zitat:
Packed funktioniert nicht den dann verschiebst du den gesamten Speicher des Rekords. Sieh Anhang. gruss |
AW: Binärdatei Record auslesen\zuweisen
Falls du (ungefähr) weißt was in einem dieser Channel Records drin stehen müsste, dann öffne die .bin doch mal in einem Hex-Editor und dann siehst du wie lang das Record ist und wie die Felder liegen. Dementsprechend kannst du dann deinen Code anpassen. Oder falls die Datei nicht so groß ist usw. kannst du sie vllt. ja mal hochladen.
|
AW: Binärdatei Record auslesen\zuweisen
Zitat:
2,81 KB (2.880 Bytes)... gruss |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:41 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