Überlange Variable

OP #339918
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?
#339919
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é
OP #339920
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

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.