PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Dateiformat .dat dateien



ratalert
29.04.2009, 10:37
Hallo zusammen,

ich wollte die Inhalte der .dat dateien vom FMS32(pro) mit einem selbstgeschriebenen Programm verarbeiten, jedoch verstehe ich nicht was diese Dateien für ein seltsames Format haben.

1.) Sind das Tabs zwischen den Einträgen, wenn ja wie kann ich die zählen
2.) Warum sind da ein haufen komischer Sonderzeichen?

Bspw.:
635011011/10/1 ELW 

Alex22
29.04.2009, 11:12
Hallo zusammen,

ich wollte die Inhalte der .dat dateien vom FMS32(pro) mit einem selbstgeschriebenen Programm verarbeiten, jedoch verstehe ich nicht was diese Dateien für ein seltsames Format haben.

1.) Sind das Tabs zwischen den Einträgen, wenn ja wie kann ich die zählen
2.) Warum sind da ein haufen komischer Sonderzeichen?

Bspw.:
635011011/10/1 ELW 

Dieses Sonderzeichen wie du es nennst, entsteht meißtens dann wenn dein Editor das ursprüngliche Zeichen nicht richtig deuten kann.
Daher können vielleicht auch die Abstände kommen.

Ralf
29.04.2009, 11:29
Hallo,


@ratalert

in dem Thread "Übergabe an Access" hab ich mal was zu Deinem Vorhaben gepostet, vielleicht kannst Du es gebrauchen.

Gruß Ralf

ratalert
29.04.2009, 18:14
ich habs versucht mit UniRed, der Editor kann verschiedenste Fileformate lesen aber keines passt...

ratalert
29.04.2009, 18:29
@Ralf:

ich habe gefunden was du damals gepostet hast. nur bin ich was vb angeht echt schlecht, kannst du mir bitte kurz sagen was du hier beim dateieinlesen machst?


Dateiname = "C:\Programme\Heirue-Soft\FMS32-Pro\Fahrzeug.dat"
Satzlaenge = 515
Dateiposition = 1

Set FMS = CurrentDb.OpenRecordset("Fahrzeuge")

Open Dateiname For Binary As 1
Dateilaenge = LOF(1)
Saetzeanzahl = Dateilaenge / Satzlaenge

For Zaehler = 1 To Saetzeanzahl
Eingang = String(Satzlaenge, " ")
Get 1, Dateiposition, Eingang
Dateiposition = Dateiposition + Satzlaenge
FMS.AddNew
FMS!Kennung = Left$(Eingang, 8)
FMS!Rufname = Mid$(Eingang, 9, 30)
FMS!Bezeichnung = Mid$(Eingang, 39, 40)
FMS.Update
Next Zaehler

Close 1
FMS.Close
Set FMS = Nothing

Und eine Tabelle "Ton5" mit den Feldern "Tonfolge" und "Klartext"

Dim Dateiname As String
Dim Dateilaenge As Long
Dim Satzlaenge As Long
Dim Saetzeanzahl As Long
Dim Dateiposition As Long
Dim Zaehler As Long
Dim Eingang As String
Dim FMS As DAO.Recordset

Dateiname = "C:\Programme\Heirue-Soft\FMS32-Pro\TON5.dat"
Satzlaenge = 323
Dateiposition = 1

Set FMS = CurrentDb.OpenRecordset("Ton5")

Open Dateiname For Binary As 1
Dateilaenge = LOF(1)
Saetzeanzahl = Dateilaenge / Satzlaenge

For Zaehler = 1 To Saetzeanzahl
Eingang = String(Satzlaenge, " ")
Get 1, Dateiposition, Eingang
Dateiposition = Dateiposition + Satzlaenge
If Left$(Eingang, 1) < "9" Then
FMS.AddNew
FMS!Tonfolge = Left$(Eingang, 5)
FMS!Klartext = Mid$(Eingang, 6, 44)
FMS.Update
End If
Next Zaehler

Close 1
FMS.Close
Set FMS = Nothing

Ralf
29.04.2009, 23:24
@ratalert

Hallo,

ich weiß ja nicht, in welcher Programmiersprache Du arbeitest und in welchem Format Du die Daten speichern willst, mein Beispiel schreibt die Daten in eine Tabelle einer Access-Datenbank.

Die DAT-Dateien haben kein Satzendezeichen, sondern sind fortlaufend geschrieben. In der Fahrzeug.dat belegt ein Fahrzeug 515 Zeichen, dann fängt ein neues Fahrzeug an.

::Dateiname = "C:\Programme\Heirue-Soft\FMS32-Pro\Fahrzeug.dat"
::Satzlaenge = 515
::Dateiposition = 1

Öffnen der Tabelle "Fahrzeuge" in der akt. Datenbank

::Set FMS = CurrentDb.OpenRecordset("Fahrzeuge")

Öffnen der Fahrzeug.dat, LOF liest die Länge (Anzahl Zeichen) der Datei, geteilt durch 515 ergibt die Anzahl der Sätze (Fahrzeuge)

::Open Dateiname For Binary As 1
::Dateilaenge = LOF(1)
::Saetzeanzahl = Dateilaenge / Satzlaenge

Eine Schleife mit Anzahl der Fahrzeuge

::For Zaehler = 1 To Saetzeanzahl

Die Var. Eingang wird mit 515 Leerzeichen belegt

::Eingang = String(Satzlaenge, " ")

Jetzt werden 515 Zeichen geholt

::Get 1, Dateiposition, Eingang

In der Tabelle "Fahrzeuge" wird ein neuer Satz angefügt

::FMS.AddNew

In das Feld "Kennung" der Tabelle "Fahrzeuge" werden die linken 8 Zeichen aus Fahrzeug.dat geschrieben.

::FMS!Kennung = Left$(Eingang, 8)

In das Feld "Rufname" werden 30 Zeichen ab Pos. 9 geschrieben.

::FMS!Rufname = Mid$(Eingang, 9, 30)

In das Feld "Bezeichnung" werden 40 Zeichen ab Pos. 39 geschrieben.

::FMS!Bezeichnung = Mid$(Eingang, 39, 40)

Die Tabelle "Fahrzeuge" wird endgültig geschrieben

::FMS.Update

In der Fahrzeug.dat wird der Zeiger 515 Zeichen weitergeschoben

::Dateiposition = Dateiposition + Satzlaenge

und das Spiel beginnt von vorne

::Next Zaehler

In der Fahrzeug.dat ist noch mehr gespeichert, z. B. der letzte Status mit Datum und Uhrzeit, aber das habe ich nicht berücksichtigt, weil ich es nicht brauche.

Man muß natürlich nicht Access verwenden, nach gleichem Schema kann man auch TXT oder CSV erzeugen.

Gruß Ralf

ratalert
30.04.2009, 02:59
danke für die aufschlüsselung. ist dein vb script leicht so abänderbar dass es aus fahrzeuge.dat und 5ton.dat eine kommerseperierte csv erzeugen kann?

Ralf
30.04.2009, 18:55
Natürlich geht das auch, nur den "Schreiben-Teil" anpassen.

Aber wenn Du Excel hast, lade Dir hier aus dem Forum das Programm e!fms-pro runter. Damit kannst Du DAT-Dateien in Excel öffnen und entsprechend speichern. Das liest auch die Daten aus, die ich nicht berücksichtigt habe.

Gruß Ralf

ratalert
14.07.2009, 19:09
Hi,

für FMS und ZVEI hab ich das jetzt hingebracht aber für POGSAG noch nicht.
Weiss da jemand wie's zu lesen ist?

Viele Grüße,
ratalert