关于Delphi中存储用户对象的有关问题

关于Delphi中存储用户对象的问题
新手求助:我在做一个客户端、服务器的通信,使用的控件为TServerSocket/TClientSocket,有个问题试了很多方法还是不行:

服务器定义了一个客户端的信息类:
type
  client_record = record
  name:string;
  id:string;
end;

每次客户端连接上来之后,我就想把client_record保存到一个类似Java中Map的容器中(刚接触delphi,不清楚类似Map的是什么),保存为键值对。

比如add(name, client_record)这样用名字key,我定义的client_record为value;

下次我可以直接通过name取出client_record,或者通过name删除这个键值对!

如果可以麻烦给出代码,非常谢谢
delphi record Map TServerSocket

------解决方案--------------------
type
  pClient_record =^client_record;
  client_record = record
  name:string;
  id:string;
end;

再定义一个全局的List(FClientList: TList);
需要保存客户信息的时候,定义一个变量client: pclient_record;
isExists: boolean;
begn
  isExists := false;
  for i := 0 to FList.count - 1 do
  begin 
    if pclient_record(Flist[i])^.id = 新传进来的客户的id then begin
      showmessage('已存在');
      isexists := true;
      break;
    end;
  end;
end;

if not isexists then 
begin
  client = new(pclient_record);
  client^.name = 'name';
  client^.id = '123';
  FList.add(client);
end;
------解决方案--------------------
TStringList
------解决方案--------------------
HSFZXJY 正解,我解释一下吧。

TStringList 比 TList 每个节点多一个字符串,楼主不妨利用此字符串保存 key 值。只要用 IndexOf(key) 就能一下子找到此节点。具体做法:用 TStringList.Strings[] 数组保存 key, 用 TStringList.Objects[] 数组保存数据记录指针(和 TList 一样)。