Problem FileOpen-FileWrite-FileClose

th227

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

ich arbeite mit Beckhoff TwinCAT 3 und versuche über die Funktionsblöcke eine Struktur aus mehreren String in eine Datei zu schreiben. Prinzipiell funktioniert das ganze auch nur ich bekommen zwischen den einzelnen Strings, die in der Datei geschrieben werden immer Leerzeichen. Habe es auch schon versicht nach jedem Wort einen Zeilenumbruch zu machen, aber dann werden die Leerzeichen nur in der Position verschoben. Die einzelnen Strings werden direkt bei der Initialisierung geschrieben.

Gibt es eine möglichkeit die Leerzeichen zu vermeiden/umgehen?


<<Ein Element der Struktur>>
name :STRING:= 'test';

<<Ausgabedatei>>
(underline sind in der Datei Leerzeichen)
test____________________________test____________________________test ____________________________test

Danke
 
Ich kenne TwinCAT nicht, vermute aber, daß die tatsächliche Stringlänge nicht ausgewertet wird. Vermutlich tut FileWrite genau das, was Du ihm sagst.
Wie übergibst Du die STRINGS an das FileWrite? Wie teilst Du FileWrite die Anzahl zu schreibender Zeichen mit?

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Die Größe der Struktur wird über die Funktion Sizeof() ermittelt. Aber deine Antwort hat micht auf eine Idee gebracht. Bei der Deklaration der einzelnen Elemente der Struktur habe ich nur
name :STRING:= 'test';
angegeben, somit wird wohl Speicherplatz für 255 Zeichen angelegt. Siehe da bei
name :STRING[5]:= 'test';
sind es nur noch zwei Leerzeichen.

Jetzt habe ich aber das Problem, dass die zu schreibenden Strings (in der Struktur) variieren, somit kann ich keine feste Zeichenanzahl angeben oder gibt es da eine Möglichkeit?

Gruß
 
Ich würde mal sagen, SizeOf(Struktur) ergibt den Speicherplatz den die Struktur belegt, egal ob der komplett genutzt ist.
Du müsstest die Strings einzeln schreiben und mit der LEN-Funktion die tatsächliche Länge des Strings ermitteln.

Harald
 
Alternativ: die Ausgabezeile für FileWrite vorher in einem BYTE/CHAR/...-Puffer zusammenbauen, wo Du z.B. mit CONCAT die Strings in tatsächlicher Länge hineinschreibst, ggf. noch Leerzeichen entfernen - siehe Stringfunktionen.

Harald
 
Zurück
Oben