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 |
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas