Seite 1 von 1

XPF Dateien korrupt / defekt???

Verfasst: Di, 03. Jul 2018 13:45
von ramses
Hi

ich schreibe in einer Steuerung den Anlagestatus resp. bestimmte Vars zu bestimmten Zuständen in eine XPF Datei.

Neuerdings kommt es immer öfters vor dass diese Datei vorhanden ist jedoch nur mit chr(0) gefüllt ist also keinen Inhalt hat.
Was bei laden "Resore from ...." zum Runtimeerror führt.

Kennt jemand dieses Problem?

Gruss Carlo

Re: XPF Dateien korrupt / defekt???

Verfasst: Di, 03. Jul 2018 13:48
von Wolfgang Ciriack
Ja, zerstörte xpf-Dateien habe ich auch schon gehabt, daher benutze ich sie (fast) gar nicht mehr.

Re: XPF Dateien korrupt / defekt???

Verfasst: Di, 03. Jul 2018 14:11
von Tom
Hallo, Carlo.

SAVE TO hat keinen Mechanismus für konkurrierenden Zugriff! Als wir das noch relativ intensiv genutzt haben, haben wir parallel Sperrtabellen verwaltet, um über das Locking dort Probleme beim möglicherweise gleichzeitigen Schreiben zu verhindern. Das hat auch ganz gut geklappt. Aber wir verwenden XPF nur noch in Ausnahmefällen für weniger wichtige Einstellungen, etwa irgendwelche letzten Auswahl in Dialogen oder so.

Ein zweites Ärgernis besteht darin, dass "Kein XPF-Format oder falsche Versionsnummer" für den Support keine sehr aussagekräftige Information ist, weil der Dateiname fehlt. Wir speichern deshalb bei jedem XPF-Zugriff den Namen der jeweiligen Datei in einer Get-Set-Funktion und übermitteln diesen an das Fehlersystem.

Re: XPF Dateien korrupt / defekt???

Verfasst: Di, 03. Jul 2018 16:18
von ramses
Hallo

nur der eine Prozess / Rechner benutzt diese eine Datei es ist auch immer der selbe Name und die Datei ist lokal auf C:\.... Es gibt kein "Mutiuser" Zugriff. Die Datei dient nur dazu beim PC Neustart den letzten Zustand der Anlage wieder in den Speicher zu laden ohne alle Stellglieder und Register erneut einzulesen/abzufragen.

Genau das heisst es im Fehlerfall: "Kein XPF-Format oder falsche Versionsnummer" die Datei enthält nur alles chr(0)

Ich werde nach einer anderen Lösung suchen. Das mit den xpf Dateien lief seit 2009 bis jetzt problemlos .....

Danke für eure Tips.

Gruss Carlo

Re: XPF Dateien korrupt / defekt???

Verfasst: Di, 03. Jul 2018 16:31
von Jan
Carlo,

direkt auf C:\, oder in einem Unterverzeichnis? Windows 10 mag das gar nicht, wenn man Dateien direkt in C:\ anlegt. Das könnte dann die Begründung dafür sein.

Jan

Re: XPF Dateien korrupt / defekt???

Verfasst: Di, 03. Jul 2018 16:39
von ramses
Hallo Jan

nein schon in einem Unterverzeichnis. Der komplette Pfad ist: c:\sps32\para_files\status\aregelung.xpf (User/Eigentümer = Admin/Vollzugriff )

Gruss Carlo

Re: XPF Dateien korrupt / defekt???

Verfasst: Di, 03. Jul 2018 18:23
von AUGE_OHR
löscht du die alte XPF bevor du es neu abspeicherst :?:

Re: XPF Dateien korrupt / defekt???

Verfasst: Di, 03. Jul 2018 19:55
von ramses
Nein. Immer nur den "SAVE" Befehl. 1-2 Mal pro Sek. Gespeichert wird der Clone einer Array Variable. Das hat eigentlich seit Jahren funktioniert.

Re: XPF Dateien korrupt / defekt???

Verfasst: Di, 03. Jul 2018 21:09
von AUGE_OHR
ramses hat geschrieben: Di, 03. Jul 2018 19:55 Nein. Immer nur den "SAVE" Befehl. 1-2 Mal pro Sek. Gespeichert wird der Clone einer Array Variable.
1 x Mal / Sec ... aber der CACHE ist default 10 Sec.

hast du HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Lanmanworkstation\Parameters

Code: Alles auswählen

FileInfoCacheLifetime
runter gesetzt ?
ramses hat geschrieben:Das hat eigentlich seit Jahren funktioniert.
aber das OS() hat sich die letzten Jahre geändert.

Re: XPF Dateien korrupt / defekt???

Verfasst: Di, 03. Jul 2018 22:30
von ramses
Hallo Jimmy

ja dieser Wert ist runtergesetzt. Jedoch liegt die Datei lokal, in einem nicht freigegebenen Ordner. Da nützt er vermutlich nicht viel....

Ich selbst vermute dass hier die auch schon beschriebene Problematik "create after erase" zuschlägt.

Gruss Carlo

Re: XPF Dateien korrupt / defekt???

Verfasst: Mi, 04. Jul 2018 3:14
von AUGE_OHR
wie wäre es mit umbenennen der XPF vor dem SAVE und löschen der XPF danach :?:

---

