| |
|
|
Stephan Sonneborn | Hallo iF, ich hab da mal ne Frage: In meinem Programm habe ich eine Start-Prozedur, in der einige Werte aus einer INI-Datei ausgelesen und einigen globalen Variablen Werte zugewiesen werden. Unter anderem findet sich der Eintrag KompilierenMarkierenSeparieren Die Variable ist selbstverständlich global deklariert.
In verschiedenen Prozeduren wird das globale Feld KompilierenMarkierenSeparieren ausgewertet, das zuvor nicht deklariert wurde. Im weiteren Programmverlauf wird zunächst die Start-Prozedur aufgerufen und der Variablen KompilierenMarkierenSeparieren ein Wert zugewiesen. Danach kommt auf der Hauptprogrammebene die Variablendeklaration KompilierenMarkierenSeparieren und die Prozeduren, die das Array behandeln, werden aufgerufen. Der Interpreter hat kein Problem damit, der XPSE jedoch schon, denn der meckert, die Variable Data! sei nicht deklariert. Wieso?
Da das ganze ja ziemlich umständlich zu erklären ist, hier ein Beispiel: KompilierenMarkierenSeparieren |
|
|
| Schöne Grüße aus Wittgenstein von Stephan
Programmierumgebung:| XProfan X4 | WIN10 | AMD FX6100 3,3 GHz | 23.03.2009 ▲ |
|
|
|
|
| Kurz gesagt weil XPSE immer lieber einen Fehler unterstellt, als einen durchgehen zu lassen.
Solch Deklarationen (imho egal ob global oder local) sollten vor dem Programmablauf passieren, ausgenommen natürlich die Deklarationen welche extra dafür geschaffen sind - wie z.B. diese per Var.
Das hat auch etwas mit Includes und Units zu tun, in denen nunmal nicht nur Funktionen deklariert sein müssen sondern Programmteile gleich ausgeführt werden können.
XProfan selbst interpretiert den Code und sieht diesen in Ablaufreihenfolge - diesen Luxus kann man nur sehr begrenzt ohne echtes Ausführen emulieren - wohlbemerkt es imho sogar schädlich sein kann auch wegen der Übersicht eines Quellcodes.
Natürlich müsste XPSE hier nicht unbedingt warnen - besonders da es ja funktioniert.
Gegenargumentieren könnte man mit Du wirst aus Versehen, wenn Du schon das Deklare mitten im Code hast, über dieser Deklaration auf diese Variable zugreifen - was dann knallt. oder auch Nur weil es in XProfan funktioniert heisst dies noch lange nicht, dass es auch für alle weiteren Versionen unterstützt ist - besonders wenn nicht explizit erwähnt ist, dass es eben funktioniert.
Naja, und weil XPSE eben nicht riechen kann, welche Zeile tatsächlich WANN ausgeführt wird, und weil es eben keinen Nachteil bedeutet ein Declare auch im Kopf anzuwenden, warnt er lieber.
Ist eigentlich das Deklarieren von statischen Arrays per Declare in dynamischer Grösse erlaubt? (Ich dachte immer hier wären nur Konstanten erlaubt was dieses Anwarnen handfester machen würde. (imho hatte ich es _auch deshalb so gehandhabt)) |
|
|
| |
|
|
|
RGH | iF
Ist eigentlich das Deklarieren von statischen Arrays per Declare in dynamischer Grösse erlaubt?
Ja! Und in diesem Fall kann das DECLARE natürlich erst dann im Code stehen, nachdem die Größe des Arrays ermittelt wurde.
Gruß Roland |
|
|
| Intel Duo E8400 3,0 GHz / 4 GB RAM / 1000 GB HDD - ATI Radeon HD 4770 512 MB - Windows 7 Home Premium 32Bit - XProfan X4 | 23.03.2009 ▲ |
|
|
|
|
| Jupp, ist dann auch klar...
Werde ich korrigieren! (wenn wieder im Lande, sollte diese Woche noch was werden) |
|
|
| |
|
|
|
| RGH
iFIst eigentlich das Deklarieren von statischen Arrays per Declare in dynamischer Grösse erlaubt? Ja! Und in diesem Fall kann das DECLARE natürlich erst dann im Code stehen, nachdem die Größe des Arrays ermittelt wurde. Gruß Roland
Hm? KompilierenMarkierenSeparieren Hierbei steht zwar vom Ablauf her die Funktion auch über der Deklaration, aber... |
|
|
| |
|
|
|
Stephan Sonneborn | RGH
iFIst eigentlich das Deklarieren von statischen Arrays per Declare in dynamischer Grösse erlaubt? Ja! Und in diesem Fall kann das DECLARE natürlich erst dann im Code stehen, nachdem die Größe des Arrays ermittelt wurde. Gruß Roland
Hallo Roland, hallo David,
danke für Eure raschen Antworten!
Ich hatte als Workaround erst mal das Array statisch am Programmanfang gesetzt, um den XPSE nutzen zu können. Aber nun stelle ichs wieder da hin, wo es ursprünglich war und werde einfach mal warten, was ein evtl. Update vom XPSE bringt...
BTW: Nach gut zwei Jahren ohne XProfan - Programmierung (wegen Hausumbau etc.) machts echt wieder riesigen Spaß!!! |
|
|
| Schöne Grüße aus Wittgenstein von Stephan
Programmierumgebung:| XProfan X4 | WIN10 | AMD FX6100 3,3 GHz | 24.03.2009 ▲ |
|
|
|
|
| Stephan Sonneborn
BTW: Nach gut zwei Jahren ohne XProfan - Programmierung (wegen Hausumbau etc.) machts echt wieder riesigen Spaß!!!
So geht das aber nicht! |
|
|
| |
|
|