zoukankan      html  css  js  c++  java
  • 测试 TList

    // Add、Count、Items[n]
    var
      List: TList;                       {声明 List}
      frmRed: TForm;                     {用于测试的对象, 这里选择了窗体}
    begin
      List := TList.Create;              {建立列表}
    
      frmRed := TForm.Create(nil);       {建立 frmRed}
      frmRed.Caption := 'Red';           {frmRed 标题}
      frmRed.Color := clRed;             {frmRed 颜色}
    
      List.Add(frmRed);                  {添加到列表}
    
      ShowMessage(IntToStr(List.Count)); {1; 列表元素总数}
      //TForm(List.Items[0]).ShowModal;  {调用对象}
      TForm(List[0]).ShowModal;          {调用对象, 比上一行的写法简洁, 但是一样的}
    
      frmRed.Free;
      List.Free;
    end;
    
    // Insert、Remove、Delete、Clear、First、Last var List: TList; frmRed,frmGreen,frmBlue: TForm; i: Integer; begin List := TList.Create; {建立两个窗体: 红色、绿色} frmRed := TForm.Create(nil); frmRed.Caption := 'Red'; frmRed.Color := clRed; frmGreen := TForm.Create(nil); frmGreen.Caption := 'Green'; frmGreen.Color := clGreen; {添加到 List} List.Add(frmRed); List.Add(frmGreen); {再建立一个蓝色窗体} frmBlue := TForm.Create(nil); frmBlue.Caption := 'Blue'; frmBlue.Color := clBlue; {插入到 List} List.Insert(0, frmBlue); ShowMessage(IntToStr(List.Count)); {3} TForm(List.First).ShowModal; {显示第一个: 蓝色窗体} TForm(List.Last).ShowModal; {显示最后一个: 绿色窗体} {看看红色窗体是第几个?} i := List.IndexOf(frmRed); ShowMessage(IntToStr(i)); {1; 是第二个} {从列表中删除 - 用对象指针} List.Remove(frmRed); ShowMessage(IntToStr(List.Count)); {2} frmRed.ShowModal; {frmRed 依然存在, 只是不在列表中了} {从列表中删除 - 用元素索引} List.Delete(0); frmBlue.ShowModal; {frmBlue 依然存在, 只是不在列表中了} {清空列表} List.Clear; frmRed.Free; frmGreen.Free; frmBlue.Free; List.Free; end;
    // Capacity、Move、Exchange、Extract var List: TList; frmRed,frmGreen,frmBlue: TForm; p: Pointer; i: Integer; begin List := TList.Create; List.Capacity := 3; {让 List 准备好接受 3 个元素} {建立红、绿、蓝三个窗体, 并添加到 List} frmRed := TForm.Create(nil); frmRed.Caption := 'Red'; frmRed.Color := clRed; frmGreen := TForm.Create(nil); frmGreen.Caption := 'Green'; frmGreen.Color := clGreen; frmBlue := TForm.Create(nil); frmBlue.Caption := 'Blue'; frmBlue.Color := clBlue; List.Add(frmRed); List.Add(frmGreen); List.Add(frmBlue); {依次显示窗体标题} for i := 0 to List.Count - 1 do ShowMessage(TForm(List[i]).Caption); {将分别显示: Red Green Blue} {移动} List.Move(2,0); {把第 3 个转移到第 1 个} for i := 0 to List.Count - 1 do ShowMessage(TForm(List[i]).Caption); {将分别显示: Blue Red Green} {置换} List.Exchange(1,2); {把第 2 个与第 3 个交换} for i := 0 to List.Count - 1 do ShowMessage(TForm(List[i]).Caption); {将分别显示: Blue Green Red} {提取指针} p := List.Extract(frmGreen); ShowMessage(TForm(p).Caption); {Green} frmRed.Free; frmGreen.Free; frmBlue.Free; List.Free; end;
    //定义排序函数 function MySort(p1, p2: Pointer): Integer; begin Result := AnsiStrComp(p1,p2); end; procedure TForm1.Button1Click(Sender: TObject); var List: TList; frmRed,frmGreen,frmBlue: TForm; i: Integer; begin List := TList.Create; {建立绿、红、蓝三个窗体, 并添加到 List} frmRed := TForm.Create(nil); frmRed.Caption := 'Red'; frmRed.Color := clRed; frmGreen := TForm.Create(nil); frmGreen.Caption := 'Green'; frmGreen.Color := clGreen; frmBlue := TForm.Create(nil); frmBlue.Caption := 'Blue'; frmBlue.Color := clBlue; List.Add(frmRed); List.Add(frmGreen); List.Add(frmBlue); {依次显示窗体标题} for i := 0 to List.Count - 1 do ShowMessage(TForm(List[i]).Caption); {将分别显示: Red Green Blue} {排序} List.Sort(MySort); for i := 0 to List.Count - 1 do ShowMessage(TForm(List[i]).Caption); {将分别显示: Blue Green Red} // FreeAndNil(frmBlue); // List.Pack; {这个没有测试成功! Pack 应该是清除所有已是 nil 的对象} {释放所有对象} for i := 0 to List.Count - 1 do TForm(List[i]).Free; List.Free; end;
  • 相关阅读:
    GPU 版 TensorFlow failed to create cublas handle: CUBLAS_STATUS_ALLOC_FAILED
    Python -- 值转换为字符串的两种机制
    Python
    vim中注释多行python代码
    HTTP协议状态码详解(HTTP Status Code)
    关于Python报错:SyntaxError: Non-ASCII character 'xe5' in file的解决方法
    Linux如何查看进程、杀死进程、启动进程等常用命令
    vim 如何设置显示行号和缩进
    一、报错
    二、极光推送
  • 原文地址:https://www.cnblogs.com/del/p/1019566.html
Copyright © 2011-2022 走看看