Conversion de la fonction C ++ en Delphi: que faire avec le paramètre void *?
-
07-07-2019 - |
Question
J'écris une DLL dans Delphi à l'aide de l'exemple C ++ ci-dessous:
USERDLL_API double process_message (const char* pmessage, const void* param)
{
if (pmessage==NULL) { return 0; }
if (param==NULL) { return 0; }
if (strcmp(pmessage,"state")==0)
{
current_state *state = (current_state*) param;
return process_state( (current_state*)param );
}
}
Malheureusement, je ne connais presque rien au C ++ et aux pointeurs. Que devrais-je utiliser à la place de char * (PChar?) Et void *?
function process_message (const pmessage: PChar; const param: ???): Double; export;
begin
???
end;
exports process_message;
Toute aide concernant le corps de la fonction sera également très appréciée. Je réalise que ce n’est pas sorcier, mais je n’apprendrais pas les bases du C ++, mais seulement de convertir quelques lignes, si quelqu'un a la gentillesse de le faire pour moi: -)
La solution
function process_message (const pmessage: PChar; const param: Pointer): Double; export; stdcall;
begin
If (pmessage = nil) Or (param = nil) Then
Result := 0;
Else If StrComp(pmessage, 'state') = 0 Then
Result := process_state(current_state^(param));
// missing a return statement for cases where pmessage is not 'state' here!
end;
exports process_message;
Non testé, mais devrait vous aider à démarrer.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow