 |
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
ALWIM

Anmeldungsdatum: 08.08.2006 Beiträge: 1048 Wohnort: Niederbayern
|
Verfasst am: 15.09.2014, 20:06 Titel: aus 2 Quellcodes ein Programm machen? |
|
|
Wie kann ich aus 2 unterschiedlichen Quellcodes ein Programm machen?
Es gibt ja die Möglichkeit mit dem #Define .bas?
Quellcode 1 wird aufgerufen und dort bestimmte Werte per Eingabe festgelegt. Programm 2 wertet dann die Werte aus bzw. verarbeitet sie!
Bloß wie rufe ich den einen Quellcode in dem anderen Quellcode auf?
Quellcode 1 und Quellcode 2 sind alles Hauptprogramme!
Vielleicht kann mir jemand helfen?
Gruß
ALWIM _________________ SHELL SHUTDOWN -s -t 05 |
|
Nach oben |
|
 |
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1278 Wohnort: Ruhrpott
|
Verfasst am: 16.09.2014, 01:57 Titel: |
|
|
Klar doch!
Es gibt da mehrere Möglichkeiten, ich habe sie dir einmal in zwei kleinen Programmen zusammengestellt.
Programm 1 (das Aufrufende): Code: | Dim As String summand1, summand2
Do
Print
Print "Dies ist Programm1"
Print "Bitte Summanden eingeben"
Input "Summand 1: ",summand1
Input "Summand 2: ",summand2
If summand1 = "" And summand2 = "" Then End
Shell ExePath + "\programm2.exe " + summand1 + " " + summand2 '1. Möglichkeit
'Shell "start " + ExePath + "\programm2.exe " + summand1 + " " + summand2 '2. Möglichkeit
'Exec (ExePath + "\programm2.exe", summand1 + " " + summand2) '3. Möglichkeit
'Run (ExePath + "\programm2.exe", summand1 + " " + summand2) '4. Möglichkeit
'Chain (ExePath + "\programm2.exe") '5. Möglichkeit (ungeeignet)
Loop |
Programm 2 (das Aufgerufene): Code: | Dim As Single summand1, summand2
summand1 = Val(Command(1))
summand2 = Val(Command(2))
Print
Print "Dies ist Programm 2 (";Command(0);")"
Print "Die Summe ist ";summand1 + summand2
Print "Zum Fortfahren beliebige Taste druecken"
Sleep
|
In Programm 1 werden zwei Zahlen eingegeben und als Argumente an Programm 2 übergeben, das sie zusammenzählt und das Ergebnis ausgibt. Programm 2 muß sich unter dem Namen "programm2.exe" im selben Verzeichnis befinden wie Programm 1. Die genauen Beschreibungen zu den verschiedenen Befehlen findest du in der Befehlsreferenz.
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
 |
ALWIM

Anmeldungsdatum: 08.08.2006 Beiträge: 1048 Wohnort: Niederbayern
|
Verfasst am: 16.09.2014, 17:34 Titel: |
|
|
grindstone hat Folgendes geschrieben: | Klar doch!
Es gibt da mehrere Möglichkeiten, ich habe sie dir einmal in zwei kleinen Programmen zusammengestellt.
Programm 1 (das Aufrufende): Code: | Dim As String summand1, summand2
Do
Print
Print "Dies ist Programm1"
Print "Bitte Summanden eingeben"
Input "Summand 1: ",summand1
Input "Summand 2: ",summand2
If summand1 = "" And summand2 = "" Then End
Shell ExePath + "\programm2.exe " + summand1 + " " + summand2 '1. Möglichkeit
'Shell "start " + ExePath + "\programm2.exe " + summand1 + " " + summand2 '2. Möglichkeit
'Exec (ExePath + "\programm2.exe", summand1 + " " + summand2) '3. Möglichkeit
'Run (ExePath + "\programm2.exe", summand1 + " " + summand2) '4. Möglichkeit
'Chain (ExePath + "\programm2.exe") '5. Möglichkeit (ungeeignet)
Loop |
Programm 2 (das Aufgerufene): Code: | Dim As Single summand1, summand2
summand1 = Val(Command(1))
summand2 = Val(Command(2))
Print
Print "Dies ist Programm 2 (";Command(0);")"
Print "Die Summe ist ";summand1 + summand2
Print "Zum Fortfahren beliebige Taste druecken"
Sleep
|
In Programm 1 werden zwei Zahlen eingegeben und als Argumente an Programm 2 übergeben, das sie zusammenzählt und das Ergebnis ausgibt. Programm 2 muß sich unter dem Namen "programm2.exe" im selben Verzeichnis befinden wie Programm 1. Die genauen Beschreibungen zu den verschiedenen Befehlen findest du in der Befehlsreferenz.
Gruß
grindstone |
Vielen herzlichen Dank für die Antwort, bloß:
Ich will nicht 2 .exe Dateien haben, sondern nur eine exe Datei, bei 2 Quellcodes!!!
Das ganze wurde etwas missverstanden.
Ein Quellcode wird zuerst aufgerufen und dann der andere!
Gruß
ALWIM _________________ SHELL SHUTDOWN -s -t 05 |
|
Nach oben |
|
 |
