Seite 1 von 2

"Variable Viewer" immer leer?

Verfasst: 25.12.2006 01:24
von Jet1199
Hallo,

noch-Anfänger, nach wenigen projekten nun umgestiegen nach PB4.01, in der Forumsuche erfolglos:

Warum bleibt mein Variable Viewer stets leer? Es sollte doch genügen, im Extremfall PB leer zu starten und "on the fly" loszulegen.
Im Sinne von

a=1
b=2
MessageRequester("Beispiel","a: "+str(a)+" b: "+str(b)+" a+b="+str(a+b))

Also nur mal so als Mini-Beispiel.
Wieso werden die beiden Variablen nicht im Viewer angezeigt?!

Verfasst: 25.12.2006 01:35
von Kaeru Gaman

Code: Alles auswählen

Define a=1 
Define b=2 
MessageRequester("Beispiel","a: "+Str(a)+" b: "+Str(b)+" a+b="+Str(a+b)) 
die IDE registriert anscheinend nur explizit definierte variablen.
auch nur die tauchen in der autovervollständigen-liste auf.

namen von on-the-fly-variablen erscheinen in keiner von beiden listen.

Verfasst: 25.12.2006 01:47
von Jet1199
Danke für die schnelle Antwort, insbesondere zu diesem Datum/dieser Uhrzeit ;-))

Also ergäntze ich mein Programm, deklariere die beiden Variablen explizit als Byte, indem ich diese meinem Programm voranstelle:

a.l
b.l

a=1
b=2
MessageRequester("Beispiel","a: "+Str(a)+" b: "+Str(b)+" a+b="+Str(a+b))

-> nö, nix Variablen Viewer :-(

Verfasst: 25.12.2006 02:12
von Kaeru Gaman
ja nee.. du musst "define" benutzen...

..vielleicht wäre es zu aufwendig gewesen, wenn der editor jede irgendwo irgendwie erwähnte variable als solche erkennen soll.


> Danke für die schnelle Antwort
kein problem... ich bin öfters sonntag nacht noch nach eins online...

Verfasst: 25.12.2006 02:14
von ts-soft
Declarieren mit Define, Global, Protected, usw.
Dann wirds auch angezeigt. Du solltest Dir vielleicht von vornherein
angewöhnen, EnableExplicit an den Beginn Deines Sources einzufügen. On
The Fly deklaration sollte man garnicht verwenden, weil so Fehler schwerer
zu finden sind.

Verfasst: 25.12.2006 02:25
von Hellhound66
Declarieren mit Define, Global, Protected, usw.
...ist wie TS schon sagt eine gute Idee. Ich war lange Zeit zu faul, das zu schreiben, jetzt ärger ich mich mit Schreibfehlern rum. Sich das anzugewöhnen ist ne gute Sache.

Verfasst: 25.12.2006 13:11
von Jet1199
Danke Euch drei Nachtschwärmern.

Ihr habt Recht, angezeigt werden die Variablen nur, wenn sie vorher vereinbart werden, also nicht 'on the fly' gefüllt werden.

Mein Miniprogramm ist also um zwei Zeilen gewachsen:

Code: Alles auswählen

Global a.l
Global b.l
  a=1
  b=2
MessageRequester("Beispiel","a: "+Str(a)+"  b: "+Str(b)+"  a+b="+Str(a+b))
Debugger ist enabled, das Variablenfenster wird angezeigt. Beide Variablen erscheinen, allerdings nur als Name. Zu erwarten wären ja drei Spalten wie früher: Name/Wert/Typ.
Ist das etwa eine grundlegende Einstellungsfrage?
Hab schon alles runtergelöscht, 4.02 Voll-Installation nochmal runtergeladen und neu installiert. Nix, ich bekomme nur den Namen.
Ich denke ich muß nicht a.l=1 schreiben?!

Screenshot

Verfasst: 25.12.2006 16:02
von ts-soft
>> Beide Variablen erscheinen, allerdings nur als Name
Dann ist doch alles in Ordnung! Oder was hast Du erwartet?
Um Werte zu verfolgen, dafür gibts den Debugger. Der VariablenViewer der
IDE soll Dir nur helfen den richtigen Namen zu finden. Das ist bei grossen
Sourcen schon hilfreich.

Verfasst: 25.12.2006 16:06
von Jet1199
Mist, das isses.
Es gibt zwei Variablen-Viewer mit demslben Namen:

1x 'Tools/Variable Viewer'
1x 'Debug/Variable Viewer'

Den Debug-Viewer kann man nur im laufenden Programm (Debug-Modus) aufrufen, dann sind die Werte auch da. Den hab ich bisher nie für voll gemonnen, nur vermißt.

Danke, mein Problem ist damit gelöst :allright:

Verfasst: 25.12.2006 17:16
von Kaeru Gaman
:D na siehste, wer suchet der findet...

btw.. in dem Debug-Viewer tauchen auch on-the-fly variablen auf...
war also ein mißverständnis, welchen viewer du meinst...


btw. du hast jetzt Global verwendet,
das solltest du nur verwenden, wenn du sie auch wirklich Global brauchst.

wenn du "ganz normale" Variablennamen haben willst,
dann kannst du sie per Define vordefinieren, und zwar in jedem geltungskreis extra,
d.h. wenn du in einer Procedure eine Variable verwenden willst,
muss das Define auch am anfang der Procedure stehen.
das mag dir jetzt etwas umständlich erscheinen, jede variable explizit zu definieren,
aber man kann damit wirklich ne menge tippfehler vermeiden,
die besonders bei umfangreicheren codes sehr mühsam aufzuspüren sind.

benutz einfach mal EnableExplicit am anfang deiner codes
und fang an dich dran zu gewöhnen, es lohnt sich. ;)