2008-12-14 12:50
85860492
关于组件包中HashMap存放动态数组的问题!
我有这样一个实现:
在对象的初始化时初始化一个存放动态数组的HashMap,但是在获取内容时总是为空。我的代码
type
[b] TPacketFieldArray = Array of String ;
PPacketFieldArray = ^TPacketFieldArray;
[/b]
TMyObject = Class(TObject)
public
constructor Create();
destructor Destroy; override;
private
FPacketMapping: [b]TCnStrToPtrHashMap[/b];
procedure init;
。。。。。。。。。
constructor TMyObject .Create;
begin
[b]Init;
[/b]end;
destructor TMyObject .Destroy;
begin
FreeAndNil(FPacketMapping);
inherited;
end;
procedure TTransformer.init;
var
PacketField:TPacketFieldArray;
begin
try
FPacketMapping := TCnStrToPtrHashMap.Create(5);
[b] SetLength(PacketField,2);
PacketField[0] := 'CommandId';
PacketField[1] := 'Code';
FPacketMapping.Add('S0000',@PacketField);[/b]
[b]
SetLength(PacketField,2);
PacketField[0] := 'CommandId';
PacketField[1] := 'Data';
FPacketMapping.Add('R0000',@PacketField);[/b]
[b] .............//放入多个动态数组[/b]
except
FreeAndNil(FPacketMapping);
raise;
end;
end;
////////////////在方法中使用上面初始化的Map
var
PArray Pointer;
TempS:String;
begin
FPacketMapping.Find('S'+CommandId,PArray);
if Assigned(PArray)then
begin
PF := PPacketFieldArray(PArray);
for i:=Low(PF^) to High(PF^)do
begin
TempS := TempS+'|'+PF^[i];
end;
end;
end;
[b]问题:为什么获取的动态数字不可以操作!并未 初始化,能给出个建议的做法吗?谢谢!!!!![/b][/i]
[[i] 本帖最后由 85860492 于 2008-12-14 12:51 编辑 [/i]]