Fórum Tipo pChar #13482
03/01/2010
0
Alexandro Oliveira
Curtir tópico
+ 0Posts
04/01/2010
Rodrigo Mourão
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,
Gostei + 0
11/01/2010
Alexandro Oliveira
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) )
Gostei + 0
11/01/2010
Alexandro Oliveira
Gostei + 0
11/01/2010
Rodrigo Mourão
Abs!!!
Gostei + 0
14/01/2010
Rodrigo Mourão
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,
Gostei + 0
14/01/2010
Alexandro Oliveira
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
Gostei + 0
14/01/2010
Alexandro Oliveira
Seguem em *.rar minha dll
At.Alex Oliveira
Gostei + 0
18/01/2010
Rodrigo Mourão
Ainda estou trabalhando no seu chamado, peço a gentileza que aguarde mais um pouco.
Att,
Gostei + 0
22/01/2010
Rodrigo Mourão
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.
Gostei + 0
26/01/2010
Rodrigo Mourão
Gostei + 0
26/01/2010
Alexandro Oliveira
Muito Obrigado mesmo pela atenção
At.: Alex Oliveira
Analista de Sistema
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)