Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Umgebungsvariablen des RedDebugers
#11
Mit dem code geht es, kann aber nicht zwischen lokalen und globalen Variablen unterscheiden. ich weis auch nicht wie das geht, muss ich erst suchen. vermutlich ist das ein flag ein oder so, dass man in der variable selber überprüfen muss. das hier geht also, nur das zuviel gemeckert wird, wenn man dasselbe array in einer lokalen funk nimmt.

JL_0_E11E:
CLR.w nonew
JSR getparameter
+ MOVE.w d2,-(a7)
+ JSR findvariable
+ BNE 'l1
+ JMP errormsg_declaredtwice
+'l1
+ MOVE.w (a7)+,d2

das programm zum testen war dass. der code meckert auch bei dem dim mem.s(300) in der Funktion.

DEFTYPE .l mem
Dim mem.s(200)
Function test{}
Dim mem.s(300)
End Function

test{}
Zitieren
#12
habs mal im Compiler eingebaut, funktioniert soweit das nun mem.s() angemeckert wird

Danke
Zitieren
#13
Ja Bernd das funktioniert wie du es beschreiben hast ohne Unterscheidung Globlal/Lokale-Variable.

Ok ich habe mal Deftype geprüft das macht auch keine Test ob es die Varibale schon gibt z.B:

Code:
Dim mem.s(200)
DEFTYPE.l mem
wenn ich aber deinen Code einfüge klapps da auch mit der Fehlermeldung und zwar hier:
Code:
JL_0_C2C0:
  BSR.w getparameter
+   MOVE.w d2,-(a7)
+   JSR findvariable
+   BNE 'l3
+    JMP errormsg_declaredtwice
+ 'l3
+  MOVE.w (a7)+,d2

   BSR.w JL_0_8E3C

Was ich nicht ganz verstehe ist das es ohne nicht geht den in der Subroutine JL_0_8E3C kann/wird auch findvariable aufgerufen?

PS: Welche Befehle könnten noch davon betroffen sein?
Zitieren
#14
Cool wenn man nun versucht den Debugger zu compilieren:

Compile error in line 1120:

Illegal operator for this type.
possible wrong code begins here:

WFLG_REPORTMOUSE


das ist innerhalb des Statements NewWindow

Code:
If win = #_winSource
    AddIDCMP #IDCMP_MOUSEMOVE
    f = f OR #WFLG_REPORTMOUSE ; <----- das da
    ;Poke.l ?__gimmi+4,1
End If

f ist vom type float

ich habe nach dem includen natürlich wieder
optimize 5
syntax 6

eingefügt
Zitieren
#15
Blackbird schrieb:ich habe nach dem includen natürlich wieder
optimize 5
syntax 6

eingefügt

Das sollte keinen Unterschied mehr machen da die Includes kein optimize und Syntax setzen wenn sie als Include verwendet werden, nach meiner Überarbeitung oder habe ich etwas übersehen.
Zitieren
#16
Wie geschrieben, es läßt sich nicht kompilieren...

desweiteren habe ich auch noch 6 Stellen gefunden die CacheClearU verwenden.
Das sollten wir auch noch so ändern wie du die Anpassungen im Compiler gemacht hast für MorphOS
Zitieren
#17
ne lass die stellen besser so mit dem cacheclearu. denn speedkritisch sind die nicht. wie ich schon sagte, es ist eher ein Hack.

@Thomas
Ich habe mal geschaut was 8e3c macht. das scheint wenn nowdeclare 2 ist auch eine fehler zu bringen bei variablen. Geht aber nicht bei dim, auch wenn man nowdeclare auf 2 setzt oder bei nowdeclare 1 auch einen error ausgibt. wahrscheinlich sind bei dim die flags anders als bei var. hast du noch ein original blitz 2 installiert ?. kannst dort mal testen, ob der fehler dort auch auftritt ?? und mal im source schauen
Zitieren
#18
@Blackbird
Ich habe keine Probleme den Debugger zu compilieren, mit den Änderungen für Dim von Bernd, nach folgenden Änderungen mem.s(200), scr.s(200) und dis.s(200) umbenannt indem ich "Str" angehängt habe damit ich überall memStr(),scrStr() und disStr() stehen habe und sowie einen Cast eingefügt für *prt=&...Str(...) in *prt=(.l)&...Str(...).

@Bernd
Ich habe BlitzBasic2 nicht mehr installiert werde ich aber mal testen wenns noch läuft, im Sourcecode davon werde ich dann nachsehen.
Zitieren
#19
@Bernd
So ich habe das BlitzBasic Demo 2.10 aus dem Aminet zum laufen bekommen und getestet da kommt keine Fehlermeldungen auf bei DIM und DEFTYPE egal in welcher Reihenfolge.
Zitieren
#20
vielleicht kommen die Probleme auch weil blackbird dass mit dem cache geändert hat. denn ist schon unwahrscheinlich, dass der Code, fehler bringt durch das dim. denn auch vorher wird der code nicht ausgeführt.

If win = #_winSource
AddIDCMP #IDCMP_MOUSEMOVE
f = f OR #WFLG_REPORTMOUSE ; <----- das da
;Poke.l ?__gimmi+4,1
End If

jetzt muss man halt noch rausfinden, wie man einen local dim oder global dim unterscheidet. oder in einer lokal func einen shared dim. wie das geht weis ich alles nicht, muss ich erst erforschen, an den dims habe ich diesbezüglich nie was gemacht
Zitieren


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste