Dateien sicher schreiben
Moderator: Moderatoren
- mikehoffmann
- Rekursionen-Architekt
- Beiträge: 133
- Registriert: Mo, 21. Sep 2015 16:22
- Hat sich bedankt: 1 Mal
- Danksagung erhalten: 18 Mal
Re: Dateien sicher schreiben
In meiner Welt, in der alle Betriebssystemobjekte auch zu solchen werden, sieht ein CreateFile-Einsatz z.B. so aus:
--- snip ---
*****************************************************************************
* Zeitstempel einer Datei abfragen *
*****************************************************************************
STATIC FUNCTION GetFileTimeStamp(fileName)
* RETURNS: Zeitpunkt-Stamp oder NIL, wenn Ermittlung nicht möglich
LOCAL file,fileTime
* Datei öffnen versuchen
file := CreateFile(fileName,GENERIC_READ,(FILE_SHARE_READ|FILE_SHARE_WRITE),NIL,OPEN_EXISTING)
* 0 abliefern, wenn die Datei nicht existiert
IF file == NIL
RETURN 0
ENDIF
* Zeit auslesen, NIL abliefern im Fehlerfall
IF .NOT. file:GetTime(,,@fileTime)
file:Close()
RETURN NIL
ENDIF
* Datei dichten
file:Close()
* Stamp berechnen und abliefern
RETURN StampFromFileTime(fileTime)
--- snap ---
Das als DllCall hinzukriegen, sollte ziemlich locker sein, denn außer dem Dateinamen und ein paar Konstanten braucht man nix. Das, was als Handle zurückkommt, ist dem gleichwertig, was FCreate() abliefert.
--- snip ---
*****************************************************************************
* Zeitstempel einer Datei abfragen *
*****************************************************************************
STATIC FUNCTION GetFileTimeStamp(fileName)
* RETURNS: Zeitpunkt-Stamp oder NIL, wenn Ermittlung nicht möglich
LOCAL file,fileTime
* Datei öffnen versuchen
file := CreateFile(fileName,GENERIC_READ,(FILE_SHARE_READ|FILE_SHARE_WRITE),NIL,OPEN_EXISTING)
* 0 abliefern, wenn die Datei nicht existiert
IF file == NIL
RETURN 0
ENDIF
* Zeit auslesen, NIL abliefern im Fehlerfall
IF .NOT. file:GetTime(,,@fileTime)
file:Close()
RETURN NIL
ENDIF
* Datei dichten
file:Close()
* Stamp berechnen und abliefern
RETURN StampFromFileTime(fileTime)
--- snap ---
Das als DllCall hinzukriegen, sollte ziemlich locker sein, denn außer dem Dateinamen und ein paar Konstanten braucht man nix. Das, was als Handle zurückkommt, ist dem gleichwertig, was FCreate() abliefert.
- AUGE_OHR
- Marvin
- Beiträge: 12909
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Dateien sicher schreiben
hi,
für den Hinweis von Michael bräuchtest du Zugriff auf das Handle der FCreate() Function.
... oder gibt den Tip doch einfach an Edgar weiter damit er es einbaut (wenn er es noch nicht hat)
Frage : bekommst du vom dem PDF Object ein Handle ?Jan hat geschrieben:Mein Verdacht ist, das es ein Caching-Problem gibt.
Das die PDF zum Zeitpunkt des Druckes noch nicht komplett auf die Festplatte geschrieben ist.
für den Hinweis von Michael bräuchtest du Zugriff auf das Handle der FCreate() Function.
... oder gibt den Tip doch einfach an Edgar weiter damit er es einbaut (wenn er es noch nicht hat)
gruss by OHR
Jimmy
Jimmy
- mikehoffmann
- Rekursionen-Architekt
- Beiträge: 133
- Registriert: Mo, 21. Sep 2015 16:22
- Hat sich bedankt: 1 Mal
- Danksagung erhalten: 18 Mal
Re: Dateien sicher schreiben
FlushFileBuffers ist zweite Wahl, weil Du es explizit tun musst, wenn rausgeschrieben werden soll. FILE_FLAG_NO_BUFFERING oderst Du beim CreateFile in den dwFlagsAndAttributes Parameter rein schon brauchst Du Dich um nichts mehr kümmern. Sähe bei mir so aus:
file := CreateFile(fileName,GENERIC_READ,(FILE_SHARE_READ|FILE_SHARE_WRITE),NIL,OPEN_EXISTING,FILE_FLAG_NO_BUFFERING)
file := CreateFile(fileName,GENERIC_READ,(FILE_SHARE_READ|FILE_SHARE_WRITE),NIL,OPEN_EXISTING,FILE_FLAG_NO_BUFFERING)
- AUGE_OHR
- Marvin
- Beiträge: 12909
- Registriert: Do, 16. Mär 2006 7:55
- Wohnort: Hamburg
- Hat sich bedankt: 19 Mal
- Danksagung erhalten: 46 Mal
Re: Dateien sicher schreiben
klar, verstandenmikehoffmann hat geschrieben:FlushFileBuffers ist zweite Wahl, weil Du es explizit tun musst, wenn rausgeschrieben werden soll.
Danke für den Hinweis =D>mikehoffmann hat geschrieben:FILE_FLAG_NO_BUFFERING oderst Du beim CreateFile in den dwFlagsAndAttributes Parameter rein schon brauchst Du Dich um nichts mehr kümmern. Sähe bei mir so aus:
file := CreateFile(fileName,GENERIC_READ,(FILE_SHARE_READ|FILE_SHARE_WRITE),NIL,OPEN_EXISTING,FILE_FLAG_NO_BUFFERING)
gruss by OHR
Jimmy
Jimmy
- Jan
- Marvin
- Beiträge: 14655
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Dateien sicher schreiben
... habe ich letzte Woche schon gemacht, ich warte noch auf Antwort von Edgar.AUGE_OHR hat geschrieben:... oder gibt den Tip doch einfach an Edgar weiter damit er es einbaut (wenn er es noch nicht hat)
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2517
- Registriert: Mi, 28. Jul 2010 17:16
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 77 Mal
Re: Dateien sicher schreiben
@Jan
hast du mit Edgar mal die Zukunft der Klasse geprüft?
Früher war da ja Quick-PDF die Engine, die aktuelle Quick-PDF Fassung verbietet die Verwendung in Tools zum weiterverkauf.
So ist es schon jetzt nicht mehr möglich die aktuelle Quick-PDF in Tools zu verwenden.
Cu Carlo
hast du mit Edgar mal die Zukunft der Klasse geprüft?
Früher war da ja Quick-PDF die Engine, die aktuelle Quick-PDF Fassung verbietet die Verwendung in Tools zum weiterverkauf.
Compiled applications only. You are not permitted to create your own PDF libraries, developer components, SDKs or toolkits using Quick PDF Library.
So ist es schon jetzt nicht mehr möglich die aktuelle Quick-PDF in Tools zu verwenden.
Cu Carlo
Valar Morghulis
Gruss Carlo
Gruss Carlo
- HaPe
- 1000 working lines a day
- Beiträge: 996
- Registriert: So, 15. Nov 2015 17:44
- Wohnort: 71665 Vaihingen-Enz
- Hat sich bedankt: 17 Mal
- Danksagung erhalten: 15 Mal
Re: Dateien sicher schreiben
Auch wenn es im Moment nichts bringt (außer die Hoffnung das irgendwann zu bekommen), Alaska möchte die VFP-Report-Engine (liegt ja im Quelltext vor) zusammen mit XFRX in Version 3.0 einbauen.
XFRX bietet zahlreiche Zielformate an wie PDF, DOCX, XLSX, HTML, Bitmaps usw..
Dann wäre diese Aufgabe ohne Zusatztools mit Xbase zu erledigen ...
Und ja, ich arbeite schon sehr lange mit XFRX und bin damit sehr zufrieden.
XFRX bietet zahlreiche Zielformate an wie PDF, DOCX, XLSX, HTML, Bitmaps usw..
Dann wäre diese Aufgabe ohne Zusatztools mit Xbase zu erledigen ...
Und ja, ich arbeite schon sehr lange mit XFRX und bin damit sehr zufrieden.
--
Hans-Peter
Hans-Peter
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2517
- Registriert: Mi, 28. Jul 2010 17:16
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 77 Mal
Re: Dateien sicher schreiben
Hans-Peter
das ist schön dass du eine Lösung auf der "Alaska-Schiene" gefunden hast.
Eine Reporting hätte doch schon lange zur Standard-Ausrüstung gehört. Nun kommt Sie viel, viel zu spät.
Ich glaube nicht dass Alaska eine Reporting-Engine für XBase++ aufbauen kann welche nur annähernd die Funktionen und den Umfang , Qualität und Zuverlässigkeit z.B. von List&Label erreichen kann. Das sagt doch schon die Logik, eine Alaska-Engine wird von wenigen benötigt, List&Label verwenden sehr sehr viele Plattformen, also stehen auch mehr Entwicklungsresourcen(Kohle) und Erfahrung zur Entwicklung zur Verfügung. Im Fall von List&Label integiert sich dies sehr einfach vollständig in die eigenen Projekte. Denkst du dass jemand der sich mit viel Arbeit seine ganzen Ausdrucke mit L&L gesteckt hat nochmals neu beginnt?
Cu Carlo
das ist schön dass du eine Lösung auf der "Alaska-Schiene" gefunden hast.
Eine Reporting hätte doch schon lange zur Standard-Ausrüstung gehört. Nun kommt Sie viel, viel zu spät.
Ich glaube nicht dass Alaska eine Reporting-Engine für XBase++ aufbauen kann welche nur annähernd die Funktionen und den Umfang , Qualität und Zuverlässigkeit z.B. von List&Label erreichen kann. Das sagt doch schon die Logik, eine Alaska-Engine wird von wenigen benötigt, List&Label verwenden sehr sehr viele Plattformen, also stehen auch mehr Entwicklungsresourcen(Kohle) und Erfahrung zur Entwicklung zur Verfügung. Im Fall von List&Label integiert sich dies sehr einfach vollständig in die eigenen Projekte. Denkst du dass jemand der sich mit viel Arbeit seine ganzen Ausdrucke mit L&L gesteckt hat nochmals neu beginnt?
Cu Carlo
Valar Morghulis
Gruss Carlo
Gruss Carlo
- HaPe
- 1000 working lines a day
- Beiträge: 996
- Registriert: So, 15. Nov 2015 17:44
- Wohnort: 71665 Vaihingen-Enz
- Hat sich bedankt: 17 Mal
- Danksagung erhalten: 15 Mal
Re: Dateien sicher schreiben
Hallo Carlo !
Ich hatte auch schon L&L verwendet.
Unter VFP war/ist XFRX jedoch wesentlich einfacher zu nutzen, wobei es ja nur ein Zusatz-Tool ist und keine Report-Engine.
Andererseits sind die Kosten von L&L nicht zu verachten ...
Es wäre bestimmt besser gewesen, wenn Alaska Combit mit ins Boot geholt hätte =D>
Ja, so ist es.Eine Reporting hätte doch schon lange zur Standard-Ausrüstung gehört. Nun kommt Sie viel, viel zu spät.
Nein, das wird keiner machen.Denkst du dass jemand der sich mit viel Arbeit seine ganzen Ausdrucke mit L&L gesteckt hat nochmals neu beginnt?
Ich hatte auch schon L&L verwendet.
Unter VFP war/ist XFRX jedoch wesentlich einfacher zu nutzen, wobei es ja nur ein Zusatz-Tool ist und keine Report-Engine.
Andererseits sind die Kosten von L&L nicht zu verachten ...
Es wäre bestimmt besser gewesen, wenn Alaska Combit mit ins Boot geholt hätte =D>
Zuletzt geändert von HaPe am Mo, 30. Jan 2017 12:50, insgesamt 1-mal geändert.
--
Hans-Peter
Hans-Peter
- Jan
- Marvin
- Beiträge: 14655
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Dateien sicher schreiben
Hallo Carlo,
Alaska will da nix neu entwickeln. Die wollen den Report-Generator von VFP übernehmen, dessen Code MS wohl versehentlich öffentlich gestellt hat. Und da Xbase++ ja VFP-Code einfach so in Xbase++-Code umsetzen kann, ist das eine Leichtigkeit [/ironie off]. Die müssen nur erstmal die drei großen Projekte aus dem Wettbewerb vom letzten Jahr umsetzen, dann geht das mit dem Report-Generator weiter.
Aber ich stimme Dir zu, das eine Anwendung wie L&L nicht einfach zu schlagen sein wird. Ich denke aber auch, das es darum nicht geht. Sondern für den Alltagsgebrauch etwas an die Hand zu geben,d as zur Sprache dazu gehört. Wenn jemand was spezielleres braucht, kann der immer noch L&L kaufen. Ist ja mit vielen Modulen so - Standard ist drin, mehr kann man gerne kaufen bei Drittanbietern.
Jan
Alaska will da nix neu entwickeln. Die wollen den Report-Generator von VFP übernehmen, dessen Code MS wohl versehentlich öffentlich gestellt hat. Und da Xbase++ ja VFP-Code einfach so in Xbase++-Code umsetzen kann, ist das eine Leichtigkeit [/ironie off]. Die müssen nur erstmal die drei großen Projekte aus dem Wettbewerb vom letzten Jahr umsetzen, dann geht das mit dem Report-Generator weiter.
Aber ich stimme Dir zu, das eine Anwendung wie L&L nicht einfach zu schlagen sein wird. Ich denke aber auch, das es darum nicht geht. Sondern für den Alltagsgebrauch etwas an die Hand zu geben,d as zur Sprache dazu gehört. Wenn jemand was spezielleres braucht, kann der immer noch L&L kaufen. Ist ja mit vielen Modulen so - Standard ist drin, mehr kann man gerne kaufen bei Drittanbietern.
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- Jan
- Marvin
- Beiträge: 14655
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Dateien sicher schreiben
nach Willingen wird das einfacher werden, weil DS da jedem Teilnehmer eine Klasse an die hand geben wird, mit der man sehr einfach auf L&L zugreifen kann. Die dann auch zum Standard-Lieferumfang von L&L gehören wird, damit alle Xbaseler was davon haben.HaPe hat geschrieben:Es wäre bestimmt besser gewesen, wenn Alaska Combit mit ins Boot geholt hätte =D>
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
- HaPe
- 1000 working lines a day
- Beiträge: 996
- Registriert: So, 15. Nov 2015 17:44
- Wohnort: 71665 Vaihingen-Enz
- Hat sich bedankt: 17 Mal
- Danksagung erhalten: 15 Mal
Re: Dateien sicher schreiben
Hallo Jan !
Gut dass ich mich angemeldet habe... nach Willingen wird das einfacher werden, ...
--
Hans-Peter
Hans-Peter
- Jan
- Marvin
- Beiträge: 14655
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Dateien sicher schreiben
Hallo Carlo,
nach Deiner Bemerkung habe ich mal Edgar gefragt. Der hat eine schriftlich bestätigte Vereinbarung mit Debenu, das er das so machen darf.
Jan
nach Deiner Bemerkung habe ich mal Edgar gefragt. Der hat eine schriftlich bestätigte Vereinbarung mit Debenu, das er das so machen darf.
Jan
ramses hat geschrieben:@Jan
hast du mit Edgar mal die Zukunft der Klasse geprüft?
Früher war da ja Quick-PDF die Engine, die aktuelle Quick-PDF Fassung verbietet die Verwendung in Tools zum weiterverkauf.Compiled applications only. You are not permitted to create your own PDF libraries, developer components, SDKs or toolkits using Quick PDF Library.
So ist es schon jetzt nicht mehr möglich die aktuelle Quick-PDF in Tools zu verwenden.
Cu Carlo
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
-
- Der Entwickler von "Deep Thought"
- Beiträge: 2517
- Registriert: Mi, 28. Jul 2010 17:16
- Hat sich bedankt: 12 Mal
- Danksagung erhalten: 77 Mal
Re: Dateien sicher schreiben
@Jan
Das ist doch super.
Zum Ursprünglichen Problem: Nimm doch mal ein Tool welches dir alle geöffneten Dateien anzeigt .... so siehst du ob eine noch offene Datei das Problem macht...
Cu Carlo
Das ist doch super.
Zum Ursprünglichen Problem: Nimm doch mal ein Tool welches dir alle geöffneten Dateien anzeigt .... so siehst du ob eine noch offene Datei das Problem macht...
Cu Carlo
Valar Morghulis
Gruss Carlo
Gruss Carlo