Lothar Schirm
Anmeldungsdatum: 24.04.2006 Beiträge: 65 Wohnort: Bayern
|
Verfasst am: 16.09.2014, 18:00 Titel: |
|
|
Hallo,
Rufe Quellcode 2 im Quellcode 1 mit #Include auf. Füge den Include-Befehl dort ein, wo Programm 2 tätig werden muss.
Sauberer wäre natürlich eine prozedurale Programmierung. Beispiel:
Programm1.bas:
Code: | #Include "Programm2.bas"
Dim As Single a, b, c
c = Auswertung(a, b)
print c
|
Programm2.bas:
Code: | Function Auswertung(a As Single, b As Single) As Single
'...( irgendeine Auswertung)
End Function |
|
|
Nach oben |
|
 |
ALWIM

Anmeldungsdatum: 08.08.2006 Beiträge: 1048 Wohnort: Niederbayern
|
Verfasst am: 16.09.2014, 18:57 Titel: |
|
|
Lothar Schirm hat Folgendes geschrieben: | Hallo,
Rufe Quellcode 2 im Quellcode 1 mit #Include auf. Füge den Include-Befehl dort ein, wo Programm 2 tätig werden muss.
Sauberer wäre natürlich eine prozedurale Programmierung. Beispiel:
Programm1.bas:
Code: | #Include "Programm2.bas"
Dim As Single a, b, c
c = Auswertung(a, b)
print c
|
Programm2.bas:
Code: | Function Auswertung(a As Single, b As Single) As Single
'...( irgendeine Auswertung)
End Function |
|
Kann es ja mal versuchen! Es sind leider 2 Hauptprogramme. Das ist das Problem! Da hilft wahrscheinlich nur testen.
Das was ich eigentlich programmieren will, ist schon höhere Programmierschule! Etwas kompliziert noch dazu!!! Vielleicht kriege ich es irgendwann mal hin? ?????? Keinen Durchblick mehr, bei dem was es werden soll (Multi...).
Gruß
ALWIM _________________ SHELL SHUTDOWN -s -t 05 |
|
Nach oben |
|
 |
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1278 Wohnort: Ruhrpott
|
Verfasst am: 16.09.2014, 19:11 Titel: |
|
|
Oder -etwas weniger elegant- die Holzhammermethode mit Copy & Paste
EDIT: Upps, da war ich zu langsam. Dies hier sollte eigentlich eins weiter oben stehen.
Aber ich muß Lothar Schirm zustimmen. #Include würde ich wirklich nur empfehlen, wenn das eingebundene Programm ausschließlich aus Prozeduren besteht. Sonst wird es sehr schnell chaotisch.
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
 |
ALWIM

Anmeldungsdatum: 08.08.2006 Beiträge: 1048 Wohnort: Niederbayern
|
Verfasst am: 16.09.2014, 19:26 Titel: |
|
|
grindstone hat Folgendes geschrieben: | Oder -etwas weniger elegant- die Holzhammermethode mit Copy & Paste
Gruß
grindstone |
Wie ist das zu verstehen?
Ich glaub, das wird nicht funktionieren?
Gruß
ALWIM _________________ SHELL SHUTDOWN -s -t 05 |
|
Nach oben |
|
 |
