如何省略 128C 条形码中的前导 0?

发布于 2025-01-04 09:30:48 字数 125 浏览 2 评论 0原文

例如,如果我将 12345 放入“文本”条形码的属性中,则输出为 012345。

这个“0”就是问题所在。我怎样才能删除这个?

我正在使用 Delphi 2010 和 FastReport 4.9.72。

If I put 12345, for example, in a "text" bar code's property, the output is 012345.

This "0" is the problem. How I can remove this?

I'm using Delphi 2010 and FastReport 4.9.72.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

秉烛思 2025-01-11 09:30:48

Code 128C 条形码的位数必须为偶数。这是设计使然。

数字和结果输出之间存在 1:1 映射,并且输出是 2 位对齐的。对于 1,该数字的 Code 128C 表示为 01

如果值为 12,则底层表示将为 12

因此数字 628 只能用 0628 表示

维基百科关于 代码128解释了128A、128B和128C编码之间的差异。

A Code 128C barcode needs to be an even number of digits. This is by design.

There is a 1:1 mapping between the numbers and the resulting output, and the output is 2-digit aligned. In the case of 1 the Code 128C representation of this number is 01

if the value was 12 then the underlying representation would be 12

so the digits 628 can only be represented by 0628

The wikipedia article about Code 128 explains the differences between the 128A, 128B and 128C encodings.

时光是把杀猪刀 2025-01-11 09:30:48

要从字符串中删除前导零:

function RemoveLeadingZeros(const S: String): String;
var
  I, NumZeros: Integer;
begin
  Len := 0;
  for I := 1 to Length(S) do
  begin
    if S[I] <> '0' then Break;
    Inc(NumZeros);
  end;
  if NumZeros > 0 then
    Result := Copy(S, NumZeros+1, MaxInt)
  else
    Result := S:
end;

To remove leading zeros from a string:

function RemoveLeadingZeros(const S: String): String;
var
  I, NumZeros: Integer;
begin
  Len := 0;
  for I := 1 to Length(S) do
  begin
    if S[I] <> '0' then Break;
    Inc(NumZeros);
  end;
  if NumZeros > 0 then
    Result := Copy(S, NumZeros+1, MaxInt)
  else
    Result := S:
end;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文