PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Programmteile auslagern



elkokiller
22.02.2009, 11:10
Hallo,

ich habe mal ne Frage zur Programmgestaltung.
Ist es eigentlich unter Bascom möglich, ein zweites Bascom-Programm, in dem sich ausgelagerte Programmteile befinden, in das Hauptprogramm einzubinden?
Ich meine z.B. einen Programmteil der eine Routine beinhaltet die man in anderen Programmen identisch benötigt wie z.B. einen DCF77 Programmteil der dann Wochentage, Weckerfunktionen, etc. beinhaltet?

Dirk
22.02.2009, 11:16
Ist es eigentlich unter Bascom möglich, ein zweites Bascom-Programm ... in das Hauptprogramm einzubinden?
Ja das geht:
$include "Zweites_Programm.bas"

Gruß Dirk

elkokiller
22.02.2009, 13:02
muss ich variablen dann im hauptprogramm oder im ausgelagertem festlegen?

BlaueLed
22.02.2009, 13:19
Hi,

das ist egal. Mach das wie es für Dich am einfachsten ist.

Gruß Kay

elkokiller
22.02.2009, 14:04
muss ich das zweite Programm nicht auch compilieren?

Netzman
22.02.2009, 14:47
nein, das macht der Compiler für dich ;) . bei einem $include macht der Compiler eigentlich nichts anderes, als den Inhalt der angegebenen Datei einfach an der Stelle im Code einzufügen, dann wird kompiliert.
Aufpassen muss man allerdings mit Funktionsdefinitionen (Deklaration bringt keine Probleme) und Unterprogrammen (Label und Return), wenn die im regulär ablaufendem Programm stehen werden die auch abgearbeitet.
Abhilfe schafft, was ich auch in Includes immer mache, ein einfaches Goto.
Also in etwa so:

(Inhalt Hauptprogramm)

$regfile = "..."
...

$include "my_functions.bas"

Do
...
Loop
End


(Inhalt myfunctions.bas)

Declare Function MyFunction(Byval parameter As Byte) as Byte

Dim MyVariable as Byte

Config XX ...

' Funktionen überspringen
Goto MyFunctions_runprog

Function MyFunction(Byval parameter As Byte) as Byte
...
End Function

Test_procedure:
...
Return

MyFunctions_runprog:


mfg

edit:
Achja man kompiliert dann immer nur die Hauptdatei, die Includes muss man da gar nicht anrühren. Weils mir aber auch immer wieder passiert, dass wenn ich eine Include bearbeitet habe und dann kompilieren will, das ich die Include kompiliere, was natürlich einen Haufen Fehler rauswirft. Das kann man umgehen, wenn man in jeder Include am Anfang "$nocompile" schreibt. Ist aber mehr was ergonomisches denn funktionelles :)

for_ro
22.02.2009, 14:49
muss ich das zweite Programm nicht auch compilieren?

Nein, das wird mit dem "Hauptprogramm" compiliert.
Man kann sogar die $nocompile Directive in den File schreiben, dann macht Bascom auch kein versehentliches compile.

Denk nur dran, dass der Inhalt des include Files komplett an die Stelle kommt, wo der $include Befehl steht. D.h., wenn dort eine sub enthalten ist und die wird ganz am Anfang reingebracht, dann läuft dein Programm evtl. direkt da rein.

Gruß

Rolf

elkokiller
22.02.2009, 16:42
na da muss ich noch ein bisschen experimentieren