Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

aus 2 Quellcodes ein Programm machen?

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1048
Wohnort: Niederbayern

BeitragVerfasst am: 15.09.2014, 20:06    Titel: aus 2 Quellcodes ein Programm machen? Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1278
Wohnort: Ruhrpott

BeitragVerfasst am: 16.09.2014, 01:57    Titel: Antworten mit Zitat

Klar doch! lächeln

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1048
Wohnort: Niederbayern

BeitragVerfasst am: 16.09.2014, 17:34    Titel: Antworten mit Zitat

grindstone hat Folgendes geschrieben:
Klar doch! lächeln

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
Benutzer-Profile anzeigen Private Nachricht senden
Lothar Schirm



Anmeldungsdatum: 24.04.2006
Beiträge: 65
Wohnort: Bayern

BeitragVerfasst am: 16.09.2014, 18:00    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1048
Wohnort: Niederbayern

BeitragVerfasst am: 16.09.2014, 18:57    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1278
Wohnort: Ruhrpott

BeitragVerfasst am: 16.09.2014, 19:11    Titel: Antworten mit Zitat

Oder -etwas weniger elegant- die Holzhammermethode mit Copy & Paste grinsen

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
ALWIM



Anmeldungsdatum: 08.08.2006
Beiträge: 1048
Wohnort: Niederbayern

BeitragVerfasst am: 16.09.2014, 19:26    Titel: Antworten mit Zitat

grindstone hat Folgendes geschrieben:
Oder -etwas weniger elegant- die Holzhammermethode mit Copy & Paste grinsen

Gruß
grindstone

Wie ist das zu verstehen?
Ich glaub, das wird nicht funktionieren?

Gruß
ALWIM
_________________
SHELL SHUTDOWN -s -t 05
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
grindstone



Anmeldungsdatum: 03.10.2010
Beiträge: 1278
Wohnort: Ruhrpott

BeitragVerfasst am: 16.09.2014, 19:41    Titel: Antworten mit Zitat

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,... zwinkern

Gruß
grindstone
_________________
For ein halbes Jahr wuste ich nich mahl wie man Proggramira schreibt. Jetzt bin ich einen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
dreael
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 2529
Wohnort: Hofen SH (Schweiz)

BeitragVerfasst am: 16.09.2014, 22:03    Titel: Antworten mit Zitat

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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
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.

 Impressum :: Datenschutz