Показать сообщение отдельно
  #4  
Старый 14.10.2012, 21:21
Аватар для cotseec
cotseec cotseec вне форума
Активный
 
Регистрация: 16.07.2008
Сообщения: 353
Версия Delphi: D7,TDE06,RAD09
Репутация: 1443
По умолчанию

у вас все вделано верно, почти
Цитата:
Код:
//Формируем запрос...
procedure TMain.Read;
begin
 Ret := W_IO(#$1, #$00, 0, '', ReplyLen, ReplyBuffer);
if Ret = REPLY_OK then begin
 Edit1.Text:='Команда выполнена успешно, получены данные';
 Edit2.Text:=(ReplyBuffer);
end;
if Ret= REPLY_ACK then begin
 Edit1.Text:='Получен ответ ACK';
 Edit2.Text:=(ReplyBuffer);
end;
if Ret= REPLY_NACK6 then begin
 Edit1.Text:='Получен ответ NACK6';
 Edit2.Text:=(ReplyBuffer);
end;
 end;
только необходимо задать значения ReplyLen и выделить память под ReplyBuffer, потом соответственно выводить ReplyBuffer и освобождать память, вы просто объявили эти переменные, необходимо их теперь иннициализировать, что-то типа
Код:
var
...
   ReplyBuffer: Pointer;
...

begin
// выделяем память
    ReplyLen:=255;
    ReplyBuffer:=GetMem(ReplyLen);
    Ret := W_IO(#$1, #$00, 0, '', ReplyLen, ReplyBuffer);
// теперь по адресу ReplyBuffer находится массив полученного ответа
//далее  по тексту
..
//вывод в Edit2 для начала можно так (см. коментарий в конце ответа)
  Edit2.Text:=PChar(ReplyBuffer);


  FreeMem(ReplyBuffer,ReplyLen);
end;
 

т.к.
Цитата:
Общение со считывателем осуществляется в щеснадцатиричной кодировке.
(соответсвенно он и отвечает в НЕХ), то в ответе просто набор байт, который находится в ReplyBuffer, а выводя его не вариант, что получаются читабельные символы, необходимо дополнительно их преобразовывать в читабельный вид
__________________
Понять, что хочет заказчик - бесценно, ведь он платит MasterCard
Ответить с цитированием