Simpel gesagt: Nein...Darf ich als größe der Variable keine Variable angeben?
(du bist wahrscheinlich durch "malloc" und "new" etwas verwöhnt. )
Hallo,
was mache ich da eigentlich falsch? Dauern bekomme ich eine Fehlermeldung.
Ich will ein array anlegen in dem ich Daten schreibe.
Das array soll aber keine feste Größe haben, sondern von der Anzahl der Buchstaben in dem Text vorgegeben werden.
Also zum Beispiel:
Bei "Test" soll das das Array in der Form Dim B1(4) angelegt werden,
bei "Testaufgabe" soll das Array die Form Dim B1(11) angelegt werden.
Warum bringt mein Code dauernd Fehlermeldung?
Darf ich als größe der Variable keine Variable angeben?
Vielen Dank im VorausCode:$regfile = "m8def.dat" $crystal = 8000000 $framesize = 256 $swstack = 256 $hwstack = 256 Dim Anzeige As String * 100 Dim Laenge As Byte Anzeige = "AB" Laenge = Len(anzeige) Print "Textlaenge =" ; Laenge Dim B1(laenge) As Byte Dim L As Byte Dim Zeichen As String * 1 Dim Zeichenasc As Byte Zeichen = Mid(anzeige , L , 1) Print "Zeichen=" ; Zeichen Zeichenasc = Asc(zeichen) Print "Ask Wert des Zeichens =" ; Zeichenasc B1(1) = &B01101111 End
Rici
Simpel gesagt: Nein...Darf ich als größe der Variable keine Variable angeben?
(du bist wahrscheinlich durch "malloc" und "new" etwas verwöhnt. )
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Hallo,
bist du sicher, dass du eine solche "abgefahrene" Funktionalität wie dynamische Arrays überhaupt brauchst?
Wenn doch, kannst du aber auch, wie das jeder gute C-Programmierer das macht, mit Pointern direkt im - glaube ich - 1K großen SRAM vom Mega8 rumspringen.
Dim ar(1024) as byte
Dim ptr_a as int
ptr_a = varptr(ar(1))
und schon geht die Post ab.
Dazu gibt es PEEK und POKE, INP und OUT Funktionen.
Nee, jetzt mal ernsthaft, bestimmt kannst du deine Aufgabe ohne solche Arrays lösen. In deinem Beispiel sowieso, aber da steckt vielleicht noch mehr dahinter.
Hallo,
Robert entschuldige bitte das ich hier nerve, aber ich bin leider Anfänger und habe immer wieder das Problem das ich nicht weiß welche Befehle ich überhaupt brauche.
Vielen Dank for_ro. Genau das war es. Ich brauche ja gar keine dynamische Arrays. Ich kannte diesen Befehl nicht. Aber damit kann ich das Problem lösen.
Ich versuche gerade eine Ausgabe auf einer Matrix Textanzeige zu basteln. Ohne eure Hilfe hab ich da keine Chance. Bin leider kein Programmierer, versuche es mir irgendwie beizubringen.
Vielen Dank und Entschuldigt noch einmal.
Rici
Kein Problem.
Zur Erklärung:
Die Reihenfolge, wie etwas im Source-Code steht, ist nicht immer auch die reihenfolge, wie was abläuft.
Das läuft erst, wenn das Programm fertig ist und auf den µC übertragen ist:
Das da steht zwar danach, ist aber schon beim kompilieren relevant:Code:Laenge = Len(anzeige) Print "Textlaenge =" ; Laenge
Der Kompiler reserviert Speicher für dieVariablen. Erst "B1, dann "L".Code:Dim B1(laenge) As Byte Dim L As Byte
Damit er aber weiß, wo er "L" hintun kann, muß er natürlich jetzt schon wissen, wie lange "B1" ist.
Und deshalb isses so, wie es ist.
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Lesezeichen