ist es wirklich so oft notwendig :shock:
auch wenn es nur paar KB sind kommt mit der Zeit doch einiges zusammen was eine SSD nicht mag [-X

:idea:
wie wäre es mit einer lokalen RAMDISK als Zwischenablage :!:

Re: XPF Dateien korrupt / defekt???

Verfasst: Mi, 04. Jul 2018 6:58
von ramses
Umbennen wäre auch eine Variante.

Weil ich jetzt schon eingreifen muss wird das ganze nun gleich richtig mit einer eigenen Datei gelöst die mit FOpen usw. bearbeitet wird. Damit habe ich alle mir jetzt bekannten Sorgen des OS hoffentlich im Griff.
ist es wirklich so oft notwendig
Ja. unbedingt.
auch wenn es nur paar KB sind kommt mit der Zeit doch einiges zusammen was eine SSD nicht mag
Die muss das mögen! Nein Spass bei Seite, es ist keine SSD verbaut.
wie wäre es mit einer lokalen RAMDISK als Zwischenablage

Das geht gar nicht.
Die "Statusdatei" ist dazu da den PC neu starten zu können usw. ohne beim Neustart des Steuerprogramms zuerst alle Daten aus der Anlage zusammen zu suchen ... Der Bus der Steueranlage ist alles andere als Schnell .....

Gruss Carlo

Re: XPF Dateien korrupt / defekt???

Verfasst: Mi, 04. Jul 2018 9:43
von Tom
Hallo, Carlo.

Das kann durchaus mit dem Caching zu tun haben, mit Virenscannern, Protokolländerungen oder ähnlichem. Aber eigenartig ist es schon.

Du könntest das Problem auch umgehen, indem Du das Array in ein Memofeld einer Tabelle schreibst, mit Var2Bin(). Beziehungsweise mit Str2Hex(Var2Bin()), wenn DBF/DBT im Einsatz sind. Und dann zurück umgekehrt. Was den Vorteil hätte, dass Du auf RLock(), DbCommit() usw. zugreifen könntest.

Re: XPF Dateien korrupt / defekt???

Verfasst: Mi, 04. Jul 2018 10:39
von ramses
Hallo Tom

das ist vermutlich das beste! Das ganze in eine Datenbank zu schreiben. Dass Array enthält alle Werte im Binärformat so dass alles in ein DBF Feld passt und keine DBT nötig wird.

Ich versuchs mal so mit einem neuen Thread der die Daten in eine DBF sichert.

Gruss Carlo

Re: XPF Dateien korrupt / defekt???

Verfasst: Mi, 04. Jul 2018 11:58
von brandelh
Beim speichern in ein tabellenfeld muss man neben der Feldlänge noch die eventuelle ANSI / OEM Codierung beachten.
Beim FOXDBE Treiber gibt es echte binäre Felder, da spielt das dann keine Rolle mehr.

Re: XPF Dateien korrupt / defekt???

Verfasst: Mi, 04. Jul 2018 13:14
von ramses
Hi


Binärdaten in DBF Felden speichen geht nicht!
ich wandle alles mit str2hex() in Hexstrings um der String wird so zwar doppelt so lang aber nur so lassen sich Binärwerte in DBF's speichern.

Gruss Carlo

Re: XPF Dateien korrupt / defekt???

Verfasst: Mi, 04. Jul 2018 13:23
von Jan
Carlo,

doch. FOXDBE hat ein Memofeld Typ "V" (statt sonst "M"). Das ist für Binärdaten da. Das meinte Hubert. Ich arbeite da z. B. mit, um da Bilder drin zu speichern. Klappt ganz hervorragend.

Aber es stimmt, die DBFDBE hat das Feld natürlich nicht.

Jan

Re: XPF Dateien korrupt / defekt???

Verfasst: Mi, 04. Jul 2018 20:53
von ramses
Hallo
da habe ich wohl zu kurz geantwortet ...

Ich arbeite mit der DBFNTX DBE oder Postgres auch noch die FOXDBE verwenden möchte ich nicht. Auch wenn diese einen Binären Feldtyp hat.
Deshalb habe einfach nur geschrieben "Binärdaten in DBF Feldern speichen geht nicht!"
Auch die Postgres hat Binäre Felder.
MIt Postgres meine ich natürlich natives Postgres nicht die Versuchs - PGDBE!!!

Gruss Carlo

Re: XPF Dateien korrupt / defekt???

Verfasst: Mi, 04. Jul 2018 21:30
von AUGE_OHR
wozu eine DBF wenn man einen HEX String auch als "normale" Datei abspeichern kann.

Code: Alles auswählen

FUNCTION Save2File(xdata)
LOCAL nHandle,nByte := 0 
   IF !EMPTY(xdata)
      nHandle := FCreate( "MySave.TXT", FC_NORMAL )
      nByte := FWrite( nHandle, VAR2BIN(xData) )
      FClose( nHandle ) 
  ENDIF 
RETURN IF(nbyte>0,.T.,.F.)

Re: XPF Dateien korrupt / defekt???

Verfasst: Mi, 04. Jul 2018 21:53
von Tom
Weil Du da das gleiche Problem wie in der hier beschriebenen Ausgangssituation bekommst, Jimmy. SAVE TO macht das gleiche.

Re: XPF Dateien korrupt / defekt???

Verfasst: Mi, 04. Jul 2018 22:21
von AUGE_OHR
Tom hat geschrieben: Mi, 04. Jul 2018 21:53 SAVE TO macht das gleiche.
was zu beweisen wäre da es bei Ramses ja Probleme macht.
also ruhig mal "native" versuchen was zumindest ein Rückgabewert hat.