Forum: Mikrocontroller und Digitale Elektronik Überlange Variable


von Steffen S. (strangeperson)


Lesenswert?

Moin Moin,

ich bin neu hier in dem Forum - das ist mein erster Eintrag - und ich
hoffe ihr könnt mir weiter helfen.

Ich habe ein Quellcode in Bascom für eine Laufschrift geschrieben, der
funktioniert auch ohne weiteres, allerdings kriege ich Probleme wenn
ich Texte mit über 255 Zeichen eingeben will. Ein String in Bascom ist
auf 255 Zeichen begrenzt. Ich will in meiner Laufschrift aber über 1000
Zeichen haben und ein Splitten der Variablen bietet sich nicht an, da
die Laufsxchrift sonst unterbrochen werden würde.

Jetzt meine Frage: Wie kann ich Text-Variable mit über 1000 Zeichen in
Bascom erstellen?

von André K. (andre-)


Lesenswert?

Das geht ganz gut mit der Overlay-Funktion: Strings werden ja immer mit
0 abgeschlossen, d.h. je weiter hinten innerhalb des Strings die 0
steht, desto laenger ist dieser:

Dim S As String * 1 At 300 'laenge ist so ziemlich egal
Dim Stringcopy(400) As Byte At S Overlay 'maximale Stringlaenge nun
400
Dim I As Word

For I = 1 To 400
   Stringcopy(i) = Asc( "a")
Next

Print S                                                     ' ausgabe
des Strings, der nun die Laenge 400 besitzt

stringcopy(300) =0                                          'einfuegen
einer Endnull zum Abschluss des Strings

Print S                                                     'ausgabe
des 299 Zeichen langen Strings

End

Zu beachten ist bei dieser Loesung, dass die Abschluss 0 eben manuell
eingefuegt werden muss. Weiterhin duerfen Stringoperationen, wie Mid,
Instr oder Len nicht auf den String s angewendet werden. Stattdessen
muessen Teile des Arrays in einen temporaeren String gelegt werden, um
diese Funktionen anzuwenden oder sie werden direkt so neu programmiert,
dass sie auf Arrays anwendbar sind. Texte koennen dem String nicht mehr
einfach zugewiesen werden, sondern muessen ueber das Array uebergeben
werden.

Alternativ kann man das Array auch mit mehreren, 255byte langen Strings
ueberlegen, die man dann normal mit Stringoperationen bearbeiten kann.
Allerdings ist hier wieder streng auf die 0en zu achten.

Beste Gruesse,
André

von Steffen S. (strangeperson)


Lesenswert?

Danke für deine schnelle Antwort!

Zu meinem Glück arbeite ich natürlich mit Mid, Instr und Len. Deswegen
wollte ich das möglichst in eine Variable reinpacken und mir die
Splittung in ein Array sparen. Aber wenn es nicht anders geht, hat mir
das schonmal weiter geholfen.

Mit freundlichem Gruß,
Steffen

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.