Menu

#11 STRING compars in brackets results in variant error

release 0.4-beta
accepted
nobody
None
2026-04-05
2026-03-09
No

?"A"+"B"="AB" -> -1 (correct)
?("A"+"B"="AB") -> Variant error and the interpreter crashes

Discussion

  • Dietmar Schmidt

    Dietmar Schmidt - 2026-03-09
    • status: open --> closed
     
  • Dietmar Schmidt

    Dietmar Schmidt - 2026-03-09

    n function IsOperatorOrKeywordBefore(const HSt: string; PosBefore: Integer): Boolean;
    Zeilen hinzugefügt:

     if p<1 then
      begin
        result:=true; // links vom String, also führendes Vorzeichen
        exit;
      end;
    
     
  • Dietmar Schmidt

    Dietmar Schmidt - 2026-03-09
    • status: closed --> open
     
  • Dietmar Schmidt

    Dietmar Schmidt - 2026-03-09

    n function IsOperatorOrKeywordBefore(const HSt: string; PosBefore: Integer): Boolean;
    Zeilen hinzugefügt:

     if p<1 then
      begin
        result:=true; // links vom String, also führendes Vorzeichen
        exit;
      end;
    
     
  • Dietmar Schmidt

    Dietmar Schmidt - 2026-03-09

    das oben hat ein Leerzeichen vor einem Vorzeichen am Anfang dann richtig behandelt, aber Probleme gibt es noch bei folgenden Beispielen:

    ?1+a$="Q"
    ?"Q"="Q"+1

    und schlimmer:
    ?"Q"="Q"+i

    Wenn die Stringvergleiche in Klammern gesetzt werden wie beim Original-CPC geht es, sollte aber gefixt werden.

     
  • Dietmar Schmidt

    Dietmar Schmidt - 2026-04-04
    • status: open --> pending
     
  • Dietmar Schmidt

    Dietmar Schmidt - 2026-04-04

    Hinweis: Im original-BASIC bricht das auch mit einem Fehler ab. Man müsste
    ?1+(a$="Q")
    ?("Q"="Q")+1
    ?("Q"="Q")+i
    schreiben. Das klappt auch hier. Aber die Logik lässt die Beispiele vom 03.09.2026 auch funktionieren, sollten irgendwann gerichtet werden. Aktuell aber nicht wichtig.

     
  • Dietmar Schmidt

    Dietmar Schmidt - 2026-04-05
    • status: pending --> accepted
    • Milestone: release 0.3-beta --> release 0.4-beta
     
  • Dietmar Schmidt

    Dietmar Schmidt - 2026-04-05

    Hinweis: Im original-BASIC bricht das auch mit einem Fehler ab. Man müsste
    ?1+(a$="Q")
    ?("Q"="Q")+1
    ?("Q"="Q")+i
    schreiben. Das klappt auch hier. Aber die Logik lässt die Beispiele vom 03.09.2026 auch funktionieren, sollten irgendwann gerichtet werden. Aktuell aber nicht wichtig.

     

Log in to post a comment.

MongoDB Logo MongoDB