Am 11.04.2014 20:28, schrieb Achim Pabel:
Warum setzt Dein Code der in das CSV-File hinein schreiben will
nicht einfach eine leere Datei gleichen Namens nur mit einem ".lock"
als Surfix dahinter (Bsp: YXName.csv.lock ) und löscht dann das
Lock-File, wenn die Schreibaktion beendet ist ?

Gibt es das Lock-File, kann nur von anderen Threads oder Forks die
CSV-Datei nur gelesen werden.

Gruß Achim
Nein, nein nein.
Ich schreibe händisch die 'sets' in das csv-file und mein Programm soll das dann auslesen. Deswegen habe ist das csv geöffnet und will dann beobachten, was daraus gemacht wird.
Und das Lesen scheitert dann, wenn LO :(
Ja das lock-file ( .~lock.Name.csv# ) gibt es!
gooly

-------

Am Freitag, 11. April 2014, 20:09:24 schrieb gooly:
Am 11.04.2014 18:04, schrieb Robert Großkopf:
Hallo Gooly,

kann ich mit LO ein csv-File 'Shared-Read' öffnen (dass andere
Programme auch das File öffnen und lesen können, obwohl es in
LO geöffnet ist)?

Ich habe das gerade einmal getestet: CSV-Datei in LO-Base (als
eingebundene Texttabelle) geöffnet, dann noch in Calc und in
einem einfachen Textprogramm (KWrite) geöffnet.

Hmm,
mein Programm möchte das csv-file öffnen mit den
Win-Api-Funktionen. Also I öffne das csv-file in LO(Version
3.6.7.2 (Build ID: e183d5b) save Version) und dann in meinem
Programm mache ich:

#import "kernel32.dll"
//http://msdn.microsoft.com/en-us/library/windows/desktop/aa36546
7%28v=vs.85%29.aspx ...
        int wHdl = CreateFileW(fName, GENERIC_READ, WinFILE_SHARE_READ,
WinNULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, WinNULL);
        if ( wHdl == INVALID_HANDLE ) {
                Print("ERROR Win32: Invalid Handle ",getWinErrors(),"
",addErr); SetUserError( ERR_FILE_INVALID_HANDLE ); return("");
        }

und erhalte als Fehlermeldung:

ERROR Win32: Invalid Handle  ERROR_SHARING_VIOLATION ReadCsvFile:
1834 ( #define ERROR_SHARING_VIOLATION 32 // (0x20) The process
cannot access the file because it is being used by another
process. )

Das mit der Integrität ist mir klar! In meinem Fall ist csv
offen, weil ich etwas geändert habe und das ich jetzt im anderen
Programm überprüfen will...

Das größte Problem ist wohl nachher eine Integrität der Datei
hin zu bekommen. Beim Speichern in Calc wurde ich zwar
gewarnt, dass ein anderes Programm die Datei geändert hätte -
die Änderungen aus Base waren dann verloren, wurden aber in
der Base-Tabelle munter weiter angezeigt. KWrite zeigt mit
einer Meldung jede Dateiänderung durch ein anderes Programm
an, so dass ich die neueste Version laden kann.

Da gibt es meines Wissens nirgendwo eine Schutzmöglichkeit, die
es anderen Programmen verbietet, nicht nur lesend, sondern
auch schreibend auf *.csv-Dateien zuzugreifen.

Problem wird also sein, dass gar kein Schreibschutz da ist und
bei unbedachtem Arbeiten die Datenintegrität der Datei nicht
mehr gewährleistet ist.

Gruß

Robert



--
Liste abmelden mit E-Mail an: [email protected]
Probleme? 
http://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: http://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: http://listarchives.libreoffice.org/de/users/
Alle E-Mails an diese Liste werden unlöschbar öffentlich archiviert

Antwort per Email an