Fórum Tipo pChar #13482

03/01/2010

0

Bom primeiramente tenho que deseja um fiz ano novo a você, bom tenho uma aplicação desenvolvida no Delphi 2007  e nela ultilizo muitas function que tem como paramentros tipos "pChar" que enviar direto para um dll, estou tentando problemas para migra esta versão para o delphi 2010 , você poderia me ajudar ou até mesmo me dar um dica de como converte ou ate mais quais são os novos tipos suportados  separados por escala, outra pergunta andei pesquisando em alguns site e vi que é possivel criar um dll que chama outra dll para resolver este tipo de problema no delphi 2009/2010 isto e possivel?
Alexandro Oliveira

Alexandro Oliveira

Responder

Posts

04/01/2010

Rodrigo Mourão

Olá Amigo,

Bem a partir Delphi 2009 tivemos alterações significativas na estrutura da VCL para suportar unicode, mas essa alterações impactam muito pouco no que já existia isso porque a Embarcadero tomou o cuidade de fazer Casting Implicitos nos tipos strings.

Só precisaremos mexer nos nossos códigs quando trabalhamos com alocação dinâmica de char. O tipo Pchar é especifico do Windows entao quando usamos funções da API do Windows temos que passar os textos como Pchar, ou seja, ponteiros de char. Quando trabalhamos com DLL isso tambem e requerido uma vez que DLL são extensão de aplicativos windwos.

Agora para te ajudar eu preciso saber exatamente qual é o erro. Se puder me envia a DLL que esta consumindo e me mostre o código que você usa para poder invocar um método desta DLL que esta dando erro. Assim posso ver se consigo lhe ajudar.

Att,


Responder

Gostei + 0

11/01/2010

Alexandro Oliveira

Bom dia Rodrigo Primeiro tenho que lhe agradece por sua ajudar , muito obrigado! outra coisa so fiel escudeiro da suas videos Aulas que são feras ^^ , você muito bom no que faz parabéns.

Estou Enviado minha fontes Lib da Dll e meu comando que estou tentando usar no delphi 2010
(Obs.: no Delphi 2007 tudo funcionado redondo, se nenhum problema , mais delphi 2010 na vai nem com reza, todo isto simplesmente pela mudança que ouveram no pchar (T.T) )
Responder

Gostei + 0

11/01/2010

Alexandro Oliveira

http://video.devmedia.com.br/discovirtual/175550/LibXPCOM32.rar
Responder

Gostei + 0

11/01/2010

Rodrigo Mourão

Perfeito,  vou testar e lhe informo !!!!

Abs!!!


Responder

Gostei + 0

14/01/2010

Rodrigo Mourão

Olá Amigo,

Desculpe a demora mas como vc me mandou so o .pas entao tive que criar um projeto e comentar algumas linhas onde vc fazx referencia a metodos que não estou disponiveis como e o caso do Log por exemplo.

Agora ja esta compilando tudo corretamente mas preciso testar e apra isso preciso da DLL, pode me enviar ???

Outra coisa: quais valores eu passo para o metodo EnviaCmd(Protocolo: String; nTerm,Serial:Integer;OnLine:TTimer): Integer;

Protocolo =  ?????
nTerm   =   ?????
Serial    =  ?????

Online - Isso seria um componente TTimer, correto ? Com quantos milisegundos ??

Fico no aguardo !!!

Att,

Responder

Gostei + 0

14/01/2010

Alexandro Oliveira

Bom tarde amigo,

pelo que eu vi você deu uma olha na libcom32 verificou a quantidade e pchar que existe, são muito né?
todas elas foram desenvolvidas para controla um placa controlara,


O paramatros que você mecionou

  nResult := XPnetmTxMsg(Serial,nTerm,RamProtocolo,nByte);
                   Serial      = é o numero da Porta Serial do seu Computador Disponivel
                   nTerm     = é o numero ID da placa Controladora (1 a 32)
                   RamProtocolo = '$SB' acionar o Relay da placa controladora
                   TTIMER = 1000

meu amigo acredito que você não consigar testar este codigo com perfeição pois na agora que você for adicionar o terminal o que é o ID da placa controladora vai lhe Retorna um erro, pois ela teria que esta presente ai com você conectar no seu pc para funcionar correntamente, ai você teria um noção real dos dados, não chegam com perfeição na placa controladora ou seja  todos os comando que são tipos pchar não vai , mais isto so acontece no Delphi 2009/2010
                 eu fiquei sabem, que seu eu fizer uma fizer um dll que faz as conversão vai funcionar mais ai que é a         questão teria que enviar o tipo de pchar que o delphi 2010 reconhece  nesta  dll e na dll converter os dados para o tipos suportado para esta dll que trata os comando da placa , mais as questão no tenho ideia como vou começar, estas conversões!

Outro coisa tenho que lhe contar este meu Sistema já esta funcionado (ai no Rio em Campo Frio)^^  e logo mais vai estar em outros lugares ai do Rio ^^.

E fico mais feliz ainda por ter você com meu consultor e professor . muito Obrigado Pela grande ajuda

At.Alex Oliveira
Responder

Gostei + 0

14/01/2010

Alexandro Oliveira

http://video.devmedia.com.br/discovirtual/175550/XPCOM32.rar

Seguem em *.rar minha dll

At.Alex Oliveira
Responder

Gostei + 0

18/01/2010

Rodrigo Mourão

Olá Amigo,

Ainda estou trabalhando no seu chamado, peço a gentileza que aguarde mais um pouco.

Att,

Responder

Gostei + 0

22/01/2010

Rodrigo Mourão

Olá ALexandro,


Bem eu verifiquei e tentei de todas as maneiras mas o que ocorre e o seguinte. A sua DLL, ou melhor o fabricante da sua DLL é que tinha que se atualizar ou atualizar os metodos para suportar unicode. Isso por que a assinatura da DLL e que tem que mudar e isso tem que ser feito dentro da DLL.

Um bom exemplo disso e a propria API do windows. Nela temos os metodos:

  MessageBox()
  ShellExecute()

  ShellExecuteA()
  MessageBoxA()

Os dois sao metodos comuns e ou outros dois sao metodos com suporte a unicode. Pra ter uma ideia eu uso Crystal Report e para isso uso um componente CRPE. Eu fui compilar no Delphi 2010 e simplesmente nao funcionava.Para minha sorte as DLL do crystal tem suporte a unicode entao foi so trocar a chamada dos metodos. EX:

de StartPrintJob para StarPrintJobW
de  OpenPrintJob para OpenPrintJobW

E por ai vai.

Voce citou que viu na net algo que dizia para criar outra DLL, bem isso faz sentido sim mas eu nao consegui encontrar, se quiser me passar  link posso dar uma olhada para tentar lhe ajudar mas nativamente, pelo que ue tentei e sua DLL que tinha quter suporte a unicode.

Estou as ordens.

Responder

Gostei + 0

26/01/2010

Rodrigo Mourão

Olá, Podemos ajudar am algo mais? Att,
Responder

Gostei + 0

26/01/2010

Alexandro Oliveira

ola Rodrigo, depois de muito pensar acabei achando a solução pro meu problema, irei criar uma dll no delphi 2007 que vai fazer a ponte entre minha dll, como sei que  os pchar do delphi 2007 são compativeis com a dll, farei  um  dll que so tenha referencias tipos string e integer e dentro desta dll tratarei e  executarei o comando

Muito Obrigado mesmo pela atenção

At.: Alex Oliveira

Analista de Sistema
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar