include
-
DarkDragon
- Beiträge: 6291
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
@sobi: Prozeduren(Procedure ...() : EndProcedure) kann man mit Funktionen(function ...() { } ) vergleichen. In PHP kann man die Includedateien vom Script aus kontrollieren, in PB kannst du mit dem Code nichts an den Includedateien ändern.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
Hi freedimension,freedimension hat geschrieben:Zum übersichtlichem Gestalten von Code eignen sich neben Includes auch hervorragend Prozeduren (siehe Procedure). Dein Fall wäre eine gute Anwendung davon.
Hab das mir angeschaut, durchgelesen, probiert... wie und wo Bau ich eine Prozedur ein?
Liebe Grüße,
Simon
-
DarkDragon
- Beiträge: 6291
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
@sobi, schau dir mein Zitat meiner obigen Nachricht an.DarkDragon hat geschrieben:@sobi: Prozeduren(Procedure ...() : EndProcedure) kann man mit Funktionen(function ...() { } ) vergleichen. In PHP kann man die Includedateien vom Script aus kontrollieren, in PB kannst du mit dem Code nichts an den Includedateien ändern.
Da du PHP kannst kennst du sicher auch
function ...() { }
Die Prozedur muss zumindest vor den Aufrufen der Prozedur deklariert sein.
[EDIT]
Beispiel:
Code: Alles auswählen
Procedure ErrorMsg(Message.s)
MessageRequester("ERROR", Message.s)
EndProcedure
ErrorMsg("Blubber")Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
ungefähr so:sobi hat geschrieben:wie und wo Bau ich eine Prozedur ein?
Code: Alles auswählen
IncludeFile("test1.pb")
IncludeFile("test2.pb")
[...]
If EventMenuID()=1
Test1()
EndIf
If EventMenuID()=2
Test2()
EndIf
[...]
Code: Alles auswählen
Procedure Test1()
[...]
EndProcedure
Code: Alles auswählen
Procedure Test2()
[...]
EndProcedure
a²+b²=mc²
Hi Kiffi,
Hab das eingebaut und es funktioniert immerhin schon mal "zur hälfte". Er läd die neue Datei, doch nur wenn ich oben auf "funktion" klicke, dann zeigt er mir die geladene Datei an. Wenn ich dann die andere Datei lade, dann zeigt er mir diese auch an, wenn ich eben oben das Menü öffne. Wie beseitige ich das Problem?
So habe ich das eingebaut:
Vielen Dank für eure Mühe und Geduld!
Grüße,
Simon
Hab das eingebaut und es funktioniert immerhin schon mal "zur hälfte". Er läd die neue Datei, doch nur wenn ich oben auf "funktion" klicke, dann zeigt er mir die geladene Datei an. Wenn ich dann die andere Datei lade, dann zeigt er mir diese auch an, wenn ich eben oben das Menü öffne. Wie beseitige ich das Problem?
So habe ich das eingebaut:
Code: Alles auswählen
IncludeFile"test1.pb"
IncludeFile"test2.pb"
If OpenWindow(0,200,200,250,250,#PB_Window_SystemMenu,"Menü")
If CreateMenu(0, WindowID())
MenuTitle("funktionen")
MenuItem( 1, "test1.pb")
MenuItem( 2, "test2.pb")
MenuBar()
MenuItem( 3, "Ende")
EndIf
Repeat
EventID = WaitWindowEvent()
If EventID = #PB_Event_CloseWindow
Quit = 1
EndIf
If EventMenuID()=1
Test1()
EndIf
If EventMenuID()=2
Test2()
EndIf
If EventMenuID()=3
Quit=1
EndIf
Until Quit=1
EndIf
End Code: Alles auswählen
Procedure Test1()
CreateGadgetList(UseWindow(0))
TextGadget(1, 10,80,200,20,"DATEI 1")
EndProcedure Code: Alles auswählen
Procedure Test2()
CreateGadgetList(UseWindow(0))
TextGadget(1, 10,150,200,20,"DATEI 2")
EndProcedure Grüße,
Simon
so langsam verliere ich den Überblick...
haben wolltest. Vielleicht erklärst Du uns noch einmal, was das Programm
überhaupt tun soll.
Nebenbei: Nimm lieber nachfolgenden Code. Der flimmert nicht so
ja klar, ich bin davon ausgegangen, dass Du dieses Verhalten genausosobi hat geschrieben:Hab das eingebaut und es funktioniert immerhin schon mal
"zur hälfte". Er läd die neue Datei, doch nur wenn ich oben auf "funktion"
klicke, dann zeigt er mir die geladene Datei an.
haben wolltest. Vielleicht erklärst Du uns noch einmal, was das Programm
überhaupt tun soll.
Nebenbei: Nimm lieber nachfolgenden Code. Der flimmert nicht so
Code: Alles auswählen
IncludeFile"test1.pb"
IncludeFile"test2.pb"
If OpenWindow(0,200,200,250,250,#PB_Window_SystemMenu,"Menü")
If CreateMenu(0, WindowID())
MenuTitle("funktionen")
MenuItem( 1, "test1.pb")
MenuItem( 2, "test2.pb")
MenuBar()
MenuItem( 3, "Ende")
EndIf
Repeat
EventID = WaitWindowEvent()
Select EventID
Case #PB_Event_CloseWindow
Quit = 1
Case #PB_Event_Menu
Select EventMenuID()
Case 1
Test1()
Case 2
Test2()
Case 3
Quit=1
EndSelect
EndSelect
Until Quit=1
EndIf
End
a²+b²=mc²
Top, der Hase läuft!
Hi Kiffi,Kiffi hat geschrieben:ja klar, ich bin davon ausgegangen, dass Du dieses Verhalten genauso
haben wolltest. Vielleicht erklärst Du uns noch einmal, was das Programm
überhaupt tun soll.
Habe das mit deinem Code ausprobiert und mit dem funktioniert das so, wie ich es mir wünsche!
Coole Sache, dankeschön!
Liebe Grüße und vielen Dank für jeden Ratschlag,
Simon
-
Kaeru Gaman
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
wenn ich das hier halbwegs richtig verstehe, geht es um eine code-veränderung zur laufzeit.
das ist bei compiler-sprachen grundsätzlich nicht so möglich wie bei script-sprachen.
die hier vorgeschlagenen lösungen laufen allesamt darauf hinaus,
das sämtlicher code zur compilezeit zur verfügung steht,
zur laufzeit wird nur eine bedingte ausführung unterstützt.
wenn du ein routinen zur laufzeit erstellen willst, müsstest du den PB-compiler integrieren, (vorsicht: copyright)
dann könntest du DLLs erstellen lassen.
eine andere möglichkeit wäre eine eigene scriptsprache, die vorerstellte routinen anspricht.
das ist bei compiler-sprachen grundsätzlich nicht so möglich wie bei script-sprachen.
die hier vorgeschlagenen lösungen laufen allesamt darauf hinaus,
das sämtlicher code zur compilezeit zur verfügung steht,
zur laufzeit wird nur eine bedingte ausführung unterstützt.
wenn du ein routinen zur laufzeit erstellen willst, müsstest du den PB-compiler integrieren, (vorsicht: copyright)
dann könntest du DLLs erstellen lassen.
eine andere möglichkeit wäre eine eigene scriptsprache, die vorerstellte routinen anspricht.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.