3.5: File.open/write/read/close Datei auf Desktop Speichern

MW22

Level-1
Beiträge
40
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

ich versuche mich gerade daran, eine Text/csv Datei auf dem Desktop speichern zu wollen.

Beim 1. Schritt datei öffnen hänge ich schon, da er keine Pfad auf meinen Desktop akzeptiert.
Geht das nicht oder was mache ich falsch?

Mein Code sieht wie folgt aus:

Open_0 : file.open;

Open_0(
xExecute:= xOpen,
xDone=> xOpenDone,
xBusy=> ,
xError=> ,
sFileName:= sName,
eFileMode:= FILE.MODE.MAPPENDPLUS,
xExclusive:= ,
eError=> ,
hFile=>hFile );

wenn ich unter sName 'C:\Users\MW\Desktop\CSV\CSV_Datei' eintrage funktioniert es nicht.
Dabei wenn ich einfach nur 'Test' eintrage gehts.

bei eFileMode habe ich auch andere Modi getestet ohne erfolg.

MFG MW22
 
Rechteproblem beim in den Desktop eines Users zu schreiben?
Alternativ: einen Ordner "C:\CSV" anlegen und die csv-Datei in diesen Ordner speichern, und im Desktop des Users einen Link auf "C:\CSV" anlegen

Harald
 
Ja der Ordner
Und der Ordner CSV existiert schon auf dem Desktop?
Ja der Ordner wurde schon angelegt.

Ich vermute auch eher ein Rechteproblem und würde wie von Harald bereits vorgeschlagen einen eigenen Versuchsordner direkt unter C:\ anlegen.
Habe ich versucht, leider ohne Erfolg.

Ich habe auf dem Rechner Adminrechte von daher glaube ich, es liegt an was anderem.

Könnte es vielleicht auch daran liegen, dass ich nur mit einer Simulierten runtime arbeite?

der Pfad, wo die derzeitigen Files abgelegt werden ist folgender: C:\Windows\SysWOW64
Ist dies normal?
 
... der Pfad, wo die derzeitigen Files abgelegt werden ist folgender: C:\Windows\SysWOW64
Ist dies normal?
Das könnte man ausprobieren und notfalls zum Normalfall deklarieren ... :unsure:Ich habe - wie immer keine Ahnung.
Könnte es vielleicht auch daran liegen, dass ich nur mit einer Simulierten runtime arbeite?
Habe aber hier im Forum schon des öfteren aufgeschnappt, dass die Schreibweisen für den Pfad häufig abweichen von dem, was man unter Windows (oder Excel) kennt bzw. gewohnt ist.

Darfst/kannst Du - wenn es nicht als RunTime ausgeführt wird - vielleicht gar keinen Ordner namens Desktop anlegen? Ein anderer OdnerName sollte möglich sein.
 
Darfst/kannst Du - wenn es nicht als RunTime ausgeführt wird - vielleicht gar keinen Ordner namens Desktop anlegen?
Der Ordner "Desktop" wird schon existieren - jeder Windows-User hat einen eigenen.

wenn ich unter sName 'C:\Users\MW\Desktop\CSV\CSV_Datei' eintrage funktioniert es nicht.
Dabei wenn ich einfach nur 'Test' eintrage gehts.
Dann trage doch einfach 'Test' ein und Problem erledigt... ;) :ROFLMAO:
Wo wird denn die Datei 'Test' angelegt?

Musst Du vielleicht bei Codesys als Pfadtrennzeichen den Vorwärts-Schrägstrich '/' anstatt Backslash '\' verwenden? Also 'C:/Users/MW/Desktop/CSV/CSV_Datei' ?

Tippfehler? Kannst Du mit dem Windows Explorer den Ordner "C:\Users\MW\Desktop\CSV" öffnen (den Pfad in die Adresszeile kopieren)?
Gibt es in dem Ordner "C:\Users\MW\Desktop\CSV" vielleicht schon einen Ordner "CSV_Datei"? Oder eine schreibgeschützte Datei "CSV_Datei"?
Probiere mal einen anderen Dateiname aus: 'C:\Users\MW\Desktop\CSV\testxyz.txt'
Oder lege auf Deinem Desktop im Ordner "CSV" manuell eine Datei "test.txt" an und versuche diese Datei 'C:\Users\MW\Desktop\CSV\test.txt' zu öffnen.

Werte mal den FB-Output eError aus, das wird sicher mehr helfen als "funktioniert nicht".

