Delphi-PRAXiS
Seite 3 von 5     123 45      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Binärdatei Record auslesen\zuweisen (https://www.delphipraxis.net/196036-binaerdatei-record-auslesen%5Czuweisen.html)

KodeZwerg 17. Apr 2018 14:37

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.

himitsu 17. Apr 2018 14:41

AW: Binärdatei Record auslesen\zuweisen
 
Zitat:

Wenn ich das richtig in Erinnerung habe, sind Records standardmäßig gepackt.
Du hast das NICHT in "standardmäßig nicht gepackt" vergessen.

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, ...)

EWeiss 17. Apr 2018 14:42

AW: Binärdatei Record auslesen\zuweisen
 
Zitat:

Hab arge Probleme mit deiner RecordSize, schreib oder Knipps mal erstes Record und sag exakt wie dafür die werte sein müßten.
Der RecordSize sollte 2880 sein.
Wenn es das ist was du meinst.

Der Streamname passt ja ist bei mir auch so. ;)

gruss

Jasocul 17. Apr 2018 14:46

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

KodeZwerg 17. Apr 2018 14:53

AW: Binärdatei Record auslesen\zuweisen
 
Zitat:

Zitat von EWeiss (Beitrag 1399552)
Wenn es das ist was du meinst.

Nein, ich brauch korrekte Daten für's erste Record damit ich deine Type definition überarbeiten kann, da stimmt was nicht.

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;

EWeiss 17. Apr 2018 15:04

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:

Nicht lachen aber so mach ich es.
Warum sollte ich das tun ;)

gruss

HolgerX 17. Apr 2018 15:06

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 ;) )

EWeiss 17. Apr 2018 15:10

AW: Binärdatei Record auslesen\zuweisen
 
Zitat:

Nein, ich brauch korrekte Daten für's erste Record damit ich deine Type definition überarbeiten kann, da stimmt was nicht.
Ich werfe noch mal ein Pic im Raum.. sorry versuche das zu vermeiden.

Packed funktioniert nicht den dann verschiebst du den gesamten Speicher des Rekords.
Sieh Anhang.

gruss

Neutral General 17. Apr 2018 15:11

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.

EWeiss 17. Apr 2018 15:12

AW: Binärdatei Record auslesen\zuweisen
 
Zitat:

Zitat von Neutral General (Beitrag 1399570)
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.

Der FileSize ist OK!
2,81 KB (2.880 Bytes)...

gruss


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:37 Uhr.
Seite 3 von 5     123 45      

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