小编Iva*_*nov的帖子

如何获得结果的地址?

这是我的功能:

class function TCelebrity.ReadArray<T>(length:integer): byte;
var b:pointer;
begin
  b := @Result;
  if IndexR + SizeOf(T) * length > High(DataRead) + 1 then
    raise Exception.Create('error');
  Move(DataRead[IndexR],b,SizeOf(T) * length);
  Inc(IndexR,SizeOf(T) * length);
end;
Run Code Online (Sandbox Code Playgroud)

IndexR是一个整数,DataRead是一个byte数组.

该函数从IndexR(位置)的DataRead读取长度.在我的情况下,它在位置0读取4个字节.

问题是我想调用这样的函数:

ar[5] := c.ReadArray<byte>(4); or - @ar[5] := c.ReadArray<byte>(4); //ar is Byte array
Run Code Online (Sandbox Code Playgroud)

我知道我可以使用指向Byte数组的指针创建一个参数,但我想知道是否可以这样做?

编辑:

我也试过这个函数,它只改变了ar [5],它应该从ar [5]变为ar [8].

class function TCelebrity.ReadArray<T>(length:integer): byte;
var b:^byte; i:integer;
begin
  b := @Result;
  for I := 0 to length - 1 do
  begin
    b^ := DataRead[IndexR];
    Inc(IndexR);
    Inc(b);
  end;
end; …
Run Code Online (Sandbox Code Playgroud)

delphi

0
推荐指数
1
解决办法
216
查看次数

如何将动态数组的长度更改为"out"参数?

我写了一个函数,它将一个物理包中收到的两个或多个数据包分开.但是,编译器并不欣赏我的努力.每个数据包的大小都在数据包标头的前两个字节中,即6个字节.因此,一个真正的数据包=它的前两个字节+ 6.如果有多个数据包,我会发现这是多少.

procedure SeparatePackets(packet:pointer;size:word; out Result:Array of pointer; out number:byte);
var position:byte; //position
begin
  position:= 0;
  number:= 0;
  SetLength(Result,0); //<< ERROR

  while(PWord(Cardinal(packet) + position)^ + 6 <> size) do  //while the first two bytes + 6(packet header)
  begin
    SetLength(Result,Length(Result) + 1); //inc the length << ERROR
    Result[number] := Cardinal(packet) + position;
    position := Result[number] + PWord(Cardinal(packet) + position)^ + 6;
    inc(number);
  end;
end;
Run Code Online (Sandbox Code Playgroud)

我用'<< ERROR'标记了编译时错误.错误是一个 - '不兼容的类型'.

我从来不知道在一个物理数据包中可能收到的数据包数量,所以如果数量增加,我想增加数组的长度.

我该如何解决我的错误?

delphi

0
推荐指数
2
解决办法
1517
查看次数

Web开发编辑器

我是网络开发的新手,我不知道有自动完成的编辑器.

我需要xhtml,jscript,jquery和css.

无论商业与否都没关系,那么SO上的顶级Web开发人员用于Web开发的是什么?

提前致谢!

intellisense editor

0
推荐指数
1
解决办法
772
查看次数

为什么Xelement.Parse()会抛出异常?

XElement.Parse("<Style TargetType=\"TextBlock\" x:Key=\"LabelStyle\"><Setter Property=\"TextWrapping\" Value=\"Wrap\"/></Style>");
Run Code Online (Sandbox Code Playgroud)

抛出异常,为什么?

我想加入一个带有一些样式的XML文档,以便它在应用程序中正确呈现,因为文档错过了某些样式(即这个样式).

c# xaml exception

0
推荐指数
1
解决办法
681
查看次数

标签 统计

delphi ×2

c# ×1

editor ×1

exception ×1

intellisense ×1

xaml ×1