Convertendo UTF8 para Ansistring
Boa tarde pessoal, desde já agradeço o apoio aee.
Bom trabalho em uma software house aqui em salvador e me deparei com um problema que já vasculhei vários tópicos do nosso Forum.
o que ocorre é que preciso implementar o SAT que agora é obrigatorio em são paulo e recebi os fontes da bematech para poder implementar em meu sistema, porem os exemplos foram compilados em delphi7 e não estou recebendo o retorno da DLL um monte de caracteres especiais. ( ???????????????????????????????????????)
vou enviar a chamada da DLL:
function EnviarDadosVenda (NumeroSessao: Integer; CodigoDeAtivacao: AnsiString; DadosVenda: AnsiString ) : PChar ; stdcall; External 'BemaSAT32.dll';
e a implementação que fiz somente para um show meessage para retornar od dados da venda e CF-e que foram validados pelo SAT.
procedure TForm1.btnEnviarVendaClick(Sender: TObject);
var
Lista : TStringList;
Linha : AnsiString;
strRetorno: AnsiString;
begin
if mmoRetorno.Text <> '' then
mmoRetorno.Clear;
try
SetLength(strCodigoDeAtivacao, 8);
intNumeroSessao := GerarNumeroSessao;
strCodigoDeAtivacao := edtCodigoAtivacao.Text;
edtNumeroSessao.Text := IntToStr(intNumeroSessao);
strDadosVenda := mmoXML.Text;
strRetorno := EnviarDadosVenda(intNumeroSessao, strCodigoDeAtivacao, strDadosVenda);
strRetorno := UTF8Decode(strRetorno);
ShowMessage(strRetorno);
Lista := TStringList.Create;
Linha := StringReplace(strRetorno, '|', '| |',[rfReplaceAll , rfIgnoreCase]);
ExtractStrings(['|'], [ ], pchar(Linha), Lista);
{Igor Noblat
Mostra o todos os retornos em uma janela de mensagem, se houver.}
ShowMessage(lista[1]+#10+#13+ //Mostra o retorno em uma janela de mensagem
lista[2]+#10+#13+
lista[5]+#10+#13+
lista[6]+#10+#13+
lista[7]+#10+#13+
lista[8]+#10+#13+
lista[9]+#10+#13+
lista[10]+#10+#13+
lista[11]+#10+#13+
lista[12]+#10+#13+
lista[13]+#10+#13);
except
on E: Exception do
ShowMessage('Oorreu Esse Erro :' +E.ClassName+ ', Menssagem: ' +E.Message);
end;
end;
\\Porem meu retorno ainda continua sendo gerado com caracteres especiais.
EX: ( ??????????????????????????????????????????????????????????????????????????????????)
alguem ai por favor poderia me dar uma luz ????
Bom trabalho em uma software house aqui em salvador e me deparei com um problema que já vasculhei vários tópicos do nosso Forum.
o que ocorre é que preciso implementar o SAT que agora é obrigatorio em são paulo e recebi os fontes da bematech para poder implementar em meu sistema, porem os exemplos foram compilados em delphi7 e não estou recebendo o retorno da DLL um monte de caracteres especiais. ( ???????????????????????????????????????)
vou enviar a chamada da DLL:
function EnviarDadosVenda (NumeroSessao: Integer; CodigoDeAtivacao: AnsiString; DadosVenda: AnsiString ) : PChar ; stdcall; External 'BemaSAT32.dll';
e a implementação que fiz somente para um show meessage para retornar od dados da venda e CF-e que foram validados pelo SAT.
procedure TForm1.btnEnviarVendaClick(Sender: TObject);
var
Lista : TStringList;
Linha : AnsiString;
strRetorno: AnsiString;
begin
if mmoRetorno.Text <> '' then
mmoRetorno.Clear;
try
SetLength(strCodigoDeAtivacao, 8);
intNumeroSessao := GerarNumeroSessao;
strCodigoDeAtivacao := edtCodigoAtivacao.Text;
edtNumeroSessao.Text := IntToStr(intNumeroSessao);
strDadosVenda := mmoXML.Text;
strRetorno := EnviarDadosVenda(intNumeroSessao, strCodigoDeAtivacao, strDadosVenda);
strRetorno := UTF8Decode(strRetorno);
ShowMessage(strRetorno);
Lista := TStringList.Create;
Linha := StringReplace(strRetorno, '|', '| |',[rfReplaceAll , rfIgnoreCase]);
ExtractStrings(['|'], [ ], pchar(Linha), Lista);
{Igor Noblat
Mostra o todos os retornos em uma janela de mensagem, se houver.}
ShowMessage(lista[1]+#10+#13+ //Mostra o retorno em uma janela de mensagem
lista[2]+#10+#13+
lista[5]+#10+#13+
lista[6]+#10+#13+
lista[7]+#10+#13+
lista[8]+#10+#13+
lista[9]+#10+#13+
lista[10]+#10+#13+
lista[11]+#10+#13+
lista[12]+#10+#13+
lista[13]+#10+#13);
except
on E: Exception do
ShowMessage('Oorreu Esse Erro :' +E.ClassName+ ', Menssagem: ' +E.Message);
end;
end;
\\Porem meu retorno ainda continua sendo gerado com caracteres especiais.
EX: ( ??????????????????????????????????????????????????????????????????????????????????)
alguem ai por favor poderia me dar uma luz ????
Pexbrasil
Curtidas 0
Melhor post
Andrey
03/10/2016
Amigo, boa tarde... tente ver o link a seguir. Parece ter a solução (ou o caminho dela) para o seu problema:
http://www.projetoacbr.com.br/forum/topic/9018-acbrsat-novo-componente/?_fromLogin=1
É necessário você ter cadastro no projeto ACBR.
Se ainda não tem, faça que vale a pena.
http://www.projetoacbr.com.br/forum/topic/9018-acbrsat-novo-componente/?_fromLogin=1
É necessário você ter cadastro no projeto ACBR.
Se ainda não tem, faça que vale a pena.
GOSTEI 1
Mais Respostas
Pexbrasil
03/10/2016
Andrey, boa tarde amigo, eu ja estou cadastrado no site do ACBR, o meu problema todo é que por politica da empresa não utilizamos componente de terceiros, isso me complica mais, já que ai eu tenho que usar as funções nativas da DLL do fabricante.
GOSTEI 0