Array of String und FB_FileWrite

gloeru

Level-1
Beiträge
339
Reaktionspunkte
35
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich muss sehr schnell Daten loggen. Alle 500us baue ich ein String aus den Messwerten und speichere diesen komplett fertig (Mit CRLF etc) in ein Array, jedoch mit leicht unterschiedlichen Laengen (Vorzeichen etc) Ich habe zwei gleiche Arrays, in eines fuelle ich die Werte, aus dem anderen Schreibe ich in die Datei...

Die Idee war, dieses Array als Ganzes dem Baustein FB_FileWrite zu uebergeben, da ich den FB_FilePuts nicht nutzen kann, da in jedem Zyklus eine neue Zeile zu schreiben ist.

Das Problem ist, dass die nicht genutzten Zeichen in der Zeile mitkopiert werden und so im File als 'stoerende' (NUL) Zeichen landen.

Was kann ich dagegen tun, ohne einfach Leerzeichen einzufuellen?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich befuerchte mein erster Eintrag ist zu unklar, sorry!

Das Problem ist, wenn ich ein Array of STRING(25) an den FB_FileWrite uebergebe, aber die einzelen Strings nicht immer genau 25 Zeichen lang sind, dass ich irgendwelchen Speicherinhalt im der Textdatei habe. Das ich mir soweit logisch, dass wenn ich sString:= 'Nicht25Zeichen'; zuweise, noch restlicher Speicherplatz unbeschrieben bleibt, der bei der Uebergabe mit ADR/SIZEOF mitgenommen wird.

Eigentlich suche ich eine Moeglichkeit, die String nur bis zum CRLF in die Datei zu schreiben, wie dies der FB_FilePuts macht, aber halt einfach ein Array statt nur ein String...
 
Da wirst Du die Nullen wohl schon beim Speichern entfernen müssen. Also in ein Array[1..MaxStrings*MaxStringSize] of Byte. Nach jedem Speichern eines Strings dessen tatsächliche Länge zum Schreibindex hinzuaddieren.
 
Hallo!

sizeof() ist doch auch der falsche Befehl.
mit der String-Funktion LEN() aus der Standard.lib ermittels die Länge des tatsächlichen Inhalts!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hey

LEN() Funktioniert leider nur für einen String, jedoch nicht für ein Array von Strings...
Ich sehe, ich werde um einem Byte-Buffer nicht umherkommen... Die Strings waren so schön und einfach zum programmieren und debuggen ;-)

Danke trotzdem!
 
Ja logisch für jeden einzelnen String......jeden einzelnen String in einer Array-Zelle.
Schleife drüber und ggf. im selben Rutsch in ein Byte-Array......ist eher schneller weggeschrieben!
 
Oder nur in ein Bytearray packen und bei jedem Eintrag einen Stringpointer darauf setzen. Da gibt es Lösungen in den verschiedensten Geschmacksrichtungen.
 
Zurück
Oben