TLPP - LANGUAGE
- StrLen(nRet, oPointer)
- objetivo: obter o tamanho de uma cadeia de caracteres que está na DLL.
- nRet: variável para receber o tamanho da string.
- oPointer: um ponteiro para a cadeia de caracteres. Esse ponteiro é uma abstração realizada antes pelo método newPointer (tRunDll:NewPointer).
- retorno: lógico
- .T. execução com sucesso
- .F. execução com erro
Se TLPP possui um ponteiro para uma área de dados da DLL e essa área é uma string de terminador '\0', é possível consultar o comprimento da string através da operação StrLen, conforme exemplo.
Exemplo: lado da biblioteca #include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define EXPORT __declspec(dllexport)
EXPORT void* getPtr()
{
char* p = (char *) malloc(64);
strcpy_s(p, 64, "Dyncall Test");
return p;
}
| Exemplo: lado TLPP #include "tlpp-core.th"
Function U_DynCall()
Local oDll as Object // objeto de carga da dll
Local oPtr as Object // abstração para um ponteiro da dll
Local nLen as Numeric // vai guardar o len de uma string da dll
If (IsSrvUnix())
oDll := tRunDll():New("./dllc.so")
Else
oDll := tRunDll():New("dllc.dll")
EndIf
// Obtendo o ponteiro
oPtr := oDll:NewPointer()
oDll:CallFunction("getPtr", "P", oPtr)
// Retornando o StrLen
oDll:StrLen(nLen, oPtr)
Conout(nLen)
// terminou? vamos sanitizar o uso da dll
oDll:Free()
Return
|
Import HTML Content
Visão Geral
Conteúdo das Ferramentas