Ich verwende derzeit nur 2 eigene DLLs neben der LogitechG19
DLL.
Die Aufrufkonventionen sehen alle in Ordnung aus (Alle Aufrufe erfolgen aus der AppClass.pas und sind in der G19Const.pas festgelegt).
Beim vollständigen Rebuild kommen folgende Warnungen:
Arduino_led.dll:
Code:
[DCC Warnung] GR32_VectorMaps.pas(256): W1024 Vorzeichenbehaftete und -lose Typen werden kombiniert - beide Operanden werden erweitert
[DCC Warnung] GR32_VectorMaps.pas(257): W1024 Vorzeichenbehaftete und -lose Typen werden kombiniert - beide Operanden werden erweitert
[DCC Warnung] GR32_VectorMaps.pas(257): W1024 Vorzeichenbehaftete und -lose Typen werden kombiniert - beide Operanden werden erweitert
[DCC Warnung] LBUtils.pas(484): W1000 Symbol 'FileAge' ist veraltet
[DCC Warnung] LBUtils.pas(486): W1000 Symbol 'FileAge' ist veraltet
[DCC Warnung] LEDThread.pas(13): H2219 Das private-Symbol 'tR' wurde deklariert, aber nie verwendet
[DCC Warnung] LEDThread.pas(13): H2219 Das private-Symbol 'tG' wurde deklariert, aber nie verwendet
[DCC Warnung] LEDThread.pas(13): H2219 Das private-Symbol 'tB' wurde deklariert, aber nie verwendet
[DCC Warnung] arduino_led.dpr(41): H2164 Variable 'HTTPServer' wurde deklariert, aber in 'arduino_led' nicht verwendet
wobei FileAge in einer Methode vorkommt, die nicht verwendet wird und HTTPServer nur auskommentiert, da für später geplant. Die Variablen tR,tG und tB hab ich entfernt.
audio.dll:
Code:
[DCC Warnung] GR32_VectorMaps.pas(256): W1024 Vorzeichenbehaftete und -lose Typen werden kombiniert - beide Operanden werden erweitert
[DCC Warnung] GR32_VectorMaps.pas(257): W1024 Vorzeichenbehaftete und -lose Typen werden kombiniert - beide Operanden werden erweitert
[DCC Warnung] GR32_VectorMaps.pas(257): W1024 Vorzeichenbehaftete und -lose Typen werden kombiniert - beide Operanden werden erweitert
[DCC Warnung] AudioVolume.pas(580): H2077 Auf 'ByMyAction' zugewiesener Wert wird niemals benutzt
Hauptprogramm:
Code:
[DCC Warnung] GR32_VectorMaps.pas(256): W1024 Vorzeichenbehaftete und -lose Typen werden kombiniert - beide Operanden werden erweitert
[DCC Warnung] GR32_VectorMaps.pas(257): W1024 Vorzeichenbehaftete und -lose Typen werden kombiniert - beide Operanden werden erweitert
[DCC Warnung] GR32_VectorMaps.pas(257): W1024 Vorzeichenbehaftete und -lose Typen werden kombiniert - beide Operanden werden erweitert
[DCC Warnung] MainController.pas(43): H2219 Das private-Symbol 'SetLED' wurde deklariert, aber nie verwendet
Wobei SetLED auch nur für die Zukunft schon eingeführt wurde, aber noch keine Funktion erfüllt.
Hier noch die Aufrufkonventionen, die von der G19Const.pas vorgegeben werden:
Delphi-Quellcode:
// DLL Functions
TInitFunction =
function(dllpath:WideString):Boolean;
stdcall;
TUpdateFunction =
function(displayed:Boolean; ledcontroller:Boolean; interval:integer):Boolean;
stdcall;
TGetLEDFunction =
function(currentcolor:TLEDColor):TLEDColor;
stdcall;
TGetScreenFunction =
function:TPixelArray;
stdcall;
TGetWantLEDControllFunction =
function():Boolean;
stdcall;
TBtnDownFunction =
function(btn:integer):Boolean;
stdcall;
TBtnPressedFunction =
function(btn:integer;ms:integer):Boolean;
stdcall;
TBtnUpFunction =
function(btn:integer;ms:integer):Boolean;
stdcall;
TExitFunction =
function():Boolean;
stdcall;
// Callbacks - global storage system
TcbSetFloat=function(
name:WideString;value:real):Boolean;
stdcall;
TcbGetFloat=function(
name:WideString):real;
stdcall;
TcbSetInt=function(
name:WideString;value:integer):Boolean;
stdcall;
TcbGetInt=function(
name:WideString):integer;
stdcall;
TcbSetWideString=function(
name:WideString;WideString:WideString):Boolean;
stdcall;
TcbGetWideString=function(
name:WideString):WideString;
stdcall;
TcbSetByte=function(
name:WideString;value:Byte):Boolean;
stdcall;
TcbGetByte=function(
name:WideString):Byte;
stdcall;
// Callback Declaration
TSetGlobalStorageFunction =
procedure(setFloat: TcbSetFloat; getFloat:TcbGetFloat; setInt:TcbSetInt; getInt:TcbGetInt; setPChar:TcbSetWideString; getPChar:TcbGetWideString; setByte:TcbSetByte; getByte:TcbGetByte);
stdcall;
und hier die, die von der Arduino_led.dll verwendet werden:
Delphi-Quellcode:
procedure setglobalstorage(setFloat: TcbSetFloat; getFloat:TcbGetFloat; setInt:TcbSetInt; getInt:TcbGetInt; setWideString:TcbSetWideString; getWideString:TcbGetWideString; setByte:TcbSetByte; getByte:TcbGetByte); stdcall;
function init(dllpath:WideString):Boolean; stdcall;
function exit():Boolean; stdcall;
function tick(displayed:Boolean; ledcontroller:Boolean; interval:integer):Boolean; stdcall;
function getled(currentcolor:TLEDColor):TLEDColor; stdcall; // Bisher nie aufgerufen!
function getscreen:TPixelArray; stdcall;
function getwantledcontroll:Boolean; stdcall;
function btndown(btn:integer):Boolean; stdcall;
function btnpressed(btn:integer;ms:integer):Boolean; stdcall;
function btnup(btn:integer;ms:integer):Boolean; stdcall;