条形码扫描仪仅显示条形码的第一位数字

时间:2015-01-16 14:35:50

标签: delphi barcode-scanner

我正在开发一个将使用条形码扫描仪的应用程序。现在我遇到的问题是,当我扫描条形码时,它只显示TEdit中我的条形码的第一个数字。

当我通过扫描测试条形码本身时说到MS Word或记事本,它会扫描整个条形码并显示正确的整数序列。

当我使用我的delphi应用程序扫描时,是否需要编写任何代码以使扫描程序从条形码中读取多于1个数字?

我扫描到TEdit框并使用OnChange事件来获取扫描值。

  procedure TfrmMain.edtWeightChange(Sender: TObject);
  begin
    ActiveWeight := StrToFloat(edtWeight.text);
  end;

我正在使用Delphi XE6。

编辑:我正在使用USB条形码扫描仪,并认为它的工作原理就像键盘一样。因此我没有写任何其他代码。我的假设是因为它的工作方式就像一个keybaord,我只需要将焦点放入TEdit然后扫描条形码。 Onchange事件是TEdit可以检测条形码扫描器何时扫描。然后我将该字符串值存储为数字变量ActiveWeight

1 个答案:

答案 0 :(得分:8)

请勿使用OnChange事件,因为它可能会多次触发,请改为使用OnKeyPress事件:

procedure TfrmMain.edtWeightKeyPress(Sender: TObject var Key: Char);
begin
 if Key=#13 then
  ActiveWeight := StrToFloat(edtWeight.text);
end;

此代码假定扫描仪在扫描条形码后发送回车(通常是这种情况)。

需要注意的一点是,您需要使用TryStrToFloat来防止错误的用户输入(即用户在没有值的情况下按TEdit输入)

相关问题