Seite 1 von 1
Runtime funktioniert in Modulen nicht
Verfasst: 09.12.2014 21:33
von Andesdaf
Code: Alles auswählen
DeclareModule Test
EndDeclareModule
Module Test
Runtime Enumeration
#RT
EndEnumeration
Debug IsRuntime("#RT")
EndModule
; Runtime Enumeration
; #RT
; EndEnumeration
;
; Debug IsRuntime("#RT")
So wird 0 ausgegeben. Wenn man die Kommentierung umkehrt, wird 1 ausgegeben. Das Verschieben der
Enumeration in den DeclareModule-Block bringt auch nichts.
Getestet mit PB 5.31 x86 / Win8
Oder hab ich was übersehen?
__________________________________________________
Thread verschoben
Bugs>Allgemein
09.12.2014
RSBasic
Re: Runtime funktioniert in Modulen nicht
Verfasst: 09.12.2014 23:01
von Nino
Gleiches Problem hier mit PB 5.31 x64 / Windows 7.
Ich denke nicht, dass Du etwas übersehen hast.
Re: Runtime funktioniert in Modulen nicht
Verfasst: 09.12.2014 23:08
von freak
So gehts:
When accessing public module items, the module prefix name is mandatory, even if UseModule is used.
http://www.purebasic.com/documentation/ ... ntime.html
Dieser Zusatz scheint in der deutschen Hilfe zu fehlen.
Re: Runtime funktioniert in Modulen nicht
Verfasst: 09.12.2014 23:12
von Nino
In dem Beispiel im 1. Beitrag wird aber gar nicht auf ein "public module item" zugegriffen, sondern auf ein privates Item, und der Zugriff findet
innerhalb des Moduls statt.
Wieso sollte es in diesem Fall nötig sein, das Modul-Prefix anzugeben? Der Compiler weiß doch (bzw. kann es wissen), wie das Modul heißt, in dem dies stattfindet.
Falls das hier demonstrierte Verhalten dennoch nicht als Bug eingestuft und daher nicht geändert wird, so sollte die Hilfe diesen Fall auch abdecken (zumal wohl kaum ein Nutzer solch ein Verhalten erwartet).
Re: Runtime funktioniert in Modulen nicht
Verfasst: 10.12.2014 20:20
von Andesdaf
Na ja, die Referenz in der Executable muss eindeutig sein, auch wenn Module verwendet werden.
Später kann man 'von außen' nicht mehr einsehen, ob sich die entsprechende Referenz inner- oder außerhalb eines
Modules befand. Von daher ist die Vorgehensweise so schon sinnvoll, wie ich finde. Wenn man beide Codeteile
zusammen ausführt, bekommt man bei beiden 1 als Ergebnis.
Auf jeden Fall danke für die Erläuterung.
Re: Runtime funktioniert in Modulen nicht
Verfasst: 10.12.2014 20:49
von Nino
Andesdaf hat geschrieben:Na ja, die Referenz in der Executable muss eindeutig sein, auch wenn Module verwendet werden.
Später kann man 'von außen' nicht mehr einsehen, ob sich die entsprechende Referenz inner- oder außerhalb eines
Modules befand.
Ja, das verstehe ich.
Aber
während des Compilier-Vorgangs weiß der Compiler doch, wie das Modul heißt in welchem er die betr.
private Referenz vorgefunden hat. Warum soll es erforderlich sein dass wir das Modul-Prefix per Hand hinschreiben, wenn der Compiler doch selbst das passende Prefix in die EXE mit reinschreiben kann, damit das später eindeutig ist?
Es wäre konsistent und viel schöner, wenn es für uns diesbezüglich für die
Runtime Sachen keine Sonderregeln gäbe. Und ich sehe eben nicht, warum solche nötig wären.
Leider ist Freak ja gar nicht richtig auf das Beispiel in Deiner ersten Nachricht eingegangen.
Denn er schrieb etwas über "public module items".
In Deinem beispiel tritt das Problem aber bei einem
privaten Modul-Item auf!
Falls ich etwas übersehen haben sollte, bitte ich um "Aufklärung" von kompetenter Seite.