Seite 1 von 1

Prototypes nicht verstanden

Verfasst: 25.11.2011 17:51
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

Re: Prototypes nicht verstanden

Verfasst: 25.11.2011 18:16
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