www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Überlange Variable


Autor: Steffen So (strangeperson)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: André K. (andre-)
Datum:

Bewertung
0 lesenswert
nicht 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é

Autor: Steffen So (strangeperson)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.