队列与DelphiXe新语法
好久没写代码了,更久没上博客园的博客了,无聊写几行试一下新语法。 1 unit Main; interface uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ComCtrls, iHome.Helper.Telegram,
Generics.Collections; type
TMainForm = class(TForm)
ListView_Queue: TListView;
btEnQueue: TButton;
btDeQueue: TButton;
procedure btEnQueueClick(Sender: TObject);
private
{ Private declarations }
FPriorityQueue:TQueue<PTelegram>; procedure SetupListView(ListView:TListView);
procedure ViewQueue(ListView:TListView;PriorityQueue:TQueue<PTelegram>);
public
{ Public declarations }
end; var
MainForm: TMainForm; implementation {$R *.dfm} procedure TMainForm.SetupListView(ListView: TListView);
procedure SetupListViewColumns(Columns:TListColumns);
begin
Columns.Clear;
TListColumn(Columns.Add).Caption:='Caption';
TListColumn(Columns.Add).Caption:='Message';
TListColumn(Columns.Add).Caption:='Sender';
TListColumn(Columns.Add).Caption:='Receiver';
TListColumn(Columns.Add).Caption:='DispatchTime';
TListColumn(Columns.Add).Caption:='ExtraInfo';
end;
begin
ListView.ViewStyle:=vsReport;//报表格式显示
SetupListViewColumns(ListView.Columns); //设置显示列名
end; procedure TMainForm.ViewQueue(ListView:TListView;PriorityQueue:TQueue<PTelegram>);
var
FpTelegram:PTelegram;
procedure ViewQueueItem(ListItem:TListItem);
begin
with ListItem do
begin
Caption := IntToStr(FpTelegram^.msg);
SubItems.Add(IntToStr(FpTelegram^.msg));
SubItems.Add(IntToStr(FpTelegram^.Sender));
SubItems.Add(IntToStr(FpTelegram^.Receiver));
SubItems.Add(IntToStr(FpTelegram^.DispatchTime));
SubItems.Add(IntToStr(FpTelegram^.ExtraInfo));
end;
end;
begin
try
ListView.Items.BeginUpdate;
ListView.Clear;
SetupListView(ListView);//设置ListView显示设置
for FpTelegram in PriorityQueue do ViewQueueItem(ListView.Items.Add);//显示队列项目
finally
ListView.Items.EndUpdate
end;
end; procedure TMainForm.btEnQueueClick(Sender: TObject);
var
FTelegram:PTelegram; function MakerQueue(Max:Integer):TQueue<PTelegram>;
var
i:Integer;
begin
Result:=TQueue<PTelegram>.Create;//创建优先队列
for I := to Max do
begin
New(FTelegram);
with FTelegram^ do
begin
DispatchTime:=GetTickCount;
Sender:=Self.Handle;
Receiver:=Self.Handle;
Msg:=i;
ExtraInfo:=;
end;
Result.Enqueue(FTelegram);//入队
end;
end; begin
if FPriorityQueue=nil then
FPriorityQueue:=MakerQueue();//创建15个队列项目
ViewQueue(ListView_Queue,FPriorityQueue);//ListView显示队列
end; end.
队列与DelphiXe新语法的更多相关文章
- ASP.NET MVC深入浅出系列(持续更新) ORM系列之Entity FrameWork详解(持续更新) 第十六节:语法总结(3)(C#6.0和C#7.0新语法) 第三节:深度剖析各类数据结构(Array、List、Queue、Stack)及线程安全问题和yeild关键字 各种通讯连接方式 设计模式篇 第十二节: 总结Quartz.Net几种部署模式(IIS、Exe、服务部署【借
ASP.NET MVC深入浅出系列(持续更新) 一. ASP.NET体系 从事.Net开发以来,最先接触的Web开发框架是Asp.Net WebForm,该框架高度封装,为了隐藏Http的无状态模 ...
- [C#] 回眸 C# 的前世今生 - 见证 C# 6.0 的新语法特性
回眸 C# 的前世今生 - 见证 C# 6.0 的新语法特性 序 目前最新的版本是 C# 7.0,VS 的最新版本为 Visual Studio 2017 RC,两者都尚未进入正式阶段.C# 6.0 ...
- qt5中信号和槽的新语法
qt5中的连接 有下列几种方式可以连接到信号上 旧语法 qt5将继续支持旧的语法去连接,在QObject对象上定义信号和槽函数,及任何继承QObjec的对象(包含QWidget). connect(s ...
- Qt 5.0+ 中 connect 新语法与重载函数不兼容问题的解决方法,以及个人看法
Qt 5.0+ 版本提供了 connect 的新语法,相比之前的语法新语法可以提供编译期检查,使用也更方便.可是使用过程中发现一个小问题——当某个 signal 和成员函数是重载关系的时候,qmake ...
- .NET中那些所谓的新语法之一:自动属性、隐式类型、命名参数与自动初始化器
开篇:在日常的.NET开发学习中,我们往往会接触到一些较新的语法,它们相对以前的老语法相比,做了很多的改进,简化了很多繁杂的代码格式,也大大减少了我们这些菜鸟码农的代码量.但是,在开心欢乐之余,我们也 ...
- .NET中那些所谓的新语法之二:匿名类、匿名方法与扩展方法
开篇:在上一篇中,我们了解了自动属性.隐式类型.自动初始化器等所谓的新语法,这一篇我们继续征程,看看匿名类.匿名方法以及常用的扩展方法.虽然,都是很常见的东西,但是未必我们都明白其中蕴含的奥妙.所以, ...
- .NET中那些所谓的新语法之三:系统预定义委托与Lambda表达式
开篇:在上一篇中,我们了解了匿名类.匿名方法与扩展方法等所谓的新语法,这一篇我们继续征程,看看系统预定义委托(Action/Func/Predicate)和超爱的Lambda表达式.为了方便码农们,. ...
- .NET中那些所谓的新语法之四:标准查询运算符与LINQ
开篇:在上一篇中,我们了解了预定义委托与Lambda表达式等所谓的新语法,这一篇我们继续征程,看看标准查询运算符和LINQ.标准查询运算符是定义在System.Linq.Enumerable类中的50 ...
- 1、ASP.NET MVC入门到精通——新语法
本系列目录:ASP.NET MVC4入门到精通系列目录汇总 在学习ASP.NET MVC之前,有必要先了解一下C#3.0所带来的新的语法特性,这一点尤为重要,因为在MVC项目中我们利用C#3.0的新特 ...
随机推荐
- jquery 获取点击事件的id;jquery如何获取当前触发事件的控件ID值
写html时这样绑定 <input type="text" name="address4" id="address4" onFocus ...
- BOM浏览器对象
BOM 浏览器对象 一.浏览器本身就自己有一些对象,不用创建就可以使用 window(当前浏览器窗体) 属性: status opener closed parent top 方法: alert(); ...
- 学习java之泛型类和泛型方法
上一篇博文中我自己试着用了下泛型类,昨天看java编程思想一书,发现里面有这么一段话: 使用参数化方法而不是用参数化类的方便之处在于:你不必为需要应用的每种不同类型都使用一个参数去实例化这个类,并且你 ...
- python练习程序(c100经典例16)
题目: 输入两个正整数m和n,求其最大公约数和最小公倍数. def foo(a,b): if a<b: (a,b)=(b,a) aa=a; bb=b; while b!=0: tmp=a%b; ...
- RAC 之 RMAN 备份
这篇主要介绍的是RAC 环境下的RMAN 备份. 关于Oracle 备份与恢复的一些理论知识参考我的Blog: Oracle 备份 与 恢复 概述 http://blog.csdn.net ...
- JS一般般的网页重构可以使用Node.js做些什么(转)
一.非计算机背景前端如何快速了解Node.js? 做前端的应该都听过Node.js,偏开发背景的童鞋应该都玩过. 对于一些没有计算机背景的,工作内容以静态页面呈现为主的前端,可能并未把玩过Node.j ...
- Javascript模块化编程(三):require.js的用法 (转)
转自:http://my.oschina.net/u/1390066/blog/213769 一.为什么要用require.js? 最早的时候,所有Javascript代码都写在一个文件里面,只要加载 ...
- 【转】Xcode中的iOS模拟器(iOS Simulator)的介绍和使用心得
iOS模拟器简介 iOS功能简介 iOS模拟器,是在Mac下面开发程序时,开发iOS平台的程序时候,可以使用的辅助工具. 其功能是,帮你模拟iOS平台设备,在模拟器上运行对应的程序,以方便你没有实体设 ...
- org-mode
org-mode 编辑 目录 1简介 2扩展 1简介编辑 Org-模式(Org-mode)是文本编辑软件Emacs的一种支持内容分级显示的编辑模式.这种模式支持写 to-do 列表,日志管 ...
- Nginx 反向代理、负载均衡、页面缓存、URL重写、读写分离及简单双机热备详解
大纲 一.前言 二.环境准备 三.安装与配置Nginx (windows下nginx安装.配置与使用) 四.Nginx之反向代理 五.Nginx之负载均衡 (负载均衡算法:nginx负载算法 up ...