条码扫描器只显示条码的第一位数字

Barcode Scanner only displaying first digit of barcode

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

当我通过扫描条形码本身来测试条形码时,它会扫描整个条形码并正确显示整个数字序列。

那么,当使用我的 delphi 应用程序扫描条码时,我是否需要编写任何代码来使扫描器从我的条码中读取超过 1 个数字?

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

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

我正在使用 Delphi XE6。

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

不要使用 OnChange 事件,因为它可以多次触发,请改用 OnKeyPress 事件:

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

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

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