Delphi:如何读取字节并删除它

时间:2011-12-16 04:15:20

标签: delphi

我有变量:

data: TIdBytes;

它包含一些数据。

如何读取“数据”的第一个字节,并从“数据”中删除第一个字节?

是的,我会一次又一次地这样做。直到“数据”为空。

我将使用复制的字节“IF”

if $0F = Copiedbyte then
 do_somthing;

也许删除不是那么必要,我只能复制下一个字节..

我不需要循环,我只需要复制一个字节就可以用它做一些事情,例如保存以供以后使用。

3 个答案:

答案 0 :(得分:4)

您不需要删除任何内容,这样做似乎很浪费。它会使你的代码变得更加混乱并花费CPU时间。

迭代字节数组:

var
  b: byte;
....
for b in data do
  dosomething(b);

如果您不想在循环中执行此操作,请跟踪要处理的下一个字节的索引。每次处理一个字节时,都要递增索引。

function GetNext(
  const data: TIdBytes;
  var Index: Integer; 
  var b: Byte
): Boolean;
begin
  Result := Index<=high(data);
  if Result then
  begin
    b := data[Index];
    inc(Index);
  end;
end;

将索引变量初始化为0并继续调用此函数,一次提取一个字节,直到返回False。

答案 1 :(得分:1)

正如你所说,没有必要删除,只需循环遍历数组中的每个字节:

for i := Low(Data) to High(Data) do
begin
  if data[i] = CopiedByte then
     Do_Somthing;
end

答案 2 :(得分:0)

如何将其转换为字节数组,然后删除第一个索引并将其余索引合并在一起?