队列与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的新特 ...
随机推荐
- 【第七篇】bootstrap的3级菜单样式,支持母版页保留打开状态
razor视图的,母版页 依旧不多说,直接上代码 <ul class="sidebar-menu"> @for (int i = 0; i < mList.Cou ...
- MVC+Ef项目(2) 如何更改项目的生成顺序;数据库访问层Repository仓储层的实现
我们现在先来看看数据库的生成顺序 居然是 Idal层排在第一,而 web层在第二,model层反而在第三 了 我们需要把 coomon 公用层放在第一,Model层放在第二,接下来是 Idal ...
- 报错:对象必须实现 IConvertible;以分隔符进行分割链接concat_ws的使用方法;mysql数据类型转换cast,convert
错误故障,mysql 服务器上用 concat_ws 函数,连接了一串数字,最后 服务器返回的字段就变成了一个 byte ,而我们想要的类型是 string 类型,那么转换的时候,就报错了. 正确 ...
- 【转】如何调整CHM文件中的字体!非常有爱!
原文网址:http://www.cnblogs.com/lijh_ray/archive/2011/01/25/1944668.html 如果html中字体大小是用像素px来定义,那么在IE中无法调整 ...
- 2016第20周四java基础概念
简单的说JDK=JRE+Java编译器.调试器.工具类库等:JRE=JVM(类似于jre目录下的bin)+必要运行的类库(类似于jre目录下的lib) JVM:Java Virtual Mechina ...
- Android GLSurfaceView用法详解(二)
输入如何处理 若是开发一个交互型的应用(如游戏),通常需要子类化 GLSurfaceView,由此可以获取输入事件.下面有个例子: java代码: package eoe.ClearTes ...
- 纠结的ARC
xcode不断进步,在xcode4中引入了ARC的概念.您用或者不用它就在那里,于是有了本文:如何在未使用arc的工程中引入一个使用了arc特性的文件,如何在arc工程中引用未使用arc的文件.其实说 ...
- 嵌入式 hi3518x平台h264+g711a封装mp4代码demo
先看代码吧,有代码有真相,具体代码的demo(下载demo的朋友请勿在网上上传我的demo,谢谢)下载连接为: http://download.csdn.net/detail/skdkjxy/8071 ...
- 字符串中符号的替换---replace的用法
#include<iostream> #include<string> using namespace std; int main() { string s1 = " ...
- selenium webdriver+windows+python+chrome遇见的问题
win7系统,在python中调用ChromeDriver 一直报错 “ selenium.common.exceptions.WebDriverException: Message: 'Chrome ...