GARANTIR DESCONTO

Fórum Erro de Acessoá memória #589276

27/11/2017

0

Estou tentando implementar um BINA com Delphi 7 usando Super Bina!

Adicionei o componente no form e num botão fiz:

procedure TfrmPrincipal.btnAbreConClick(Sender: TObject);
var
texto: String;
begin
spBina.Conectado:=true;
spBina.LeiaDTMF(texto,100);
ShowMessage(texto);
end;

e no onDTMF fiz

procedure TfrmPrincipal.spBinaDTMF(Sender: TObject; Count: Integer);
var
Buffer : String;
Contador: Integer;
begin

// Define o valor do Time Out
Sleep(500);
// Confere o número total de bytes dentro do pacote enviado
Contador := spBina.InputCount;
// Lê o pacote enviado e armazena no Buffer
spBina.Read(Buffer, Contador);
// Alimenta um campo Memo com os dados recebidos
Memo1.Lines.Add(Buffer);
end;

Então,
no código do botão, ao chegar o ring da linha telefônica eu recebo RING no ShowMessage. Só isso!
no código do onDTMF, ao chegar spBina.Read(Buffer, Contador);, está dando erro de acesso à memória!

Como corrigir isso?
Carlos Rocha

Carlos Rocha

Responder

Post mais votado

27/11/2017

// Ler no modo sincrono
function TSspBina.ReadAsync(var Buffer; Count: Integer; var AsyncPtr: PAsync): Integer;
var
Success: Boolean;
BytesTrans: DWORD;
begin
AsyncPtr^.Kind := okRead;
Success := ReadFile(FHandle, Buffer, Count, BytesTrans, @AsyncPtr^.Overlapped)
or (GetLastError = ERROR_IO_PENDING);

if not Success then
raise ECspBina.Create(CError_ReadFailed, GetLastError);

Result := BytesTrans;
end;

quando faz o ReadFile

Carlos Rocha

Carlos Rocha
Responder

Gostei + 1

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

Aceitar