[Gelöst] File.Open wird vom Betriebssystem verweigert

11. Juli 2012 11:02

Hi zusammen,

ich möchte eine kleine Log-Datei erstellen die einfach nur ein Timestamp und ein Verschlüsselten Datensatz beinhält.
dazu hab ich mir folgendes geschrieben.

Code:
logfile.CREATE('C:\temp\log.txt');
logfile.CREATEOUTSTREAM(OutStreamObj);

OutStreamObj.WRITE(FORMAT(TIME));
OutStreamObj.WRITETEXT(';');
OutStreamObj.WRITE(eingabe);

OutStreamObj.WRITETEXT();

logfile.CLOSE;


das klappt soweit super...leider wird das überschrieben wenn ich was neues reinschicken möchte.

folgender versuch:
Code:
logfile.OPEN('C:\temp\log.txt');
logfile.CREATEOUTSTREAM(OutStreamObj);

OutStreamObj.WRITE(FORMAT(TIME));
OutStreamObj.WRITETEXT(';');
OutStreamObj.WRITE(eingabe);

OutStreamObj.WRITETEXT();

logfile.CLOSE;


gibt mir folgenden Fehler zurück:
"Das Betriebssystem erlaubt Ihnen den Zugriff auf die Datei C:\temp\log.txt nicht.
Prüfen Sie bitte Typ und Attribute der Datei."

Wo liegt Berechtigungstechnisch der Unterschied zwischen CREATE und OPEN?

Danke schonmal
Ciao
OcchiX
Zuletzt geändert von OcchiX am 11. Juli 2012 11:54, insgesamt 2-mal geändert.

Re: File.Open wird vom Betriebssystem verweigert

11. Juli 2012 11:25

So weit ich weiß, kann man mit Streams ein File nicht öffnen und fortschreiben. Zumindest habe ich das nie hinbekommen und nehme daher den Weg über das File ohne einen Stream.

Die Fehlermeldung rührt daher, dass Open ein File erstmal zum Lesen öffnet. Beim Schreiben gibt's dann einen Fehler, wenn man es nicht in den Writemode setzt.

So müsste es klappen:
Code:
logfile.TEXTMODE(TRUE);
logfile.WRITEMODE(TRUE);
logfile.OPEN('C:\temp\log.txt');
logfile.SEEK(logfile.LEN);
Logfile.WRITE(STRSUBSTNO('%1;%2',FORMAT(TIME),eingabe));
logfile.CLOSE;

Re: File.Open wird vom Betriebssystem verweigert

11. Juli 2012 11:35

Hi McClane,

der direkte weg ohne OutStream funktioniert :-)
Vielen Dank

Ciao
OcchiX