Allgemeine Fragen zur PROFAN Programmierung
Views (Heute): 240964 (2400)
  Suchen
 Zurück zur Übersicht
 AutorThema: dBase-Dateien
Dietmar Horn
Datum:08.08.02 19:28 Antwortenals Email verschicken (MMJ-Hoyerswerda@gmx.de) 


Hallo,

weiß jemand, wie man bereits vor dem Öffnen einer dBase-Datei feststellen kann, ob es sich wirklich um eine dBase-Datei handelt? Nur die Extension .dbf möchte ich dafür nicht als Kriterium benutzen, weil man dBase-Dateien ja auch willkürliche Extensionen verpassen kann.

Hintergrund für meine Frage: Wenn der Anwender mit dem LoadFile-Dialog eine Nicht-dBase-Datei wählt, stürzt das Programm bei dbopen unweigerlich ab, wenn es sich um keine dBase-Datei handelt.

Danke im voraus für Hinweise.

Profan² 6.6 / Win 98

MfG
Dietmar


Gerhard Putschalka
Datum:08.08.02 20:01 Antwortenals Email verschicken (g.putschalka@utanet.at) 


Hallo Dietmar,
Du könntest folgendes versuchen:
von der betreffenden Datei mit Blockread 12 Bytes in eine Bereichsvariable (z.B. Ar#) einlesen.
und auf den Stellen:
  Anzahl&    = @Long(ar#,4)
  Satzlänge& = @Word(Ar#,10)
  Vorspann&  = @Word(Ar#,8)


sind obige Informationen.
Wenn Du nun die Anzahl der Sätze mit der Satzlänge multiplizierst und dazu den Vorspann addierst erhältst Du die Dateilänge. Eine Stelle muß noch dazugerechnet werden, weil die Datei normalerweise mit einem "Dateiende-Zeichen" abgeschlossen wird.
Mit diesem errechneten Wert mußt Du vergleichen ob dies mit der Dateigröße (Funktion @FileSize) übereinstimmt.
Mfg.
Gerhard.


Dietmar Horn
Datum:09.08.02 16:36 Antwortenals Email verschicken (MMJ-Hoyerswerda@gmx.de) 


Danke, klappt prima!

MfG
Dietmar


Gerhard Putschalka
Datum:10.08.02 14:06 Antwortenals Email verschicken (g.putschalka@utanet.at) 


Hallo Dietmar,
es gibt noch weitere Möglichkeiten, die beim dbOpen einen Absturz bringen können.
Ich habe auf meiner HP

http://members.telering.at/g.putschalka/index.html

unter Prozeduren (Includes) eine Prozedur CheckDBF, die weitere Prüfungen durchführt.
Mfg
Gerhard.


Gerhard Putschalka
Datum: 10.08.02 16:38 Antwortenals Email verschicken (g.putschalka@utanet.at) 


Hallo,
eine Korrektur, weil der Link falsch war.
http://members.telering.at/g.putschalka/index.html
so sollte es funktionieren.


 Zurück zur Übersicht