[erledigt] Ort im Source für Procs und Labels ?

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
scholly
Beiträge: 793
Registriert: 04.11.2005 21:30
Wohnort: Düsseldorf

[erledigt] Ort im Source für Procs und Labels ?

Beitrag 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
Zuletzt geändert von scholly am 21.04.2008 22:20, insgesamt 1-mal geändert.
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Beitrag 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.
Benutzeravatar
scholly
Beiträge: 793
Registriert: 04.11.2005 21:30
Wohnort: Düsseldorf

Beitrag 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
Benutzeravatar
PMV
Beiträge: 2765
Registriert: 29.08.2004 13:59
Wohnort: Baden-Württemberg

Beitrag 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:

Code: Alles auswählen

Test()

Procedure Test()
  ;Codezeilen ;-)
EndProcedure
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:

Code: Alles auswählen

Procedure Test()
  ;Codezeilen ;-)
EndProcedure

Test()
Und dieser Declare-Befehl wird in der Hilfe erwähnt bzw beschrieben :D
Siehe unter "Prozeduren Unterstützung " -> "Procedure : EndProcedure" -> etwas runter scrollen

MFG PMV
alte Projekte:
TSE, CWL, Chatsystem, GameMaker, AI-Game DLL, Fileparser, usw. -.-
Benutzeravatar
scholly
Beiträge: 793
Registriert: 04.11.2005 21:30
Wohnort: Düsseldorf

Beitrag 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
Benutzeravatar
Laurin
Beiträge: 1639
Registriert: 23.09.2004 18:04
Wohnort: /dev/eth0

Beitrag 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. :wink:
Now these points of data make a beautiful line.
And we're out of beta. We're releasing on time.
Benutzeravatar
scholly
Beiträge: 793
Registriert: 04.11.2005 21:30
Wohnort: Düsseldorf

Beitrag von scholly »

moin, moin...
Laurin hat geschrieben:Schau mal im Programmverzeichnis rum, da ist irgendwo auch eine deutsche Hilfe. :wink:
Wo hast Du die denn hier gesehen :lol: ?
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
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

Benutzeravatar
freedimension
Admin
Beiträge: 1987
Registriert: 08.09.2004 13:19
Wohnort: Ludwigsburg
Kontaktdaten:

Beitrag von freedimension »

Die ist immer dabei, schau noch mal im Zip nach :)
Beginne jeden Tag als ob es Absicht wäre!
Bild
BILDblog
Benutzeravatar
scholly
Beiträge: 793
Registriert: 04.11.2005 21:30
Wohnort: Düsseldorf

Beitrag 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 :o

bis denne...
scholly
Antworten