# String in eine .txt schreiben/öffnen



## Conroe (18 November 2010)

Hi Leute,
ich habe ein Problem mit der  SysLibFile.lib. Es soll der Text 'Hallo Welt' in die Datei C:\test.txt  geschrieben werden, die Datei habe ich bereits erstellt und sie ist  leer. Leider klappt das nicht, bekomme immer von hFile eine 0  zurück(Fehler) müsste ja eigentlich '-1' beim Zielsystem CoDeSys SP RTE  (lautDoku).

Komme einfach nicht weiter, für Eure Hilfe wäre ich sehr dankbar.
Viele Grüße@all!

 IF speichern THEN
(* Öffnen zum Daten schreiben *)
hFile := SysFileOpen(FileName2,'w');
anz_bytes:=SysFileWrite(File:= hFile ,Buffer:= ADR(Text),Size:=LEN(Text));
hFileclose1:=SysFileClose(File :=hFile); 		(*schließen der Datei mit Datei-Nummer*)

END_IF;


----------



## KvT (18 November 2010)

Hallo,

das ganze Geheimniss ist:

Du musst eine steigende Flanke einfügen:

VAR
 R_TRIG_Save: R_TRIG;
 speichern: BOOL;
 Text: STRING := 'Hallo Welt';
 hFile: DWORD;
 anz_bytes: DWORD;
 hFileclose1: BOOL;
END_VAR

R_TRIG_Save(CLK:=speichern );
IF R_TRIG_Save.Q THEN
(* Öffnen zum Daten schreiben *)
hFile := SysFileOpen('c:\temp\neu.txt','w');
anz_bytes:=SysFileWrite(File:= hFile ,Buffer:= ADR(Text),Size:=LEN(Text));

hFileclose1:=SysFileClose(File :=hFile);
 (*schließen der Datei mit Datei-Nummer*)
END_IF


So sollte es funktionieren ...


----------



## bits'bytes (18 November 2010)

KvT schrieb:


> Hallo,
> 
> das ganze Geheimniss ist:
> 
> Du musst eine steigende Flanke einfügen:



Hallo, verstehe ich nicht.... er macht das halt jeden Zyklus bis die 'speichern' wieder 0 ist. 
Sollte aber nicht der Grund dafür sein dass das schreiben nicht geht.

Vielleicht brauchts ja eine explizite Angabe eine bestehende Datei zu überschreiben falls sie schon existiert, in Richtung 'w+' oder 'overwrite' ? 'w' bedeutet ja eigentlich nur schreiben, nicht überschreiben....

bg
bb

vergessen!
warum kommt da eigentlich kein Fehler zurück der beschreibt was das Problem ist... steht da vielleicht noch irgendwo ein Info diesbezüglich ?


----------



## gravieren (18 November 2010)

Hi


Schau doch mal hier hinein.

Hier ist eine alte Library von mir.


Quelltextoffen.

Also mal öffnen und ausdrucken.
Auch Hinweise zur vorgehensweise sind enthalten.



ACHTUNG. Diese wird von mir NICHT mehr gepflegt.
(Da in naher Zukunft die www.OSCAT.DE das Dateihandling können wird.)




http://www.magnia.de/index.php?option=com_docman&task=cat_view&gid=50&Itemid=53




> Zitat von *KvT*
> 
> 
> _Hallo,
> ...


Es ist schon etwas mehr als 1 Geheimnis/Hürden  



Gruß Karl


----------



## Conroe (19 November 2010)

Besten Dank für eure Antworten!
Hab jetzt die Problematik meines Codes verstanden ->Befehle benötigen mehrere Zyklen. Bei meinem Code öffne, schreibe und schließe ich Xmal in der Sekunde.

Werd weiter dran bleiben und berichten sobald die Sache läuft

Schönes WE!


----------



## Conroe (23 November 2010)

Schließen!

Lösung gefunden: 1.RTE starten 2 Kommunikationsparameter fertig tut.

Grüße


----------



## Chrysler (5 Dezember 2011)

Hallo,

ich sitze gerade vor dem gleichen Problem, wie oben beschrieben.
Ich will Daten, die in einem String stehen, in eine externe (CSV-Datei) schreiben.
Mein Problem ist, dass sich die Datei nicht mal öffnet. Ich hab es mit den Befehlen: SysFileOpen, -Write, -Close versucht.
Kann mir jemand einen Tipp geben, was man bei den Befehlen besonders beachten muss?

Vielen Dank
Grüße


----------



## gravieren (5 Dezember 2011)

Hi

Identische Hardware  ?

Welcher Controller ?


Gruß Karl


----------



## KvT (5 Dezember 2011)

Hi,

die Lösung steht eigentlich schon hier in den Beiträgen. In dem Code (vielleicht machst Du Ihn mal für alle sichtbar) öffnest D ständig eine Datei. Das darf aber nur genau einmal geschehen. -> Steigende Flanke. Dann Schreiben udn einmalig schließen ... Wie eigentlich alle schon beschrieben haben ...


----------