grindstone
Anmeldungsdatum: 03.10.2010 Beiträge: 1278 Wohnort: Ruhrpott
|
Verfasst am: 16.09.2014, 19:41 Titel: |
|
|
Zitat: | Wie ist das zu verstehen? | Ganz einfach: Programm 2 im Editor öffnen --> mit 'ctrl + a' alles markieren --> mit 'ctrl + c' alles in die Zwischenablage --> Programm 1 im Editor öffnen --> Cursor an die richtige Stelle setzen --> mit 'ctrl + v' Code von Programm 2 in Programm 1 einfügen.
Und dann ausprobieren, was der Compiler dazu sagt. Anschließend dann korrigieren, compilieren, korrigieren, compilieren, korrigieren, compilieren,...
Gruß
grindstone _________________ For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen! |
|
Nach oben |
|
 |
dreael Administrator

Anmeldungsdatum: 10.09.2004 Beiträge: 2529 Wohnort: Hofen SH (Schweiz)
|
Verfasst am: 16.09.2014, 22:03 Titel: |
|
|
ALWIM hat Folgendes geschrieben: | Kann es ja mal versuchen! Es sind leider 2 Hauptprogramme. Das ist das Problem! Da hilft wahrscheinlich nur testen.
Das was ich eigentlich programmieren will, ist schon höhere Programmierschule! Etwas kompliziert noch dazu!!! Vielleicht kriege ich es irgendwann mal hin? ?????? Keinen Durchblick mehr, bei dem was es werden soll (Multi...). |
Ist alles völlig einfach! Zu beachten: #include arbeitet auf Compilerebene als sog. Präprozessor. Funktioniert ganz kinderleicht: Aus
foo.bas hat Folgendes geschrieben: | PRINT "a"
#include "bar.bi"
PRINT "d" |
und
bar.bi hat Folgendes geschrieben: | PRINT "b"
PRINT "c" |
entsteht
Code: | PRINT "a"
PRINT "b"
PRINT "c"
PRINT "d" |
d.h. das #include wird einfach durch den Inhalt ersetzt!
In dem Sinn zwei Hauptprogramme gibt es auch nicht, weil FreeBasic ja in dem Sinn keine Main-Methode bzw. Prozedur ähnlich C/C++ und Java kennt, d.h. das Hauptprogramm sind einfach nur "lose" Statemens ausserhalb einer SUB und FUNCTION.
Sinnvollerweise aber muss dem Compiler eine .bas-Datei als Hauptdatei übergeben werden, in meinem Beispiel also foo.bas, welche zu einem foo.exe übersetzt würde. An und für sich wäre auch bar.bas möglich, aber als bar.bi (Basic Include ähnlich .h aus C) gekennzeichnet zeigt sofort, dass bar.bi etwas nicht selbständig übersetzbares ist.
/edit: Ein einfaches, aber sinnvolles Beispiel an dieser Stelle gebaut: Einfaches Modul, genau Klasse für komplexe Zahlen, die beliebig wiederverwendet werden kann:
http://beilagen.dreael.ch/QB/KomplexeZahlModul.zip
In FbEdit das Ganze als Projekttyp Library angelegt, d.h. soll nur ein Baustein ergeben, nichts selbständig ausführbares => .bas enthält nur die Implementierungen sämtlicher Methoden.
Einfaches Hauptprogramm:
http://beilagen.dreael.ch/QB/KomplexAnwHaupt1.zip
Ist als normale "-s GUI"-Anwendung deklariert, aber mit Project->Add existing->Modules unsere komplexe Zahl eingebunden => diese liefert dem Linker noch die nötigen Implementationen, damit eine lauffähige .exe gebildet werden kann.
Vorteil: In dieser Form könnte ich meine komplexen Zahlen beliebig oft wiederverwenden, z.B. für ein Mandelbrot-Projekt, Wechselstromberechnungstool usw. und ermögliche zentrale Änderungen, weil ich KomplexeZahlModul.bi (und auch die .bas) nicht als unabhängige Kopien überall hineinverteilen muss. => Optimale Wartbarkeit sichergestellt. _________________ Teste die PC-Sicherheit mit www.sec-check.net |
|
Nach oben |
|
 |
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|