Kann sein das ich hier ein Verständnisproblem habe.
Ich habe das Formular und viele meiner Funktionen (Procduren) in einzelen Dateien ausgelagert, zur besseren Übersicht.
Im der Hauptdatei werden diese dann mit XInclude geladen.
Derzeit wird als erstes die Datei mit dem Formular und der Event-Schleife geladen. Dann die Datei mit den restlichen Funktionen (Proceduren)
In der Event-Schleife wird unter anderem eine Procedur die in der Funktionen-Datei steht aufgerufen werden.
Wieso will der Compiler schon beim Laden der Dateien die Existenz der Proceduren überprüfen? Die werden doch noch gar nicht ausgeführt, sonder nur inkludiert!?
Oder mache ich grundlegend etwas falsch?
Reihenfolge Includes [Gelöst]
Reihenfolge Includes [Gelöst]
Zuletzt geändert von Micky91 am 16.11.2013 15:16, insgesamt 1-mal geändert.
PureBasic 5.72 (x64) | Mac OSX 10.15.6
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Includes
>> Wieso will der Compiler schon beim Laden der Dateien die Existenz der Proceduren überprüfen?
Der Compiler führt als erstes alle Dateien zu einer zusammen, also muß auch die Reihenfolge der
Prozeduren stimmen, bzw. sind bei ungünstiger Reihenfolge Declare-Statesment erforderlich.
Es gelten dieselben Regeln, wie bei einer einzelnen Datei!
Gruß
Thomas
Der Compiler führt als erstes alle Dateien zu einer zusammen, also muß auch die Reihenfolge der
Prozeduren stimmen, bzw. sind bei ungünstiger Reihenfolge Declare-Statesment erforderlich.
Es gelten dieselben Regeln, wie bei einer einzelnen Datei!
Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Re: Includes
Was meinst du damit genau?
Bekommst du zufälligerweise solche Meldung?
Um das zu verhindern, gibt es zwei Möglichkeiten:
Zu langsam.
Bekommst du zufälligerweise solche Meldung?
Wenn ja, dann liegt es daran, dass im Code auf eine bestimmte Prozedur zugegriffen wird, die aber erst später definiert wird.PureBasic hat geschrieben: Zeile 123: DeineLieblingsProcedure() ist keine Funktion, Array, Makro oder LinkedList.
Um das zu verhindern, gibt es zwei Möglichkeiten:
- Reihenfolge der Prozeduren anpassen
- Vorzeitiges Deklarieren mit Declare
Zu langsam.
Re: Includes
Genau.
Ich hätte jetzt erwartet das ihm das erstmal egal ist da dieser Aufruf sich innerhalb einer Procedur befindet, letztendlich wird diese Procedur mit der Event-Schleife ja erst fast am Ende des Quelltextes aufgerufen, wenn alle anderen Quelltextteile inkludiert sind.
Code: Alles auswählen
Zeile 73: ImportListe() is not a function (or not available in demo version), array, list, map or macro.
PureBasic 5.72 (x64) | Mac OSX 10.15.6
Re: Includes
Wahrscheinlich meinst du etwa so:
A() greift auf B() zu, was aber erst später definiert wird, wobei A() erst am Ende aufgerufen wird. Trotzdem muss man wissen, dass der Code nur einmal durchgehend überprüft wird und nicht mehrfach.
Um das Problem beheben zu können, musst du beispielsweise folgendes tun:
Code: Alles auswählen
EnableExplicit
Procedure A(Variable)
B(Variable)
EndProcedure
Procedure B(Variable)
EndProcedure
A(0)
Um das Problem beheben zu können, musst du beispielsweise folgendes tun:
Code: Alles auswählen
EnableExplicit
Declare B(Variable)
Procedure A(Variable)
B(Variable)
EndProcedure
Procedure B(Variable)
EndProcedure
A(0)
Re: Includes [Gelöst]
Ja genau so ist es.
Danke fürs Aufklären
Danke fürs Aufklären

PureBasic 5.72 (x64) | Mac OSX 10.15.6