好久没写代码了,更久没上博客园的博客了,无聊写几行试一下新语法。

  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新语法的更多相关文章

  1. 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的无状态模 ...

  2. [C#] 回眸 C# 的前世今生 - 见证 C# 6.0 的新语法特性

    回眸 C# 的前世今生 - 见证 C# 6.0 的新语法特性 序 目前最新的版本是 C# 7.0,VS 的最新版本为 Visual Studio 2017 RC,两者都尚未进入正式阶段.C# 6.0 ...

  3. qt5中信号和槽的新语法

    qt5中的连接 有下列几种方式可以连接到信号上 旧语法 qt5将继续支持旧的语法去连接,在QObject对象上定义信号和槽函数,及任何继承QObjec的对象(包含QWidget). connect(s ...

  4. Qt 5.0+ 中 connect 新语法与重载函数不兼容问题的解决方法,以及个人看法

    Qt 5.0+ 版本提供了 connect 的新语法,相比之前的语法新语法可以提供编译期检查,使用也更方便.可是使用过程中发现一个小问题——当某个 signal 和成员函数是重载关系的时候,qmake ...

  5. .NET中那些所谓的新语法之一:自动属性、隐式类型、命名参数与自动初始化器

    开篇:在日常的.NET开发学习中,我们往往会接触到一些较新的语法,它们相对以前的老语法相比,做了很多的改进,简化了很多繁杂的代码格式,也大大减少了我们这些菜鸟码农的代码量.但是,在开心欢乐之余,我们也 ...

  6. .NET中那些所谓的新语法之二:匿名类、匿名方法与扩展方法

    开篇:在上一篇中,我们了解了自动属性.隐式类型.自动初始化器等所谓的新语法,这一篇我们继续征程,看看匿名类.匿名方法以及常用的扩展方法.虽然,都是很常见的东西,但是未必我们都明白其中蕴含的奥妙.所以, ...

  7. .NET中那些所谓的新语法之三:系统预定义委托与Lambda表达式

    开篇:在上一篇中,我们了解了匿名类.匿名方法与扩展方法等所谓的新语法,这一篇我们继续征程,看看系统预定义委托(Action/Func/Predicate)和超爱的Lambda表达式.为了方便码农们,. ...

  8. .NET中那些所谓的新语法之四:标准查询运算符与LINQ

    开篇:在上一篇中,我们了解了预定义委托与Lambda表达式等所谓的新语法,这一篇我们继续征程,看看标准查询运算符和LINQ.标准查询运算符是定义在System.Linq.Enumerable类中的50 ...

  9. 1、ASP.NET MVC入门到精通——新语法

    本系列目录:ASP.NET MVC4入门到精通系列目录汇总 在学习ASP.NET MVC之前,有必要先了解一下C#3.0所带来的新的语法特性,这一点尤为重要,因为在MVC项目中我们利用C#3.0的新特 ...

随机推荐

  1. Java 炫舞按键功能 DancingPlay (整理)

    /** * Java 炫舞按键功能 DancingPlay (整理) * 2016-1-2 深圳 南山平山村 曾剑锋 * * 设计声明: * 1.本次设计是模仿QQ炫舞类游戏,当图标到红色的检测区域时 ...

  2. php 调试工具及学习PHP垃圾回收机制了解引用计数器的概念

    php代码工具:Xdebug  与分析工具 WinCacheGrind Xdebug之函数大全: string xdebug_call_class()返回当前被调用的函数或方法所属的类的类名 stri ...

  3. scala学习笔记(5)

    偏应用函数 举个例子 def sum(a: Int, b: Int, c: Int) = a + b + c val a = sum _ println(a(1,2,3)) 实际发生的事情是这样的:名 ...

  4. php时区测试

    php里面关于时间的函数有date,time,strtotime,gmdate等,里面只要和时间字符串相关的基本都收到时区的影响,所以时间戳才是唯一稳定时间记录,因为标准都是统一的.这里联想到数据库的 ...

  5. UIColor,CGColor,CIColor三者的区别和联系

    UIColor,CGColor,CIColor三者的区别和联系((转)) 最近看了看CoreGraphics的东西,看到关于CGColor的东西,于是就想着顺便看看UIColor,CIColor,弄清 ...

  6. 【转】bzero, memset ,setmem 区别

    原文网址:http://blog.csdn.net/agathe/article/details/6066157 bzero  原型: extern void bzero(void *s, int n ...

  7. Mysql 不同版本 说明

    Mysql 的官网下载地址: http://dev.mysql.com/downloads/ 在这个下载界面会有几个版本的选择. 1. MySQL Community Server 社区版本,免费,但 ...

  8. HDFS命令行文件操作

    Hadoop文件操作命令形式为 hadoop fs -cmd <args> 说明:cmd是具体的文件操作命令,<args>是一组数目可变的参数. Hadoop最常用的文件操作命 ...

  9. java web项目导入问题

    由于工作问题,接触到很多其他人的项目,有时候想要直接跑起来,还是需要一定的耐力. 1:导入不进去,干脆新建项目,一个个复制进去: 2:第三方jar包不要忘记,核实jdk    j2ee的版本,编译路径 ...

  10. 嵌入式 hi3518平台增加路由代码

    <span style="font-family:Courier New;"> /********************************** (C) COPY ...