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

Jap*_*ter 1 delphi barcode-scanner

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

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

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

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

  procedure TfrmMain.edtWeightChange(Sender: TObject);
  begin
    ActiveWeight := StrToFloat(edtWeight.text);
  end;
Run Code Online (Sandbox Code Playgroud)

我正在使用Delphi XE6.

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

who*_*ddy 8

不要使用该OnChange事件,因为它可以被多次触发,OnKeyPress而是使用该 事件:

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

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

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