Erros ao usar variáveis do Tipo AnsiString, AnsiChar, PAnsiString, PAnsiChar;
08/12/2016
0
Bom dia, a todos.
Pessoal tô muito perdido para entender essas variáveis, to ajustando o meu sistema com o SAT e resolvi usar as dlls dos fabricantes, Dimep, Tanca, Sweda, Elgin. Acontece que cada fabricante pede para declarar as funções de formas diferentes. Exemplos:
Fabricante X
Function EnviarDadosVenda(NumeroSessao:integer; CodAtivacao:AnsiString; Venda_XML: AnsiString): Pchar; stdcall; external dllsat.dll -
Fabricante Y
function EnviarDadosVenda(numeroSessao: integer; codigoDeAtivacao: PAnsiChar; dadosVenda: PAnsiChar): PAnsiChar; stdcall; external 'SAT.dll' name 'EnviarDadosVenda'
Bom, quando vou passar as strings do meu programa para a função, e tenho o retorno da função volta cheio de caracteres diferentes, estranhos, o caracter (ã) volta com um código asc sem sentido , exemplo(ù, ¢, ┌,) e assim por diante. Lendo aqui no fórum descobri que tenho que converter strings para AnsiString, String para AnsiChar, mas na função ta declarada com PAnsiChar, tá díficil não to conseguindo.
Alguém saberia me indicar alguns artigos sobre essas conversões ou alguns exemplos, estou precisando bastante.
Obrigado
Sandro Ávila
Pessoal tô muito perdido para entender essas variáveis, to ajustando o meu sistema com o SAT e resolvi usar as dlls dos fabricantes, Dimep, Tanca, Sweda, Elgin. Acontece que cada fabricante pede para declarar as funções de formas diferentes. Exemplos:
Fabricante X
Function EnviarDadosVenda(NumeroSessao:integer; CodAtivacao:AnsiString; Venda_XML: AnsiString): Pchar; stdcall; external dllsat.dll -
Fabricante Y
function EnviarDadosVenda(numeroSessao: integer; codigoDeAtivacao: PAnsiChar; dadosVenda: PAnsiChar): PAnsiChar; stdcall; external 'SAT.dll' name 'EnviarDadosVenda'
Bom, quando vou passar as strings do meu programa para a função, e tenho o retorno da função volta cheio de caracteres diferentes, estranhos, o caracter (ã) volta com um código asc sem sentido , exemplo(ù, ¢, ┌,) e assim por diante. Lendo aqui no fórum descobri que tenho que converter strings para AnsiString, String para AnsiChar, mas na função ta declarada com PAnsiChar, tá díficil não to conseguindo.
Alguém saberia me indicar alguns artigos sobre essas conversões ou alguns exemplos, estou precisando bastante.
Obrigado
Sandro Ávila
Sandro ávila
Curtir tópico
+ 0
Responder
Posts
09/12/2016
Ismael Machado
Você provavelmente utiliza o Delphi XE2 ou superior, correto?
Neste caso, você precisa sim converter o tipo String para AnsiString, caso contrário os acentos ficarão todos errados. E para converter é realmente bem simples, basta declarar uma variável deste tipo no escopo... Veja o exemplo:
Isto deve funcionar
Neste caso, você precisa sim converter o tipo String para AnsiString, caso contrário os acentos ficarão todos errados. E para converter é realmente bem simples, basta declarar uma variável deste tipo no escopo... Veja o exemplo:
var as: AnsiString; s: String; begin s := 'exemplo'; as := s; //Converte String para AnsiString MetodoQualquer(PAnsiChar(as)); //Chama um método utilizando o ponteiro do AnsiString, ou seja, PAnsiChar. end;
Isto deve funcionar
Responder
Clique aqui para fazer login e interagir na Comunidade :)