Seite 1 von 2
[erledigt] Ort im Source für Procs und Labels ?
Verfasst: 21.11.2005 19:36
von scholly
moin, moin...
Aus Gründen der Übersichtlichkeit und Wiederverwendbarkeit möcht ich viel mit Procs und Labels arbeiten, die ich eigentlich auch gerne (wenn sie zur Zufriedenheit funktionuckeln) auslagern und per "XIncludeFile" nutzen würde.
Nun stellt sich mir die Frage, wo (im Source) ich sie ansiedeln darf/kann/muß.
Einige, die vor dem Aufbau des Fensters laufen, würde ich eher vor den Hauptteil setzen, andere, die z.B. aus der "Event Loop" heraus angesprungen werden, hinter das abschließende "END".
Eine Suche nach "Programmaufbau" war nich so ergiebig.
(Wo) Kann ich sowas "Grundlegendes" nachlesen ?
Oder ist PB so "freizügig", daß es mir keine Vorschriften macht ?
bis denne...
scholly
Verfasst: 21.11.2005 19:43
von NicTheQuick
Im Grunde macht dir PB keine Vorschriften. Du kannst nur keine
Procedure aufrufen, die du nicht vorher irgendwo im Code stehen hast.
Dieses Problem kann nur mit dem Befehl [c]Declare[.Typ] <Funktionsname([Parameter, ...])>[/c]
umgangen werden. Schau dir dazu einfach mal die Hilfe an.
Verfasst: 21.11.2005 20:00
von scholly
moin, moin...
NicTheQuick hat geschrieben: Du kannst nur keine Procedure aufrufen, die du nicht vorher irgendwo im Code stehen hast.
Das lautet im Original aber etwas anders:
Sometimes a procedure need to call another procedure which isn't declared before its definition. This is annoying because the compiler will complain 'Procedure <name> not found'. Declare can help in this particular case by declaring only the header of the procedure. Nevertheless, the Declare and real Procedure declaration must be identical (including the correct type).
Für mich ist das Hauptprogramm keine Procedure, womit Procs nach dem "END" kein Problem machen dürften.
I know, I know, das könnt ich auch mit "learning by doing" herausfinden, aber ich vermeide Fehler lieber von vorne herein. Und andere finden dann beim Suchen vielleicht das, was ich gesucht habe
Schau dir dazu einfach mal die Hilfe an.
Hilfe ? Welche Hilfe ? Ich hab bisher nur eine recht gute Befehlsreferenz gefunden

Und da such ich selbstverfreilich ersma rum, bevor ich hier vorstellig werde.
bis denne
scholly
Verfasst: 21.11.2005 20:17
von PMV
Also für mich steht in dem Zitat eigentlich das selbe wie Nic es gepostet hat ...
Im Grunde ist es egal, wo Prozeduren definiert werden. Ob am Anfang, am Ende oder gar mittem im Code
Bevor aber eine Prozedur nicht deklariert wurde, kann diese nicht aufgerufen werden.
Das heißt das folgende gibt eine Fehlermeldung:
Mit dem Declare kann man das aber bei bedarf umgehen:
Code: Alles auswählen
Declare Test()
Test()
Procedure Test()
;Codezeilen ;-)
EndProcedure
Da aber so für jede Prozedur ein Declare nötig wäre ist es vorteilhafter, man deklariert die ganzen Prozeduren am Anfang:
Und dieser Declare-Befehl wird in der Hilfe erwähnt bzw beschrieben
Siehe unter "Prozeduren Unterstützung " -> "Procedure : EndProcedure" -> etwas runter scrollen
MFG PMV
Verfasst: 21.11.2005 21:22
von scholly
moin, moin...
PMV hat geschrieben:
Siehe unter "Prozeduren Unterstützung " -> "Procedure : EndProcedure" -> etwas runter scrollen
Die Deutsche Online-Hilfe ist nur auf Stand 3.51, weswegen ich die im Kauf-Paket enthaltene englische Version nutze, die (zumindest laut History) v3.94 ist.
Mir ist schon klar, daß das mit "Declare" geht, aber für mich ist der Aufruf aus dem Hauptteil eben nicht
dass eine Prozedur von einer anderen Prozedur aufgerufen wird
Ich nehm das mal so hin, daß der Hauptteil dals Procedure "main" anzusehen ist

und alle Procs vorher definiert (hier: included) sein sollten, wobei der Includebefehl wohl nicht innerhalb einer If-, Repeat-, While- oder For-Konstruktion stehen darf (was meinereiner aus dem Thread "Zweites Fenster" lernen konnte

).
Was ist mit den Unterprogrammen (labels), die mit GOSUB angesprungen werden ?
Gibts da auch so Fallstricke ?
bis denne...
scholly
Verfasst: 21.11.2005 21:27
von Laurin
scholly hat geschrieben:weswegen ich die im Kauf-Paket enthaltene englische Version nutze, die (zumindest laut History) v3.94 ist.
Schau mal im Programmverzeichnis rum, da ist irgendwo auch eine deutsche Hilfe.

Verfasst: 21.11.2005 21:46
von scholly
moin, moin...
Laurin hat geschrieben:Schau mal im Programmverzeichnis rum, da ist irgendwo auch eine deutsche Hilfe.

Wo hast Du die denn hier gesehen

?
Datenträger in Laufwerk C: ist System
Verzeichnis von C:\Programme\ugs\dev\PureBasic
21.11.2005 20:38 <DIR> .
21.11.2005 20:38 <DIR> ..
18.11.2005 21:01 <DIR> Catalogs
21.11.2005 19:00 <DIR> Compilers
18.11.2005 21:01 <DIR> Debugger
21.11.2005 17:41 <DIR> Examples
13.11.2005 14:06 <DIR> examples_auch_demo
18.11.2005 21:01 <DIR> Library SDK
02.11.2005 11:32 268.548 PBOSL.chm
17.08.2005 01:26 980.633 PureBasic.chm
02.09.2005 13:00 849.408 PureBasic.exe
21.11.2005 19:00 9.107 PureBasic.prefs
18.11.2005 21:01 <DIR> PureLibraries
18.11.2005 21:01 <DIR> Residents
05.07.2004 02:07 56.832 SmartUpdate.exe
21.11.2005 19:00 17 Templates.prefs
18.11.2005 21:01 91.929 unins000.dat
27.06.2004 02:00 77.257 unins000.exe
12.04.2004 15:21 189.001 Visual Designer.chm
19.05.2005 21:33 374.816 Visual Designer.exe
21.11.2005 17:40 <DIR> _ugs_mmm
bis denne...
scholly
Verfasst: 21.11.2005 21:54
von edel
Verfasst: 21.11.2005 21:54
von freedimension
Die ist immer dabei, schau noch mal im Zip nach

Verfasst: 21.11.2005 22:56
von scholly
moin, moin...
@hallodri:
Das gibts aber nur online, nicht als .chm oder anders zur Offline-Nutzung.
@freedimension
Die ist immer dabei, schau noch mal im Zip nach
Welches Zip ?
Sowohl das Demo, als auch das Registrierte kommen als .exe
bis denne...
scholly