Aktuelle Zeit: 06.04.2020 07:42

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Prozedur per Adresse aufrufen (z.B.von @myPrivateCallBack())
BeitragVerfasst: 31.12.2013 17:11 
Offline
Benutzeravatar

Registriert: 21.07.2005 00:02
Wohnort: am schönen Niederrhein
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?

_________________
[Dynamic-Dialogs] - komplexe dynamische GUIs einfach erstellen
[DeFlicker] - Fenster flimmerfrei resizen
[WinFX] - Window Effekte (inkl. 'durchklickbares' Window)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Prozedur per Adresse aufrufen (z.B.von @myPrivateCallBac
BeitragVerfasst: 31.12.2013 17:13 
Offline
Admin
Benutzeravatar

Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Code:
Procedure abc()
  Debug "Hallo"
EndProcedure

Debug @abc();Adresse

CallFunctionFast(@abc());Aufruf

_________________
BildBildBildBild BildBild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Prozedur per Adresse aufrufen (z.B.von @myPrivateCallBac
BeitragVerfasst: 31.12.2013 17:19 
Offline

Registriert: 11.06.2007 12:55
Hi,

Es gibt noch eine zweite Möglichkeit:

Code:
Procedure abc(parameter)
  Debug "Hallo "+Hex(parameter)
EndProcedure

Prototype abc_ka(parameter)

*example2.abc_ka = @abc()

*example2(2)

Grüße
kevin


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Prozedur per Adresse aufrufen (z.B.von @myPrivateCallBac
BeitragVerfasst: 31.12.2013 17:22 
Offline
Benutzeravatar

Registriert: 21.07.2005 00:02
Wohnort: am schönen Niederrhein
*Autsch* ... tausend mal benutzt, aber nach so langer PB-Abstinenz komplett vergessen. :(

Vielen Dank Ray & Kevin :allright:

Wünsche Euch (und natürlich auch den anderen PBlern) 'nen guten Rutsch und ein tolles 2014. :mrgreen:

_________________
[Dynamic-Dialogs] - komplexe dynamische GUIs einfach erstellen
[DeFlicker] - Fenster flimmerfrei resizen
[WinFX] - Window Effekte (inkl. 'durchklickbares' Window)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Prozedur per Adresse aufrufen (z.B.von @myPrivateCallBac
BeitragVerfasst: 31.12.2013 17:22 
Offline
Benutzeravatar

Registriert: 08.09.2004 00:57
Wohnort: Berlin
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 :wink:

Allerdings finde ich am zweitem Beispiel die pointerdeklaration unnötig/falsch.
Code:
EnableExplicit

Procedure abc(parameter)
  Debug "Hallo "+Hex(parameter)
EndProcedure

Prototype abc_ka(parameter)

Define example2.abc_ka = @abc()

example2(2)

_________________
PureBasic 5.71 | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 19.3 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Prozedur per Adresse aufrufen (z.B.von @myPrivateCallBac
BeitragVerfasst: 02.01.2014 13:06 
Offline
Spassvogel
Benutzeravatar

Registriert: 17.10.2013 14:36
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?
Code:
Procedure abc(iVar, sVar.s)
Debug iVar
Debug sVar
EndProcedure
CallFunctionFast(@abc(), 25, @"String und so")

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. :)

_________________
PB 5.41 x64


Zuletzt geändert von Tommy am 27.01.2015 11:28, insgesamt 2-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Prozedur per Adresse aufrufen (z.B.von @myPrivateCallBac
BeitragVerfasst: 02.01.2014 13:29 
Offline
Benutzeravatar

Registriert: 08.09.2004 00:57
Wohnort: Berlin
@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? :mrgreen:
CallFunction... sind überbleibsel von PB3, nach Möglichkeit einfach ignorieren und nicht mehr nutzen.
Goto-Freaks und andere natürlich ausgenommen :mrgreen:

Gruß
Thomas

_________________
PureBasic 5.71 | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 19.3 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye