Delphi TList使用

来源:互联网 发布:文明6 mac下载 编辑:程序博客网 时间:2024/05/01 19:53

关键代码:

  TUserStatus = (usOnline, usOffline, usBusy, usLeave);  POnlineUser = ^TOnlineUser;  TOnlineUser = record    Name: string;    IP: string;    Status: TUserStatus;  end;    //=== TList ==================    { 初始化 }    procedure InitOnlineUser;    { 清空程序使用的内存 }    procedure FinaOnlineUser;    { 开辟一个新的PInfo 指针,填入信息并返回指针将在DeleteOnlineUser 或FinaInfo 里释放 }    function NewOnlineUser(Name, IP: string; Status: TUserStatus): POnlineUser;    procedure EditOnlineUser(aIndex: Integer; Name, IP: string; Status: TUserStatus);    procedure AddOnlineUser(Name, IP: string; Status: TUserStatus);    procedure DeleteOnlineUser(aIndex: Integer);    function OnlineUserExists(Name, IP: string; var aIndex: Integer): Boolean;    //=== end ===================var  FOnlineUserList: TList;procedure TFormMain.InitOnlineUser;begin  FOnlineUserList := TList.Create;end;procedure TFormMain.FinaOnlineUser;var  I:Integer;begin  for I:=0 to FOnlineUserList.Count-1 do    Dispose(POnlineUser(FOnlineUserList.Items[i]));  FOnlineUserList.Free;end;{ 开辟一个新的PInfo 指针,填入信息并返回指针将在Command_Delete 或FinaInfo 里释放 }function TFormMain.NewOnlineUser(Name, IP: string;  Status: TUserStatus): POnlineUser;var  P: POnlineUser;begin  New(P);  p.Name := Name;  p.IP := IP;  p.Status := Status;  Result := P;  { 返回的指针将被保存在List里 }end;procedure TFormMain.EditOnlineUser(aIndex: Integer; Name, IP: string;  Status: TUserStatus);var  P: POnlineUser;begin  if (aIndex<0) or (aIndex>FOnlineUserList.Count) then    Exit;  P := FOnlineUserList.Items[aIndex];  p.Name := Name;  p.IP := IP;  p.Status := Status;end;procedure TFormMain.AddOnlineUser(Name, IP: string; Status: TUserStatus);begin  FOnlineUserList.Add(NewOnlineUser(Name, IP, Status));end;procedure TFormMain.DeleteOnlineUser(aIndex: Integer);var  P: POnlineUser;begin  if (aIndex<0) or (aIndex>FOnlineUserList.Count) then    Exit;  P := FOnlineUserList.Items[aIndex];  FOnlineUserList.Delete(aIndex);  Dispose(P);end;function TFormMain.OnlineUserExists(Name, IP: string;  var aIndex: Integer): Boolean;var  i: Integer;begin  Result := False;  aIndex := -1;  for I := 0 to FOnlineUserList.Count-1 do  begin    if (POnlineUser(FOnlineUserList.Items[i]).Name=Name) and       (POnlineUser(FOnlineUserList.Items[i]).IP=IP) then    begin      aIndex := i;      Result := True;      Break;    end;  end;end;


原创粉丝点击