キーでアクセスする必要がある変数が何百もあります。
キーのタイプは文字列 (最大: 50 文字) で、データはバイト配列 (最大: 500 バイト) です。
私はこのように使用しました:
このタイプを定義します:
type
TMyBuf = array[0..(500-1)] of Byte;
TMyKey = string[50];
TMyBufs = TDictionary<TMyKey,TMyBuf>;
var
MyBufs :TMyBufs;
と使用:
var vMyBuf :TMyBuf;
vMyData :TBytes ABSOLUTE vMyBuf;
vMyDataLen :Word;
begin
List := srvData.Contexts.LockList;
SetLength(vMyBuf, 500);
try
if(List.Count > 0) then begin
for i := 0 to List.Count-1 do begin
with TMyContext(List[I]) do begin
if SetedIdent then begin
try
vMyBuf:= MyBufs.Items[SeledData];
//extract length of data which stored in two byte
vMyDataLen:= ( ( (vMyBuf[1] shl 8)and $FF00) or (vMyBuf[0] and $FF) );
Connection.IOHandler.Write(vMYData, vMYDataLen);
finally
end;
end;
end;
end;
end;
finally
srvData.Contexts.UnlockList;
SetLength(vMyBuf, 0);
end;
end;
データを書き込む同様のコードがあります。
1 .値への直接アクセスですか? Valueディクショナリ( vMyBuf:= MyBufs.Items[SeledData];
)をコピーする必要はありません。
2 .もっと良い方法はありますか?