Vielleicht solltest du nicht solche hintenrum Lösungen implementieren, die du nachher nicht mehr verstehen kannst.
Tatsächlich habe ich es bei mir genau anders herum gemacht:
Dim Messwerte_string * 512 as string
Dim Buffer(512) As Byte at Messwerte_string overlay
Dabei wird auch Platz für das Endezeichen bei 512 Byte langen Strings erzeugt.
Die Bufferlänge von 512 reicht, weil die hier nur zur Verdeutlichung angegeben wird.
Die DriveWriteSector() Funktion schreibt nicht bis zum Endezeichen des Strings sondern 512 Byte, egal was da drin steht.
Das musst du dann nur beim Einlesen bedenken, wenn du die DriveReadSector() Funktion benutzt, um den Sektor wieder in den Buffer und damit in den String zu bekommen. Steht weder in den 512 Byte noch im zusätzlichen Byte von Messwerte_string kein 0-Byte, dann geht der String einfach weiter, solange bis er im SRAM auf ein 0-Byte trifft. Evtl. kommen damit aber die Stringfunktionen nicht mehr zurecht.
Mit den Stringfunktionen solltest du bei solch langen Strings ohnehin sehr vorsichtig umgehen. Besonders Dinge wie
Messwerte_string = "12345678901234567890" + Messwerte_string
können zu recht hohen Anforderungen an deinen Frame Bereich führen, weil hierzu eine Kopie von Messwerte_string erzeugt werden muss.
Damit werden dann evtl. die Stacks überschrieben, was zu recht garstigen Fehlern führen wird.
Lesezeichen