Seite 1 von 1

Zweites Fenster

Verfasst: 20.11.2005 17:37
von Tsuki-Namida
Hallo ich bin es mal wieder :roll:

Ich habe ein kleine unter programm gemacht und möchte dieses in einem Hauptprogramm aufrufen.
Ich habe diesen befehl genutzt: IncludeFile "Player.pb"

Ich bekomme aber bei der Benutzeroberfläche des Players einen Fehler: AProcedure can't de declared inside an If, Repeat, While or For.

Und die Zeile sieht so aus:
Procedure Open_Window_0()

Was habe ich falsch gemacht????

Verfasst: 20.11.2005 17:42
von Andre
Eigentlich wie die Fehlermeldung sagt... :wink:

Include-Dateien solltest Du ziemlich am Anfang Deinens Hauptcodes "includen", da darin die Prozeduren deklariert werden.

Du machst dies vermutlich erst innerhalb der Hauptschleife.
Dort gehört jedoch nur der Aufruf der vorher (in der Include-Datei) deklarierten Prozedur hin.

Verfasst: 20.11.2005 17:57
von Tsuki-Namida
Sorry aber ich habe das leider nicht verstasnden :(

Verfasst: 20.11.2005 19:35
von FGK
Hallo Magix-Soft <Kain>

am besten postest du deinen Source hier im Thread
(aber schön in Code-Tags :D ) damit wir klarer sehen.
Nur so aufs gerade wohl wird das sonst nix mit ner fundierten
Fehlersuche.

Gruß FGK

Verfasst: 20.11.2005 19:44
von freedimension
Nun, eine Prozedur darf nicht innerhalb einer Schleife (For, While, Repeat) oder einer bedingten Verzweigung (If) stehen.
Wenn du also eine Include-Datei hast, welche eine Prozedur beherbergt, so darf diese auch nur ausserhalb der oben genannten Konstrukten eingefügt werden.

Verfasst: 20.11.2005 20:15
von Lupo
Ich vermute mal du möchtest das zweite Programm, mit dem ersten
Programm aufrufen und hast den Befehl IncludeFile "Player.pb"
einfach an die Stelle (nach einem Buttonevent) geschrieben wo du
den Player aufrufen willst.

Du schreibst den Befehl IncludeFile "Player.pb" am besten gaaanz
oben in die allererste Zeile deines Hauptprogrammes.
Dann kann nichts schief gehen.

Damit du aber das zweite Programm aus dem ersten aufrufen kannst,
wirst du den Hauptabschnitt des zweiten Programmes ebenfalls als
Procedure definieren müssen, d.h. vor die Haupt Repeat Schleife
(und allfällige Zeilen davor) kommt eine Zeile
Procedure zweitesprogramm()

und nach dem Until am Ende der Hauptschleife kommt Procedurereturn.
Das End bleibt draussen.

Damit das zweite Programm auch alleine Lauffähig bleibt, schreibst du
unter das Procedurereturn vor dem End die Zeile
zweitesprogramm()

Damit wird bei Direktstart des zweiten Programms diese Zeile aufgerufen
und das ist eben die Procedure mit der Hauptloop.

Aus dem ersten Programm rufst du bei dem gewünschten Buttonevent
ebenfalls zweitesprogramm() auf.

So in etwa wird es gehen.

Mögliche Probleme:

Gleiche Konstanten und Bezeichnungen in den beiden Programmen
Globale Variable

Der Debugger meckert ohnehin wenns nicht passt

viel Spass

LUPO

Verfasst: 20.11.2005 22:15
von Tsuki-Namida
Hier habe ich ein paar programm zeilen mit der abfrage des entsprechenden Buttons.

Code: Alles auswählen

; PureBasic Visual Designer v3.92 build 1460

IncludeFile "HauptFenster.pb"
IncludeFile "Player\1\winamp.pbi"
init = init_winamp("Player\1\in_mp3.dll","Player\1\out_wave.dll",hWindow)
Debug init

Open_Button_14()

Repeat ; Start of the event loop
  
  Event = WaitWindowEvent() ; This line waits until an event is received from Windows
  
  WindowID = EventWindowID() ; The Window where the event is generated, can be used in the gadget procedures
  
  GadgetID = EventGadgetID() ; Is it a gadget event?
  
  EventType = EventType() ; The event type
  
  ;You can place code here, and use the result as parameters for the procedures
  
  If Event = #PB_EventGadget
    
    If GadgetID = #Player_1
IncludeFile "Player\1\Player.pb"
      
    ElseIf GadgetID = #Plasyer_2
      
    ElseIf GadgetID = #Player_1_Einst

Verfasst: 20.11.2005 22:42
von freedimension
Und was ist hier 'IncludeFile "Player\1\Player.pb"' drinnen?

Verfasst: 21.11.2005 00:09
von Tsuki-Namida
IncludeFile "Player\1\Player.pb"
soll den Player aufrufen.
Dieser Text ist in 2 Verzeichnissen höher als der Text des Players deshalb aus "Player\1\"

Verfasst: 21.11.2005 01:31
von edel
Es ist egal wo sich die Includedatei befindet , wenn sich in der Datei z.b.
eine Prozedure befindet kannst du sie nicht innerhalb einer IF Anweisung
einbinden.

Schreibe es in etwa so :

Code: Alles auswählen

; PureBasic Visual Designer v3.92 build 1460

IncludeFile "HauptFenster.pb"
IncludeFile "Player\1\winamp.pbi"
IncludeFile "Player\1\Player.pb" ;>- hier ist die playerprocedure() definiert

[...]

  If Event = #PB_EventGadget
   
    If GadgetID = #Player_1
    playerprocedure()
     
    ElseIf GadgetID = #Plasyer_2
     
    ElseIf GadgetID = #Player_1_Einst