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
EWeiss
(Gast)

n/a Beiträge
 
#1

AW: Binärdatei Record auslesen\zuweisen

  Alt 17. Apr 2018, 13:19
Zitat:
PS: das "gute" alte file of TMyRecord funktioniert immernoch.
Wie meinst du das?

Zitat:
Sieht hier aber so aus, als ob das standard Alignment (von 4?) korrekt wäre. Die Pfade der hinteren Einträge des Arrays stimmen ja bis aufs letzte Byte exakt. Sicher, dass volume an der Stelle 50 sein muss?
Ich habe die Regler in Fly auf 50% gesetzt von daher müsste es stimmen.

Habe alles versucht.
Delphi-Quellcode:
  {$Align On}
  {$ALIGN 8}
  TSTChannel = record
    ID : Integer;
    streamName : Array [0..250] 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;

  {$Align Off}
Array [0..250] of AnsiChar;

Auf
Array [0..MAX_PATH] of AnsiChar;

dann kracht es.

gruss

Geändert von EWeiss (11. Jul 2019 um 15:51 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.399 Beiträge
 
Delphi 12 Athens
 
#2

AW: Binärdatei Record auslesen\zuweisen

  Alt 17. Apr 2018, 13:27
Wie meinst du das?
http://docwiki.embarcadero.com/RADSt...d_Input-Output
var F: file of TSTChannel;

Zitat:
Delphi-Quellcode:
  {$Align On}
  {$ALIGN 8}
Eines reicht. Es ist Alles das Gleiche.
Delphi-Quellcode:
{$A+} = {$ALIGN ON} = {$ALIGN 8} wobei 8 der DEFAULT ist
{$A-} = {$ALIGN OFF} = {$ALIGN 1}
Delphi-Quellcode:
  {$ALIGN 8}  // ab hier 8
  TSTChannel = record
     ..
  end;
  {$ALIGN ON} // ab hier wieder DEFAULT
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (17. Apr 2018 um 13:31 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#3

AW: Binärdatei Record auslesen\zuweisen

  Alt 17. Apr 2018, 13:33
Zitat:
var F: file of TSTChannel;
Ach so meinst du da.. Danke
Aber ich benötige ein Array.

gruss
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.399 Beiträge
 
Delphi 12 Athens
 
#4

AW: Binärdatei Record auslesen\zuweisen

  Alt 17. Apr 2018, 13:34
Das ist ein Array bzw. eine Liste.

FileSize = Anzahl der Records, also in der API für diese "Typed Files"
FilePos = Index des Record

FileSize und FilePos werden intern auf RecSize umgerechnet. Delphi-Referenz durchsuchenSystem.Rewrite, wobei bei TypedFiles standardmäßig das dem SizeOf(DeinRecord) entspricht.


file of AnsiChar = Text = eine Textdatei
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (17. Apr 2018 um 13:41 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#5

AW: Binärdatei Record auslesen\zuweisen

  Alt 17. Apr 2018, 13:48
Du meinst wenn ich dich richtig verstehe anstelle von CreateFile..
Nur das löst mein Problem nicht.

Letztendlich ein Ersatz für die WinApi32.

gruss
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.399 Beiträge
 
Delphi 12 Athens
 
#6

AW: Binärdatei Record auslesen\zuweisen

  Alt 17. Apr 2018, 13:57
Drum hatte ich es eigentlich auch nur nebenbei erwähnt.

Aber ansonsten wurde auch schon alles Wichtige genannt.
* die Speicherausrichtung
* die Art der Typen (z.B. AnsiChar und WideChar, aber nicht Char)

Arrays werden wie ihr enthaltener Typ ausgerichtet, außer bei "packed array",
und bei Records wie ihr größter Typ, außer bei "packed record".
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (17. Apr 2018 um 14:00 Uhr)
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#7

AW: Binärdatei Record auslesen\zuweisen

  Alt 17. Apr 2018, 14:08
Drum hatte ich es eigentlich auch nur nebenbei erwähnt.

Aber ansonsten wurde auch schon alles Wichtige genannt.
* die Speicherausrichtung
* die Art der Typen (z.B. AnsiChar und WideChar, aber nicht Char)

Arrays werden wie ihr enthaltener Typ ausgerichtet, außer bei "packed array",
und bei Records wie ihr größter Typ, außer bei "packed record".
Danke für die Infos.
Das ist wieder ein fall wo ich mir nur selber helfen kann..

Also nochmal Danke an alle die versucht haben für mich mitzudenken.

gruss
  Mit Zitat antworten Zitat
Antwort Antwort


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 10:52 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