-
        

Ergebnis 1 bis 5 von 5

Thema: Daten in Array schreiben

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    07.01.2006
    Beiträge
    31

    Daten in Array schreiben

    Anzeige

    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?

    Code:
    $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
    Vielen Dank im Voraus

    Rici

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    ..Darf ich als größe der Variable keine Variable angeben?
    Simpel gesagt: Nein.

    (du bist wahrscheinlich durch "malloc" und "new" etwas verwöhnt. )
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    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.

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    07.01.2006
    Beiträge
    31
    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

  5. #5
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    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:
    Code:
    Laenge = Len(anzeige) 
    Print "Textlaenge =" ; Laenge
    Das da steht zwar danach, ist aber schon beim kompilieren relevant:
    Code:
    Dim B1(laenge) As Byte 
    Dim L As Byte
    Der Kompiler reserviert Speicher für dieVariablen. Erst "B1, dann "L".
    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.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •