Italia
Foro

Erledigt: Array - Deklaration

 

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-File ausgelesen und einigen globalen Variablen Werte zugewiesen werden.
Unter anderem findet sich der Eintrag
KompilierenMarkierenSeparieren
Max_Punkte%  = VAL(READINI$(INIFile$, OPTIONS, MaxShapePoints))
>

Die Variable ist selbstverständlich global deklariert.

In verschiedenen Prozeduren wird das globale Feld
KompilierenMarkierenSeparieren
Data![x%,y%]
>
ausgewertet, das zuvor nicht deklariert wurde.
Im weiteren Programmverlauf wird zunächst die Start-Prozedur aufgerufen und der Variablen
KompilierenMarkierenSeparieren
Max_Punkte%
>
ein Wert zugewiesen. Danach kommt auf der Hauptprogrammebene die Variablendeklaration
KompilierenMarkierenSeparieren
DECLARE Data![Max_Punkte%,5]
>
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
 {$cleq}
DECLARE Max_Punkte%

PROC Start

    Max_Punkte% = 5

ENDPROC

PROC Werte

    Data![1,1] = 123.456

ENDPROC

CLS
Start
DECLARE Data![Max_Punkte%,2]
Werte
PRINT Data![1,1]
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 naturalmente die Deklarationen welche extra dafür geschaffen sind - wie z.B. diese per Var.

Das hat auch etwas mit Include und Unità zu tun, in denen nunmal nicht nur Funktionen deklariert sein müssen sondern Programmteile gleich corsa 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 Panoramica eines Quellcodes.

Natürlich müsste XPSE hier nicht unbedingt warnen - besonders da es ja funktioniert.

Gegenargumentieren potuto man mit Du wirst aus Versehen, wenn Du schon das Deklare mitten im Code hast, circa 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 per alle weiteren Versionen supportati 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 corsa 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))
 
23.03.2009  
 




RGH
iF
Ist eigentlich das Deklarieren von statischen Arrays per Declare in dynamischer Grösse erlaubt?


Ja! Und in diesem Fall kann das DECLARE naturalmente erst dann im Code stehen, nachdem die Dimensione des Arrays ermittelt wurde.

Saluto
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)
 
23.03.2009  
 



RGH

iF
Ist eigentlich das Deklarieren von statischen Arrays per Declare in dynamischer Grösse erlaubt?


Ja! Und in diesem Fall kann das DECLARE naturalmente erst dann im Code stehen, nachdem die Dimensione des Arrays ermittelt wurde.

Saluto
Roland


Hm?
KompilierenMarkierenSeparieren
Hierbei steht zwar vom Ablauf her die Funktion auch circa der Deklaration, aber...
 
23.03.2009  
 




Stephan
Sonneborn
RGH

iF
Ist eigentlich das Deklarieren von statischen Arrays per Declare in dynamischer Grösse erlaubt?


Ja! Und in diesem Fall kann das DECLARE naturalmente erst dann im Code stehen, nachdem die Dimensione des Arrays ermittelt wurde.

Saluto
Roland


Hallo Roland, hallo David,

danke per 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 - Programmazione (wegen Hausumbau etc.) machts echt wieder riesigen Divertimento!!!
 
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 - Programmazione (wegen Hausumbau etc.) machts echt wieder riesigen Divertimento!!!


So geht das aber nicht!
 
24.03.2009  
 



Answer


Topictitle, max. 100 characters.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Topic-Options

5.536 Views

Untitledvor 0 min.
p.specht10.01.2018
Georg Teles13.02.2016
GDL24.08.2015
Richi14.11.2013

Themeninformationen

Dieses Thema hat 3 subscriber:

iF (4x)
Stephan Sonneborn (2x)
RGH (1x)


Admins  |  AGB  |  Applications  |  Autori  |  Chat  |  Informativa sulla privacy  |  Download  |  Entrance  |  Aiuto  |  Merchantportal  |  Impronta  |  Mart  |  Interfaces  |  SDK  |  Services  |  Giochi  |  Cerca  |  Support

Ein Projekt aller XProfaner, die es gibt!


Il mio XProfan
Private Notizie
Eigenes Ablageforum
Argomenti-Merkliste
Eigene Beiträge
Eigene Argomenti
Zwischenablage
Annullare
 Deutsch English Français Español Italia
Traduzioni

Informativa sulla privacy


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie