-         

Ergebnis 1 bis 5 von 5

Thema: Zuweisung in Feld aus Strings überschreitet Längendefinition ohne Fehler: Warum?

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    11.09.2005
    Beiträge
    15

    Zuweisung in Feld aus Strings überschreitet Längendefinition ohne Fehler: Warum?

    Anzeige

    Hallo zusammen, habe ein Feld als
    Code:
    Dim Parse_wd(8) As String * 16
    definiert. Trotz der Beschränkung auf 16 Byte lange Strings kann ich auch längere Strings in den Feldvariablen speichern. Wo liegt der Fehler? Ist das ein Feature oder ein Bug?

    Anbei ein Auszug aus dem Programm, danke für die Antwort!

    snafu

    Code:
    'variablen für den parser
    Dim Parser_string_len As Byte
    Dim Parser_split_pointer As Byte
    Dim Parse_wd(8) As String * 16
    Dim Parse_wd_counter As Byte
    
    [...]
    
    '-------------- parse input string
          For Parse_wd_counter = 1 To 8
    
             'find first blank char
             Parser_split_pointer = Instr(parse_string , " ")   'erstes ' ' suchen
    
             If Parser_split_pointer > 0 Then                   '= 0 if no blank found
                Parser_split_pointer = Parser_split_pointer - 1
             End If
    
             'isolate first parse word
             Parse_wd(parse_wd_counter) = Mid(parse_string , 1 , Parser_split_pointer)

  2. #2
    Administrator Robotik Einstein Avatar von Frank
    Registriert seit
    30.10.2003
    Beiträge
    4.989
    Blog-Einträge
    1
    Bascom überwacht nicht die Feldlängen. Wenn du nur 8 Bytes reservierst, musst du auch selbst darauf achten das du das nicht überschreitest. Ansonsten überschreibst du mit überlängen entweder andere Variablen oder Dimensionen was üble Folgen für das Programm haben kann.
    Fehler ist das keiner, aber als Feature würde ich es auch nicht unbedingt bezeichnen
    Mit bestem Gruß
    Frank

    Admin Roboternetz.de - RN-Wissen.de - Elektronik-Blog

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    11.09.2005
    Beiträge
    15
    Oh! Danke für die Antwort. Ist das bei normalen Stringvariablen auch so? Ich wähnte mich immer ganz sicher in des Compilers Schoß, da muss ich ja richtig aufpassen!

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    Während der Laufzeit wird nichts überprüft. Das wäre ziemlich aufwändig.
    Und das kann dir bei jeder Art Variable passieren, deren Größe nicht von Anfang an fest vorgegeben ist. Also bei Strings und Arrays.
    Der Compiler kann nur Konstanten überprüfen. Selbst wenn du Konstanten an Variablen zuweist und diese dann zu einem String zusammenbaust, gibt dir der Compiler keine Fehlermeldung.
    Das gleiche gilt für Arrays. Wenn du Elemente verwendest, die außerhalb deiner Deklaration liegen, wird das auch nicht festgestellt.

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    11.09.2005
    Beiträge
    15
    Danke für deine ausführliche Antwort - das war mir nicht klar. Dann wundert es mich umso mehr, wie oft meine Programme funktionieren

    BTW: Ich bin immer wieder über den freundlichen Ton und die guten Antworten in diesem Forum überrascht, so auch in diesem Fall. Tnx!

Ähnliche Themen

  1. TTL-Transisor mit N-Feld
    Von giraffe im Forum Elektronik
    Antworten: 4
    Letzter Beitrag: 12.01.2008, 22:50
  2. Interrupt-Problem Zuweisung?
    Von beginnerx im Forum C - Programmierung (GCC u.a.)
    Antworten: 3
    Letzter Beitrag: 12.11.2007, 14:13
  3. Fehler bei berechnung; warum?
    Von Toxic im Forum Controller- und Roboterboards von Conrad.de
    Antworten: 1
    Letzter Beitrag: 17.04.2007, 12:09
  4. Target-Fehler: Power ohne Supply
    Von OnkelTobi im Forum Konstruktion/CAD/Sketchup und Platinenlayout Eagle & Fritzing u.a.
    Antworten: 1
    Letzter Beitrag: 15.09.2006, 00:42
  5. [ERLEDIGT] Eindimensionales Feld mit CC5 mit sofortiger Ertzuweisung
    Von Oldwabbel im Forum PIC Controller
    Antworten: 2
    Letzter Beitrag: 02.08.2005, 10:46

Berechtigungen

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