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:

Wie kann ich aus Unterprogramm wieder ins Hauptprogramm?

 
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
sebitoME



Anmeldungsdatum: 09.01.2008
Beiträge: 6

BeitragVerfasst am: 09.01.2008, 15:21    Titel: Wie kann ich aus Unterprogramm wieder ins Hauptprogramm? Antworten mit Zitat

servus

ich habe ein kleines problem. ich muss ein informationssystem programmieren, bei dem ich mit unterprogrammen arbeiten will. was muss ich programmieren, damit ich aus dem ausgewählten "sub" wieder ins hauptprogramm komme, oder gibts vllt eine taste die man drücken muss?


Beispielprogramm:
Code:
cls

Dim Bild as any ptr

Screen 17,32

Bild = ImageCreate (640,400)

Bload "neu23.bmp",Bild

put (0,0),Bild,Pset

'Hintergrund------------------------------

declare sub Koeln
declare sub XX
Dim shared a as integer

'-----------------------------
locate 9,3: print"Make your Choice"
locate 10,3: input "a=";a
print
select case a
case is =1
    Koeln                        'Aufruf des Unterproramms Koeln
case is =2
    XX                            'Aufruf des Unterprogramms XX
   
end select
'----------------------------------
'Unterprogramm Koeln
sub Koeln

Dim Bild as any ptr

Bild = ImageCreate (300,200)

Bload "Koeln.bmp",Bild

put (315,150),Bild,Pset

locate 12,18: print "In this picture"
locate 13,18: print "you see the"
locate 14,18: print "Cologne Cathedral"
end sub
'----------------------------------
'Unterprogramm XX
sub XX

Dim Bild as any ptr

Bild =ImageCreate (260,360)

Bload "XX.bmp",Bild

put (380,150),Bild,Pset

locate 12,18: print "In this picture"
locate 13,18: print "you see the"
locate 14,18: print "University"

end sub
'---------------------
locate 20,18: print "The End"
sleep


Editiert durch Moderator: Code-Tags hinzugefügt. (Sebastian)
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Flo
aka kleiner_hacker


Anmeldungsdatum: 23.06.2006
Beiträge: 1210

BeitragVerfasst am: 09.01.2008, 15:28    Titel: Antworten mit Zitat

erstmal willkommen im forum lächeln
dann würd ich vorschlagen, den code in code-boxen zu setzen (schaut übersichtlicher aus)
das macht man mit
[code]
Dein
Code
[/code]

zu deiner frage: wenn man am END SUB ankommt, springt freebasic automatisch zurück, wenn man vorher raus will, geht das mit EXIT SUB bzw EXIT FUNCTION
_________________
MFG
Flo

Satoru Iwata: Wer Spaß am Spielen hat, fragt nicht nach Grafik.

zum korrekten Verstaendnis meiner Beitraege ist die regelmaessige Wartung des Ironiedetektors unerlaesslich.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
sebitoME



Anmeldungsdatum: 09.01.2008
Beiträge: 6

BeitragVerfasst am: 09.01.2008, 15:39    Titel: Antworten mit Zitat

ja servus lächeln

also wenn ich das programm durchlaufen lasse. also hab ein sub ausgewählt über 1 oder 2 <enter>, wirds aufgerufen, wenn ich dann nochma enter drück, geht das progi wieder zu. und wenn ich da ne zahl eintippen will, auch.

das andere probier ich dann ma grad aus mit exit sub oder end function

schonma danke grinsen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
sebitoME



Anmeldungsdatum: 09.01.2008
Beiträge: 6

BeitragVerfasst am: 09.01.2008, 18:23    Titel: Antworten mit Zitat

Flo hat Folgendes geschrieben:
erstmal willkommen im forum lächeln
dann würd ich vorschlagen, den code in code-boxen zu setzen (schaut übersichtlicher aus)
das macht man mit
[code]
Dein
Code
[/code]

zu deiner frage: wenn man am END SUB ankommt, springt freebasic automatisch zurück, wenn man vorher raus will, geht das mit EXIT SUB bzw EXIT FUNCTION



