TLPP - LANGUAGE
- StrCpy(cRet, oPointer, nSize)
- objetivo: fazer uma cópia de uma cadeia de caracteres da DLL para uma variável em TLPP.
- cRet: a variável para receber a string.
- oPointer: um ponteiro para a cadeia de caracteres. Esse ponteiro é uma abstração realizada antes pelo método newPointer (tRunDll:NewPointer).
- nSize: a quantidade de bytes a serem copiados (recomenda-se utilizar tRunDll:StrLen para obter esse valor).
- retorno: lógico
- .T. execução com sucesso
- .F. execução com erro
Se a aplicação TLPP possui um ponteiro para um buffer da DLL e sabe o tamanho dele, pode-se utilizar a operação StrCpy para fazer uma cópia, 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
Local cValue as Character // armazenar uma string que vem 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)
// Obtendo a string
oDll:StrCpy(cValue, oPtr, nLen)
Conout(cValue)
// terminou? vamos sanitizar o uso da dll
oDll:Free()
Return
|
Import HTML Content
Visão Geral
Conteúdo das Ferramentas