Entwickler-Ecke

Dateizugriff - MOFF Datei lesen


oles54 - Mo 25.12.23 12:59
Titel: MOFF Datei lesen
Hallo,
ich fange damit an, dass ich ein "Sonntags Programmierer" bin mit sehr marginalen Kenntnissen.
ich stoe im Moment auf folgendes Problem.
Ich wollte mir einen Konverter schreiben (Fertig Programm ist nicht zu finden)
fr eine Sony MOFF Datei (in eine Action Cam geschriebene Datei mit GPS Informationen).
Das Umrechnen der Koordinaten und bringen in einen GPX Format ist kein Problem, aber in der MOFF Datei sind mehrere eingebaute EOF Zeichen an den das Einlesen der Datei zusammenbricht. Wie kann ich die Zeichen eliminieren oder ignorieren und die ganze Datei einlesen.
Ich hoffe das Problem deutlich beschrieben zu haben und freue mich auf die Lsungsvorschlge.


Narses - Mo 25.12.23 15:04

Moin und :welcome: im Forum!

Zeig doch mal deinen bisherigen Code, auch wenn es nicht funktioniert. Es ist dann wesentlich einfacher nachzuvollziehen, was da passiert. Insbesondere, wenn man das MOFF-Format nicht kennt (so wie ich z.B.). :idea: ;)

cu
Narses


oles54 - Mo 25.12.23 16:24

Hier ein Ausschnitt einer MOFF Datei.

Dateiinhalt
1:
2:
3:
4:
5:
6:
7:
8:
9:
#MOFF8             M A H 0 6 3 1 3 . M P 4                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     Sd    %d    XP=                                                                                                                                                                                                                                                                    GRUP                      8                        8                                    INDX                         H                            INDX          P                              
              INDX                         BINA       h                  (        _                    `     'xq   A           `           (wy   
                 $     +yp   A           $     s     zt             s          ym                  y     #|n   -           y          "|r                   _(    zs             _(    6˿    yn              BINA        P                   (      _            eB     H        -                   2             (                   BINA       x                  (   #   _                    B                        B      *                     *     :         A               :     <vB                      <vB     4J                      4J     :M                    :M     1T                       1T     _        P              _     bp                     bp     s                     s     p          o          p     <                      <             2   e               \Ȩ        "            \Ȩ                               7                       7              I                                              y        T              y              Q                    I        M               I     go        n             go             52                   ud                     ud     "                    "     .U                     .U     S%                     S%    9                     9    wX                   wX    @/n                    @/n    w!~                     w!~    ᷟ                      ᷟ    {f                       {f    =        F                 =    "       \                BINA       h                  (        _                    `     'xq   A           `           (wy   
                 $     +yp   A           $     s     zt             s          ym                  y     #|n   -           y          "|r                   _(    zs             _(    6˿    yn              BINA        P                   (      _            eB     H        -                   2             (                   BINA       x                  (   #   _                    B                        B      *                     *     :         A               :     <vB                      <vB     4J                      4J     :M                    :M     1T                       1T     _        P              _     bp                     bp     s                     s     p          o          p     <                      <             2   e               \Ȩ        "            \Ȩ                               7                       7              I                                              y        T              y              Q                    I        M               I     go        n             go             52                   ud                     ud     "                    "     .U                     .U     S%                     S%    9                     9    wX                   wX    @/n                    @/n    w!~                     w!~    ᷟ                      ᷟ    {f                       {f    =        F                 =    "       \                BINA  @Sonygps/ver5.0/wgs-84/20230316083125.000/
@Sonygpsoption/0/20230316083126.000/20230316083126.000/
$GPGGA,083126.000,4633.2623,N,1148.1654,E,1,0,,,M,,M,,*41
$GPRMC,083126.000,A,4633.2623,N,1148.1654,E,0.31,,160323,,,A*44
$GPGGA,083127.000,4633.2622,N,1148.1650,E,1,0,,,M,,M,,*45
$GPRMC,083127.000,A,4633.2622,N,1148.1650,E,0.44,,160323,,,A*42

Alles was vor "@Sonygpsoption/0/" kommt ist fr mich uninteressant.
In dem Teil davor kommen schon die EOF Zeichen vor.

bis jetzt habe ich die Datei in ein Memofeld eingelesen - ohne Erfolg.
Dann mit readln auch bleibt am EOF hngen.

Moderiert von user profile iconTh69: Code-Tags hinzugefgt


Holgerx - Di 26.12.23 00:10

Hmm...

Bei den MOFF Dateien handelt es sich um BINR-Daten, diese kannst Du nicht in TEXT-Komponenten einlesen und verarbeiten, da dort immer wieder mal eine oder mehrere #0 enthalten sind.

Somit musst Du diese Dateien in einen Stream einlesen und dann diesen z.B. nach dem ersten '@Sonygps/' suchen..
Ab dieser Position kannst Du dann den Rest der Daten in eine Stringliste einlesen und verwenden.

Alternativ soll GPSBabel die Files konvertieren knnen.

Da das Format nicht offengelegt wurde, kannst Du die Dateien alternativ Byte fr Byte analysieren und interpretieren...

(So Spielereien habe ich frher fter gemacht, aber nur wenn genug Musterdateien vorhanden sind, z.B. Spielstnde ;)


oles54 - Di 26.12.23 01:15

Danke! Dann suche ich wie man eine binre Datei als stream ffnet.
Bei GPSbabel habe ich leider nichts gefunden


jaenicke - Di 26.12.23 14:26

TFileStream sollte helfen.