also ich hab das end sub durch EXIT SUB ersetzt, aber das bringt irgendwie nichts?! wenn ich das programm über quick run laufen lasse, dann kann ich ins unterprogramm springen und das wars dann. danach schließt das programm.

könnte das an meinem compiler liegen?!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Digga



Anmeldungsdatum: 07.01.2006
Beiträge: 48

BeitragVerfasst am: 09.01.2008, 18:28    Titel: Antworten mit Zitat

setz mal mal ein SLEEP ans ende deines Hauptprogramms, damit FB nachdem beenden der Sub auf eine Tastatureingabe wartet

gruß Digga
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
sebitoME



Anmeldungsdatum: 09.01.2008
Beiträge: 6

BeitragVerfasst am: 09.01.2008, 18:38    Titel: Antworten mit Zitat

Digga hat Folgendes geschrieben:
setz mal mal ein SLEEP ans ende deines Hauptprogramms, damit FB nachdem beenden der Sub auf eine Tastatureingabe wartet

gruß Digga



alles klaro, dat hab ich.

kann ich nicht auch sowas machen wie, wenn ich im sub drin bin, um von da an den anfang zu springen?

input"Hauptmenue="; Hauptmenue
If Hauptmenue = 1 then gosub Hauptmenue
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Digga



Anmeldungsdatum: 07.01.2006
Beiträge: 48

BeitragVerfasst am: 09.01.2008, 18:42    Titel: Antworten mit Zitat

muss wenn:
Code:

input"Hauptmenue="; Hauptmenue
If Hauptmenue = 1 then exit sub

sofern ich mich jetzt nicht ganz irre
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
sebitoME



Anmeldungsdatum: 09.01.2008
Beiträge: 6

BeitragVerfasst am: 09.01.2008, 18:54    Titel: Antworten mit Zitat

Digga hat Folgendes geschrieben:
muss wenn:
Code:

input"Hauptmenue="; Hauptmenue
If Hauptmenue = 1 then exit sub

sofern ich mich jetzt nicht ganz irre


danke dat funzt schonma. lächeln

wenn ich das richtig sehe, dann geht freebasic ja die daten von oben nach unten durch beim programmverlauf!?

wenn ich dann jez wieder in mein hauptmenue will, muss ich dann im prinzip wenn ich den text schreib, meinen anfang wieder unten drunter setzen, damit man die möglichkeit hat von vorne auszuwählen!? oder gibts eine möglichkeit, dass der da automatisch wieder hinspringt?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Digga



Anmeldungsdatum: 07.01.2006
Beiträge: 48

BeitragVerfasst am: 09.01.2008, 19:01    Titel: Antworten mit Zitat

Eine der Möglichkeiten ist dein Hauptprog in eine Schleife zu setzten.
Bei
Code:

do

Hauptprog

loop until taste = chr(27)

Bei dem Beispiel läuft dein Prog solange bist du die Escape-Taste zum beenden der Schleife drückst.
Dafür mußt du aber noch zwei Zeilen Code einfügen:

1. am Anfang bei deinen Deklarationen
Code:
dim taste as integer


2. im Hauptprog
Code:
taste = inkey
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
sebitoME



Anmeldungsdatum: 09.01.2008
Beiträge: 6

BeitragVerfasst am: 09.01.2008, 19:15    Titel: Antworten mit Zitat

k, schonma danke. muss ich ma gucken ob ich das umgesetzt bekomm durchgeknallt
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1839
Wohnort: [JN58JR]

BeitragVerfasst am: 09.01.2008, 20:53    Titel: Antworten mit Zitat

Flo hat Folgendes geschrieben:
... dann würd ich vorschlagen, den code in code-boxen zu setzen
... dat heißt "TAG" .. Code-TAG's grinsen .. (das is informativer)


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 10.01.2008, 20:21    Titel: Antworten mit Zitat

Steh ich auf'm Schlauch, oder ist das nicht das was du willst?

Code:

Declare Sub NeSub(ByVal Param1 As Integer)

NeSub(1337)

Sub NeSub(ByVal Param1 As Integer)
  If Param1=1337 Then Exit Sub
  Print "Nicht 1337 genug!"
End Sub

_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
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