Hi Leuts,
ich scheine momentan irgendwie auf'm Schlauch zu steh'n (auh mann ... das Alter, das Alter).
Ich suche den Befehl um eine PB-Prozedur per Adresse aufzurufen.
Jemand 'nen Tipp?
Prozedur per Adresse aufrufen (z.B.von @myPrivateCallBack())
- PureLust
- Beiträge: 1145
- Registriert: 21.07.2005 00:02
- Computerausstattung: Hab aktuell im Grunde nur noch 'nen Lenovo Yoga 2 Pro im Einsatz.
- Wohnort: am schönen Niederrhein
Prozedur per Adresse aufrufen (z.B.von @myPrivateCallBack())
[Dynamic-Dialogs] - komplexe dynamische GUIs einfach erstellen
[DeFlicker] - Fenster flimmerfrei resizen
[WinFX] - Window Effekte (inkl. 'durchklickbares' Window)
[DeFlicker] - Fenster flimmerfrei resizen
[WinFX] - Window Effekte (inkl. 'durchklickbares' Window)
Re: Prozedur per Adresse aufrufen (z.B.von @myPrivateCallBac
Code: Alles auswählen
Procedure abc()
Debug "Hallo"
EndProcedure
Debug @abc();Adresse
CallFunctionFast(@abc());Aufruf
Re: Prozedur per Adresse aufrufen (z.B.von @myPrivateCallBac
Hi,
Es gibt noch eine zweite Möglichkeit:
Grüße
kevin
Es gibt noch eine zweite Möglichkeit:
Code: Alles auswählen
Procedure abc(parameter)
Debug "Hallo "+Hex(parameter)
EndProcedure
Prototype abc_ka(parameter)
*example2.abc_ka = @abc()
*example2(2)
kevin
- PureLust
- Beiträge: 1145
- Registriert: 21.07.2005 00:02
- Computerausstattung: Hab aktuell im Grunde nur noch 'nen Lenovo Yoga 2 Pro im Einsatz.
- Wohnort: am schönen Niederrhein
Re: Prozedur per Adresse aufrufen (z.B.von @myPrivateCallBac
*Autsch* ... tausend mal benutzt, aber nach so langer PB-Abstinenz komplett vergessen.
Vielen Dank Ray & Kevin
Wünsche Euch (und natürlich auch den anderen PBlern) 'nen guten Rutsch und ein tolles 2014.
Vielen Dank Ray & Kevin
Wünsche Euch (und natürlich auch den anderen PBlern) 'nen guten Rutsch und ein tolles 2014.
[Dynamic-Dialogs] - komplexe dynamische GUIs einfach erstellen
[DeFlicker] - Fenster flimmerfrei resizen
[WinFX] - Window Effekte (inkl. 'durchklickbares' Window)
[DeFlicker] - Fenster flimmerfrei resizen
[WinFX] - Window Effekte (inkl. 'durchklickbares' Window)
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Prozedur per Adresse aufrufen (z.B.von @myPrivateCallBac
Die Möglichkeit mit Prototype ist die einzige, die man nutzen sollte.
Solange es keine Parameter in dem Beispiel von RSBasic gibt, ist es
aber nicht ganz so schlimm
Allerdings finde ich am zweitem Beispiel die pointerdeklaration unnötig/falsch.
Solange es keine Parameter in dem Beispiel von RSBasic gibt, ist es
aber nicht ganz so schlimm
Allerdings finde ich am zweitem Beispiel die pointerdeklaration unnötig/falsch.
Code: Alles auswählen
EnableExplicit
Procedure abc(parameter)
Debug "Hallo "+Hex(parameter)
EndProcedure
Prototype abc_ka(parameter)
Define example2.abc_ka = @abc()
example2(2)
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Re: Prozedur per Adresse aufrufen (z.B.von @myPrivateCallBac
Geile Sache. Das habe ich auch noch nicht gewusst das man mit so etwas machen kann.
ts-soft: Wenn Parameter übergeben werden müssen warum ist Prototype die einzige die man nutzen sollte?
Basierend auf rs-basics Code könnte man auch so machen oder?
Sieht einfacher und kürzer als mit Prototype aus ohne extra Define usw. Kannst du mir erklären was daran falsch oder ungeeignet ist? Ich will es nur verstehen.
ts-soft: Wenn Parameter übergeben werden müssen warum ist Prototype die einzige die man nutzen sollte?
Basierend auf rs-basics Code könnte man auch so machen oder?
Code: Alles auswählen
Procedure abc(iVar, sVar.s)
Debug iVar
Debug sVar
EndProcedure
CallFunctionFast(@abc(), 25, @"String und so")
Zuletzt geändert von Tommy am 27.01.2015 11:28, insgesamt 2-mal geändert.
PB 5.41 x64
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Prozedur per Adresse aufrufen (z.B.von @myPrivateCallBac
@Tommy
1. Ohne Prototype, kann nur Integer als Ergebnis zurückgegeben werden, also keine Quad, Double usw. (bzw.
Strings werden leider nicht als solche zurückgegeben, sondern als Pointer)
2. Der Type der Parameter kann nicht festgelegt werden, es sind immer Integer. Quad, String usw. funktionieren nicht!
3. Optionale Parameter, Pseudo-Types usw., sind nicht möglich.
4. Der Compiler kann die anzahl der angegebenen Parameter nicht überprüfen und übergibts diese ohne Überprüfung.
>> Sieht einfacher und kürzer als mit Prototype aus ohne extra Define usw
Willst Du sauber Programmieren oder schöne "Sch*isse" produzieren?
CallFunction... sind überbleibsel von PB3, nach Möglichkeit einfach ignorieren und nicht mehr nutzen.
Goto-Freaks und andere natürlich ausgenommen
Gruß
Thomas
1. Ohne Prototype, kann nur Integer als Ergebnis zurückgegeben werden, also keine Quad, Double usw. (bzw.
Strings werden leider nicht als solche zurückgegeben, sondern als Pointer)
2. Der Type der Parameter kann nicht festgelegt werden, es sind immer Integer. Quad, String usw. funktionieren nicht!
3. Optionale Parameter, Pseudo-Types usw., sind nicht möglich.
4. Der Compiler kann die anzahl der angegebenen Parameter nicht überprüfen und übergibts diese ohne Überprüfung.
>> Sieht einfacher und kürzer als mit Prototype aus ohne extra Define usw
Willst Du sauber Programmieren oder schöne "Sch*isse" produzieren?
CallFunction... sind überbleibsel von PB3, nach Möglichkeit einfach ignorieren und nicht mehr nutzen.
Goto-Freaks und andere natürlich ausgenommen
Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.