PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Stringmainipulation mit Chr-Array als Overlay?



m_herr
19.06.2007, 16:26
Hallo,

ich wollte einzeln Zeichen eines Strings direkt verändern,aber leider klappt das nicht so ganz. Mache ich da was falsch?




Dim test As String * 48
Dim S_char(48) As Byte At test Overlay

test='Das ist ein Teststring'

S_char(1) = Asc( "!")
S_char(2) = Asc( "!")

lcd test



Nun steht aber auf dem Display nicht
"!!s ist ein Teststring",sondern
"!Üs ist ein Teststring",

Um so höher die Stelle im String, um so mehr quatsch wird angezeigt. Bei Stelle 48 zb das Asci-Zeichen 251. Warum?


Wäre nett, wenn mir da einer helfen könnte. Vielen Dank.

chr-mt
19.06.2007, 17:21
Hmm..
Im Simulator geht es. (Version 1.11.8.7)

(wenn man zusätzlich das END am Ende hinschreibt und die Quarzfrequenz angibt)


$sim
$crystal = 16000000

Dim test As String * 48
Dim S_char(48) As Byte At test Overlay

Test = "Das ist ein Teststring"

S_char(1) = Asc( "T")
S_char(2) = Asc( "E")
S_char(3) = Asc( "S")
S_char(4) = Asc( "T")

Cls
lcd test

End


Gruß
Christopher

Rofo88
19.06.2007, 20:14
funzt bei mir mit nem Mega32


$regfile = "m32def.dat"
$crystal = 16000000
$baud = 9600

Dim Test As String * 48
Dim S_char(48) As Byte At Test Overlay

Test = "Das ist ein Teststring"

S_char(1) = Asc( "!")
S_char(2) = Asc( "!")

Print Test

End



MfG

m_herr
19.06.2007, 20:48
perfekt, dann ist bei mir der wurm drinn..

An was kann das liegen? Kristallkugeln raus....

zb schmiert mir alles ab, wenn der Mega16 voll ist, wenn ich am anfang länger als 2500ms Warte (LCD Startbild), dann habe ich nur noch wilde Buchstaben auf dem Display...

die ganzen Stacks habe ich erstmal verdoppelt. Gut, 3 Subs zur Bildschirmausgabe (a 20 zeilen) sind auch dabei. Aber ansonsten keine Rekursion oder vergessene Returns...