AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi record mit Word-Feldern ohne MSB/LSB Vertauschung aus Datei lesen
Thema durchsuchen
Ansicht
Themen-Optionen

record mit Word-Feldern ohne MSB/LSB Vertauschung aus Datei lesen

Ein Thema von Christian Seehase · begonnen am 17. Jun 2013 · letzter Beitrag vom 19. Jun 2013
Antwort Antwort
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#1

record mit Word-Feldern ohne MSB/LSB Vertauschung aus Datei lesen

  Alt 17. Jun 2013, 19:17
Delphi-Version: 2006
Moin Zusammen,

irgendwie steh' ich gerade auf dem Schlauch

Ich möchte mit Hilfe von Records aus einer Binärdatei lesen.
Die Records erhalten gemischt Byte, Word und DWORD Felder.
Dummer Weise werden beim Einlesen aber die Bytes, z.B. von WORDS, vertauscht, so dass aus B0E1 in der Datei E1B0 im Record wird.
Bislang ist mir nichts eingefallen, wie ich das Problem beheben kann, denn ich möchte, nach Möglichkeit, darauf verzichten nur Bytes zu lesen und ggf. die Werte selber zusammenzubauen.

Ich habe es schon mit Varianten Records versucht, mit array of byte und der gewünschten Struktur als Variante, mit dem Lesen eines array of byte, dass ich mit Copy, Move, CopyMemory übertragen habe, aber auch mit absolute auf einer Variablen, die als Lesebuffer dienen soll. Immer das gleiche Ergebnis.

Hat irgendjemand eine Idee, wie ich das anstellen kann?

Vielen Dank im Voraus.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von x000x
x000x

Registriert seit: 21. Jan 2004
Ort: Bei Hamburg
308 Beiträge
 
Delphi XE2 Professional
 
#2

AW: record mit Word-Feldern ohne MSB/LSB Vertauschung aus Datei lesen

  Alt 17. Jun 2013, 21:42
Moin Chris,

so ganz kann ich es nicht verstehen, denn dann werden sie ja vermutlich anders in die Datei geschrieben als du liest

Eventuell hilft dir ja die funktion SwapDWord weiter?!
Peter
-= Gruss Peter =-
-= alias x000x =-
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#3

AW: record mit Word-Feldern ohne MSB/LSB Vertauschung aus Datei lesen

  Alt 18. Jun 2013, 07:50
Die Datei schein von einem Big-Endian Rechner/Programm erstellt worden zu sein. Ich bin mir nicht 100% sicher, ob es auch in der Intel-Welt Software gibt, die die Daten als Big-Endian schreibt (könnte sein, wg. Kompatibilität zu anderen Systemen, z.B. Mac) Wer ist der Ersteller der Dateien?

...denn ich möchte...darauf verzichten nur Bytes zu lesen und ggf. die Werte selber zusammenzubauen.
Egal, wie Du es anstellst: Irgendwer wird die Daten dann doch zusammenbauen. Bei SO haben sie diverse Lösungsansätze.

Wenn die Dateien wirklich von einem Big Endian kommen, ist die Welt in Ordnung, dein 'Problem' also 'as designed'. Lies die Daten ein und vertausche die Bytes.

Delphi-Quellcode:
MyRecord.Read(myStream);
MyRecord.Word1 := WordSwap(MyRecord.Word1);
MyRecord.Word2 := WordSwap(MyRecord.Word2);
MyRecord.DWord1 := DWordSwap(MyRecord.DWord1);
...

Geändert von Furtbichler (18. Jun 2013 um 07:52 Uhr) Grund: Link korrigiert
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#4

AW: record mit Word-Feldern ohne MSB/LSB Vertauschung aus Datei lesen

  Alt 18. Jun 2013, 10:42
Die Datei schein von einem Big-Endian Rechner/Programm erstellt worden zu sein. Ich bin mir nicht 100% sicher, ob es auch in der Intel-Welt Software gibt, die die Daten als Big-Endian schreibt (könnte sein, wg. Kompatibilität zu anderen Systemen, z.B. Mac)
Da gibt es jede Menge (Grafik/DTP/Sound/Video..).
Besonders nett sind die, die beide Formate verwenden.

@Christian
Ich denke es geht kein Weg am swapping vorbei.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: record mit Word-Feldern ohne MSB/LSB Vertauschung aus Datei lesen

  Alt 19. Jun 2013, 11:28
Moin Zusammen,

vielen Dank für die Rege Beteiligung.
Ich hatte gehofft irgendeine Konfigurationsmöglichkeit übersehen zu haben, die mir das Swapping erspart. Na gut, dann eben nicht
Dann muss ich mal testen, was effinzienter ist.
Bytes lesen und anschliessend auf passende Variablen verteilen und gleich die richtigen Strukturen lesen und anschliessend die Bytes vertauschen.

Wer ist der Ersteller der Dateien?
Es geht um die Verarbeitung von Transport Streams.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#6

AW: record mit Word-Feldern ohne MSB/LSB Vertauschung aus Datei lesen

  Alt 19. Jun 2013, 16:07
Hatte nicht himitsu für sein himXML was gebastelt, um records automatisch zu (de)serialisieren? Vielleicht kannst du das abwandeln.
  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 04:39 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