includefile als subroutine

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
obbba
Beiträge: 53
Registriert: 06.02.2006 17:33

includefile als subroutine

Beitrag von obbba »

Ich habe die Demoversion von Purebasic. Kann ich da anstatt von

Code: Alles auswählen

IF vorraussetzung = #erfüllt
 GOSUB bla
ENDIF
auch

Code: Alles auswählen

IF vorraussetzung = #erfüllt
 INCLUDEFILE bla.pb
ENDIF
schreiben um Platz zu sparen? Geht das auch in einer Schleife?
Irgendwelche Nachteile?
Benutzeravatar
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

Beitrag von ts-soft »

Sowas funktioniert bei einem nativen Compiler nicht. Das geht nur bei
interpretierten Sprachen!

Bedingte Compilierung ist möglich, aber das willste glaub ich nicht. Ansonsten
sieh mal unter CompilerIf CompilerEndIf nach.
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.
Bild
Marvin
Beiträge: 497
Registriert: 17.07.2005 14:42
Wohnort: Krikkit

Beitrag von Marvin »

warum nicht, ts-soft? Soweit ich es verstanden habe steht der Inhalt von der IncludeFile dann ja bei If:

Beispiel:
Inhalt von bla.pb: So schreibst du es:

Code: Alles auswählen

If bedingung = #erfüllt
  IncludeFile "bla.pb"
EndIf
So wird es kompiliert:

Code: Alles auswählen

If bedingung = #erfüllt
  End
EndIf
Oder? :?
Benutzeravatar
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

Beitrag von ts-soft »

IncludeFile geschieht während der Compilierung, nicht während der RunTime :wink:
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.
Bild
Benutzeravatar
obbba
Beiträge: 53
Registriert: 06.02.2006 17:33

Beitrag von obbba »

Leuchtet mir ein. Als exe weiß das programm quasi nicht mehr was mit bla.pb gemeint ist.
Mein programm sieht im Moment so aus:

Code: Alles auswählen

repeat
if ...
gosub ...
endif

if... 
gosub...
endif

if ...
gosub
endif

until ...
end

;------------------------------

bla1:
...

bla2:
...
Die Subroutinen werden also nur ausgeführt, wenn sie aufgerufen werden.
Könnte ich die auch in ein Includefile reinkopieren, was ich dann ganz am Anfang öffne?
Dann würden sie aber alle gleich ausgeführt werden.
Wenn ich Prozeduren nehme muss ich die ganzen Variablen globalisieren.
Benutzeravatar
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

Beitrag von ts-soft »

Code: Alles auswählen

Goto start
IncludeFile "bla.pb"
start:
Das geht, macht aber nicht viel Sinn :wink:
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.
Bild
Marvin
Beiträge: 497
Registriert: 17.07.2005 14:42
Wohnort: Krikkit

Beitrag von Marvin »

ts-soft hat geschrieben:IncludeFile geschieht während der Compilierung, nicht während der RunTime
Na, das mein ich doch... Im Source steht IncludeFile, in der Exe steht nur noch der Hauptsource mit allen Includes... Nochmal...
Source:

Code: Alles auswählen

If [...]
IncludeFile "bla.pb"
EndIf
Exe:

Code: Alles auswählen

If [...]
[...] ;Code aus bla.pb
EndIf
:?
Benutzeravatar
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

Beitrag von ts-soft »

Er möchte die Exe klein halten:

Code: Alles auswählen

If buh
  includefile "blah.pb"
endif
damit die exe kleiner ist, wenn buh unwahr ist :?
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.
Bild
Benutzeravatar
obbba
Beiträge: 53
Registriert: 06.02.2006 17:33

Beitrag von obbba »

Nein, nein!

Is schon richtig.

Ist mir egal wie groß die Exe ist. Nur der Code soll nicht so lang werden, weil ich die Demo-Version habe.

Ich probiers einfach aus.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

grundsätzlich dran denken, was schon ts sagte:

If findet zur laufzeit statt, include zur compilezeit.

natürlich kannst du das, was bei nem If passieren soll, auch in ein include packen,
aber praktische und übersichtlicher wäre es, die sub (oder besser noch eine Procedure)
in ein include zu packen, und in dem If einen aufruf zu belassen.

es ist nichts ungewöhnliches, den source in mehrere includes aufzusplitten.
viele machen das, obwohl sie die vollversion haben.


> Könnte ich die auch in ein Includefile reinkopieren, was ich dann ganz am Anfang öffne?
> Dann würden sie aber alle gleich ausgeführt werden.

wenn du Procedures verwendest, hast du das problem nicht mehr.
wenn du unbedingst subs nehmen möchtest, dann mach das include halt ans ende.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten