队列与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的新特 ...
随机推荐
- BZOJ 1202 狡猾的商人
前缀和+带权并查集. #include<iostream> #include<cstdio> #include<cstring> #include<algor ...
- android架构图示
Android系统架构和一些普遍的操作系统差不多,都是采用了分层的架构,从他们之间的架构图看,Android系统架构分为四个层,从高层到低层分别是应用程序层.应用程序框架层.系统运行库层和linux核 ...
- 【英语】Bingo口语笔记(56) - “令人失望”的表达
- NetBeans-xdebug的安装
如果总是提示正在连接,ok,应该是没有装xdebug; 1,下载Php版本对应的xdebug.dll文件,以下是官方提供的网址,可以智能判断环境,给出下载链接和使用指南 http://www.xdeb ...
- pg 匹配中文字符
用到了正则表达式: 字段 ~'[\u4E00-\u9FA5]+$'; 注意:此表达式可能还不能取到最全的值.
- Java自动装箱拆箱
一.装箱.拆箱定义 如果一个int型量被传递到需要一个Integer对象的地方,那么,编译器将在幕后插入一个对Integer构造方法的调用,这就叫做自动装箱.而如果一个Integer对象被放到需要in ...
- 锋利的jQuery读书笔记---jQuery中Ajax--get、post等方法
load()方法通常用来从Web服务器上获取静态的数据文件,然而这并不能体现ajax的全部价值. 在项目中,如果需要传递一些参数给服务器中的页面,那么可以使用$.get()或者$.post()方法(或 ...
- C# 导出一个控件的矢量图
调用Control.DrawToBitmap(Bitmap) 方法是很容易得到控件的图形的. 但是bitmap是栅格化图形.栅格化图形有很多缺点,比如文件体积比较大. 放大后失真. 不易编辑等等. 这 ...
- ylb:SQL Server中的escape(逃逸)
ylbtech-SQL Server:SQL Server-SQL中的escape(逃逸) SQL Server中的escape(逃逸). 1,SQL Server中的escape(逃逸) 返回顶部 ...
- 可进行JavaScript代码测试与调试的12个网站
概述:JavaScript是网站前端开发最为重要的一门编程语言,本文收集了能够在线测试与调试JavaScript代码的12个网站 1.JS Bin JS bin是一个为JavaScript和CSS爱好 ...