PS: gewöhne Dir mal an, bei Dateinamen generell auch eine Dateinamenerweiterung am Ende zu vergeben (.csv, .txt, ...). Und bei Ordnern keine Dateinamenerweiterung.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
PS: gewöhne Dir mal an, bei Dateinamen generell auch eine Dateinamenerweiterung am Ende zu vergeben (.csv, .txt, ...). Und bei Ordnern keine Dateinamenerweiterung.
Ich glaube, die wenigsten (von uns) werden auf die Idee kommen, OrdnerNamen mit "Extension" anzulegen, Harald.
Aber unter Windows ist es durchaus (und meines Wissens) problemlos möglich und es wird auch gelegentlich davon Gebrauch gemacht.
Will man eine Routine schreiben, dann finde ich, sollte die auch OrdnerNamen mit Extension verkraften können, d.h. die Routine sollte nicht ausflippen, wenn sie über so etwas stolpert.
Geht es aber "nur" darum, ein StyleGuide für die Vergabe von Ordner-/Datei- (und Variablen-)Namen in die Welt zu setzen, gebe ich Dir allerdings Recht. Es ist ja z.B. auch sehr empfehlenswert (und zweckmässig), keine Leerzeichen in Datei- alias OrdnerNamen (und auch in VariablenNamen) zu benutzen, sondern ggfs den eigens für diesen (behaupte ich einfach mal so) Zweck erfundenen Unterstrich.

PS:
Welches Pfadtrennzeichen auch immer das jeweils korrekte ist ... ich sehe immer wieder mal einen von zwei Fehlern beim Zusammensetzen von Pfad- und DateiName:
- die einen vergessen, dass dazwischen auch dieses TrennZeichen gehört und
- die anderen denken daran, aber sie laufen Gefahr, dies überzukompensieren, so dass im Endeffekt plötzlich zwei dieser Trennzeichen unmittelbar aufeinander folgen.
 
Dann trage doch einfach 'Test' ein und Problem erledigt... ;) :ROFLMAO:
Wo wird denn die Datei 'Test' angelegt?
Wie oben schon erwähnt wird diese unter dem Pfad C:\Windows\SysWOW64 angelegt.
Musst Du vielleicht bei Codesys als Pfadtrennzeichen den Vorwärts-Schrägstrich '/' anstatt Backslash '\' verwenden? Also 'C:/Users/MW/Desktop/CSV/CSV_Datei' ?
habe ich soeben getestet, leider ohne Erfolg.

Tippfehler kann ich auch ausschließen, da ich den Pfad direkt kopiert habe. Ich habe auch nochmals nen neuen Ordner angelegt. Zuerst ohne Datei anschließend mit selbst angelegter Datei. Beides hat nicht funktioniert.

Der FB bringt folgende Meldung:

"FILE_OPERATION_DENIED repräsentiert den Rohwert '5115' "


Was ich mir noch vorstellen könnte ist, dass es mit einer Simulierten Runtime nicht funktioniert und nur mit einer Realen CPU.
Leider kann ich dies erst in ca 8 Wochen testen.
 
Ich würde dir einfach mal das lauffähige Beispielprojekt aus dem CODESYS Forge empfehlen. Vielleicht hilft dir das etwas weiter um evtl. Benutzerrechteprobleme o. Programmierfehler ausschließen zu können.

File Utilities

Alternativ gibt es meines Wissens auch einige Beispiele hier im Forum.

Nicht dass ich wüsste. Bin leider auch nicht ganz glücklich mit der Hilfe von Codesys. Steht teilweise
echt zu wenig bis nichts aussagekräftiges drinne.

In der Bibliotheksbeschreibung von "CAA File Library Documentation" ist doch alles benötigte vorhanden? Dort existieren ebenfalls weitere Codesnippets, die das Handling dieser Bibliothek aufzeigen
 
Zuviel Werbung?
-> Hier kostenlos registrieren
es ist nicht die 5115 sondern die 5114 welche auch in der Hilfe steht
Na, wie ich von Anfang an vermutet hatte, wird es ein Rechteproblem sein.
Mach doch den Pfad einstellbar, je nachdem ob das Programm auf der realen CPU läuft oder in der Simulation. So mache ich es z.B. für die Simulation von HMI Panelen.

Rechteproblem beim in den Desktop eines Users zu schreiben?
Alternativ: einen Ordner "C:\CSV" anlegen und die csv-Datei in diesen Ordner speichern, und im Desktop des Users einen Link auf "C:\CSV" anlegen
Oder hast Du mal diesen Vorschlag ausprobiert?

Harald
 
Ich würde dir einfach mal das lauffähige Beispielprojekt aus dem CODESYS Forge empfehlen. Vielleicht hilft dir das etwas weiter um evtl. Benutzerrechteprobleme o. Programmierfehler ausschließen zu können.

File Utilities
Also das hat funktioniert. Das heißt, die alten Funktionen gehen und die neuen Bausteine nicht?

mit "sysfile" open write... hatte ich in 2.3 gearbeitet wobei ich den Code von einem Wago Tutorial aus youtube einfach
übernommen hatte.
Leider war der Code nach dem hochrüsten unbrauchbar und deshalb hatte ich mich entschieden alles neu zu machen.
Naja dann werde ich wohl doch mit den alten Bausteinen arbeiten.
 
Zurück
Oben