Ir para conteúdo
Fórum Script Brasil
  • 0

Dll em delphi & Struct


-= NemesiS =-

Pergunta

Olá pessoal tenho um aplicativo em c que acessa minha dll feita em delphi, e chama a função e eenvia uma strutura:

aplicativo em c:

typedef struct{ 

    char* cmd;

} TPacket;

TPacket data;

void getPacket(TPacket* tmpData)
{
    get3DGSPacket(tmpData); // função na dll
}

void main()
{
    data.cmd = "login";
    
    getPacket(data);
}
até aqui está ok, não posso modificar este código, pois ele está interligado com outras rotinas... , o meu problema é no delphi.
type

  TPacket = record

    cmd: pstring;

end;

function get3DGSPacket(tmpData: TPacket):boolean; cdecl;
  begin

    showmessage('get3DGSPacket - OK'); // só para debugar a aplicação.

    with tmpData do
    begin
      showmessage(pchar(pstring(tmpData.cmd))); // teria que exibir 'login'
    end;

    result := true;

  end;

ao mostrar via showmessage o parametro .cmd ele me retorna uns caracteres estranhos tipos como se fosse erro de codificação .. sei lá..

exemplo:

e/'"Dó\*■■%@■..
mais ow menos isso..

alguém poderia me ajudar ..

Obrigado.

OBS: Favor não duplicar Tópicos

Jhonas

Editado por Jhonas
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Opa

Tente da Seguinte forma

type
  TPacket = record
    cmd: PChar; //ou
    //cmd: array [0..1024] of Char;  //Buffer de 1024 caracteres, diminua se for muito ou aumente se não for suficiente
  end;

//Pra compatibilidade com C voce deve usar BOOL não Boolean

function get3DGSPacket(tmpData: TPacket): BOOL; cdecl;
begin
  showmessage('get3DGSPacket - OK'); // só para debugar a aplicação.
  with tmpData do
  showmessage(PChar(tmpData.cmd)); // teria que exibir 'login'
  result := true;
end;

Qualquer coisa, cola um código em C que rode chamando essa funcao na DLL que eu testo aqui certinho... tenho o Visuall C++ porém

não sei importar funcoes de DLLs em C rs

abrs

Editado por Churc
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...