Prototypes nicht verstanden

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
exit
Beiträge: 36
Registriert: 24.03.2008 12:17
Computerausstattung: - Windows 10
- PureBasic 5.62

Prototypes nicht verstanden

Beitrag von exit »

Hallo,

es wird oft die Verwendung von Prototypes anstatt CallFunktion empfohlen.

Dies würde ich gerne beherzigen, jedoch wird dieser Befehl recht mager beschrieben (vielleicht bin ich auch zu blöd?).

Unten seht ihr Auszüge aus meinem momentanen (funktionsfähigen) code den ich gerne entsprechend umstellen möchte.

Code: Alles auswählen

OpenLibrary(0, "EASY_COM.dll")
...
Return_opencom = CallFunction(0, "Open_ComPort",9, 57600)
...
return_Read_Object_Value2 = CallFunction(0,"Read_Object_Value",0,10,49, @MD49_Data)
Ein Denkanstoss oder ein Mustercode von euch wäre nett.

Gruß
exit
- Windows 10
- PureBasic 5.62
Benutzeravatar
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: Prototypes nicht verstanden

Beitrag von ts-soft »

Dein Code würde in etwa so aussehen:

Code: Alles auswählen

EnableExplicit

Prototype Open_ComPort(a, b)
Prototype Read_Object_Value(a, b, c, d)

Global Open_ComPort.Open_ComPort
Global Read_Object_Value.Read_Object_Value

Define Return_opencom, return_Read_Object_Value2, MD49_Data

If OpenLibrary(0, "EASY_COM.dll")
  Open_ComPort = GetFunction(0, "Open_ComPort")
  Read_Object_Value = GetFunction(0, "Read_Object_Value")
 
  ...
  Return_opencom = Open_ComPort(9, 57600)
  ...
 
  return_Read_Object_Value2 = Read_Object_Value(0, 10, 49, @MD49_Data)
EndIf
Statt a, b usw. solltest Du natürlich Aussagekräftige Variablennamen nutzen, also Baud, Paritaet usw.

Der Vorteil:
Du rufst die DLL Funktionen genauso auf wie andere Funktionen/Prozeduren
Der Compiler kennt die Anzahl Parameter, sowie die Typen und kann damit umgehen (wichtig z.B. für Quad, Strings usw.)
und kann Fehler erkennen und anmeckern.

Ich hoffe Du verstehst jetzt die Syntax und den ungefähren Sinn des ganzen, ansonsten hakste einfach nochmal nach.

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.
Bild
Antworten