AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Binärdatei Record auslesen\zuweisen
Thema durchsuchen
Ansicht
Themen-Optionen

Binärdatei Record auslesen\zuweisen

Ein Thema von EWeiss · begonnen am 17. Apr 2018 · letzter Beitrag vom 18. Apr 2018
Antwort Antwort
Seite 4 von 5   « Erste     234 5      
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#31

AW: Binärdatei Record auslesen\zuweisen

  Alt 17. Apr 2018, 16:16
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
Ich glaube du hast meinen Post nur überflogen
Ich hab gefragt ob du die Datei mal hochladen könntest, damit wir uns das mal anschauen können.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
972 Beiträge
 
Delphi 6 Professional
 
#32

AW: Binärdatei Record auslesen\zuweisen

  Alt 17. Apr 2018, 16:18
Hmm..

Wenn ich dass richtig sehe, sind die Array Definitionen falsch!

Richtig müsste es so sein:
(Oben das Original)

Delphi-Quellcode:
{
MAX_PATH = 260;

TYPE STChannel
    ID        AS LONG
    streamName AS ASCIIZ * %MAX_PATH
    freq      AS SINGLE
    volume    AS SINGLE
    pan        AS SINGLE
    mute      AS BYTE
    solo      AS BYTE
    duration  AS LONG
    percent    AS LONG
    grouplevel AS SINGLE
    led        AS BYTE
    rMeterValue AS SINGLE
    reserved  AS ASCIIZ * 25 '// Total 320 bytes.
END TYPE
}


type
  TSTChannel = packed record
    ID : LONGINT;
    streamName : Array [0..MAX_PATH-1] of AnsiChar;
    freq : single;
    volume : single;
    pan : single;
    mute : BYTE;
    solo : BYTE;
    duration : LONGINT;
    percent : LONGINT;
    grouplevel : single;
    led : BYTE;
    rMeterValue : single;
    reserved : Array [0..24] of AnsiChar;
  end;
So kommt auch die Länge von 320 Bytes hin...

Ein C-Array von 25er Länge ist in Delphi ein Array von 0..24 !

(Erstellt mit D6)
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#33

AW: Binärdatei Record auslesen\zuweisen

  Alt 17. Apr 2018, 16:20
Du hast Recht. Doof, dass echt keiner von uns in den ganzen 4 Seiten drauf gekommen ist
Die Arrays waren jeweils 1 Element zu lang.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."

Geändert von Neutral General (17. Apr 2018 um 16:39 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#34

AW: Binärdatei Record auslesen\zuweisen

  Alt 17. Apr 2018, 16:31
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
Ich glaube du hast meinen Post nur überflogen
Ich hab gefragt ob du die Datei mal hochladen könntest, damit wir uns das mal anschauen können.
Danke habe ich
https://www.delphipraxis.net/1399535-post13.html

gruss
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#35

AW: Binärdatei Record auslesen\zuweisen

  Alt 17. Apr 2018, 16:36
Du hast Recht. Doof das echt keiner von uns in den ganzen 4 Seiten drauf gekommen ist
Die Arrays waren jeweils 1 Element zu lang.
Boahhh eh ja so kann es manchmal gehen
@HolgerX Danke vielmals..

gruss
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#36

AW: Binärdatei Record auslesen\zuweisen

  Alt 17. Apr 2018, 16:40
(Erstellt mit D6)
Hallo HolgerX, ich habe mal deine Type definition ausprobiert, für Record 1-7 aus der .bin klappt es mit der "StreamName" nun, Record 8 und 9 wird übersprungen.
Per HexEdit zeigt der mir für #8 auch einen gekappten Namen an ("weetly Broken (A)\Loop.mp3" alle anderen beginnen mit "Sweetly Broken") und #9 ist leer.
Könnte es sein dass das (#8 und #9) entfernte Records sind? Also Überbleibsel.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#37

AW: Binärdatei Record auslesen\zuweisen

  Alt 17. Apr 2018, 16:54
(Erstellt mit D6)
Hallo HolgerX, ich habe mal deine Type definition ausprobiert, für Record 1-7 aus der .bin klappt es mit der "StreamName" nun, Record 8 und 9 wird übersprungen.
Per HexEdit zeigt der mir für #8 auch einen gekappten Namen an ("weetly Broken (A)\Loop.mp3" alle anderen beginnen mit "Sweetly Broken") und #9 ist leer.
Könnte es sein dass das (#8 und #9) entfernte Records sind? Also Überbleibsel.
Ich werde mir das nachher nochmal genau anschauen.

gruss
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
972 Beiträge
 
Delphi 6 Professional
 
#38

AW: Binärdatei Record auslesen\zuweisen

  Alt 17. Apr 2018, 18:46
Hmm..

Hab mal nen kleines Testtool...

Scheint alles nun zu passen..


(Erstellt mit D6)
Angehängte Dateien
Dateityp: zip Test_STChannel.zip (246,9 KB, 2x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#39

AW: Binärdatei Record auslesen\zuweisen

  Alt 17. Apr 2018, 19:00
Ok, Dein Tool bringt die gleichen Ergebnisse, #8 und #9 entweder defekt oder sonst was.
Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
type
  TSTChannel = packed record
    ID : LONGINT;
    streamName : Array [0..MAX_PATH-1] of AnsiChar;
    freq : single;
    volume : single;
    pan : single;
    mute : BYTE;
    solo : BYTE;
    duration : LONGINT;
    percent : LONGINT;
    grouplevel : single;
    led : BYTE;
    rMeterValue : single;
    reserved : Array [0..24] of AnsiChar;
   end;
var
 STChannel : TSTChannel;
 MyRead: File of TSTChannel;
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('RECORD >>> '+IntToStr(FilePos(MyRead))); // Da ID nichts liefert, liefer ich mir selbst was
       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;
Danke für check!
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#40

AW: Binärdatei Record auslesen\zuweisen

  Alt 17. Apr 2018, 19:07
Hmm..

Hab mal nen kleines Testtool...

Scheint alles nun zu passen..


(Erstellt mit D6)
Jo stimmt schon
Zitat:
Memo1.Lines.Add('RECORD >>> '+IntToStr(FilePos(MyRead))); // Da ID nichts liefert, liefer ich mir selbst was
Die liefert nichts wird aber in der Anwendung zugewiesen.
Das Teil ist nur zum testen meiner LIB.

gruss

Geändert von EWeiss (11. Jul 2019 um 16:51 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 5   « Erste     234 5      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:23 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