社区
Delphi
帖子详情
Delphi中如何精确比较字符串呢?
wyfem
2003-01-19 02:45:02
Delphi中如何精确比较字符串呢?
...全文
15
2
打赏
收藏
Delphi中如何精确比较字符串呢?
Delphi中如何精确比较字符串呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
huangrenguang
2003-01-19
打赏
举报
回复
使用AnsiCompareStr也行。
wjlsmail
2003-01-19
打赏
举报
回复
if s1 = s2 then ...
就可以了 ,不明白你的意思 ?
精确
统计字符
能
精确
统计英文和
中
文字符,建议在
delphi
7
中
编译。更高版本容易出错
delphi
xe 10.2.3 fmx grid 多元化表格 支持合并单元格 单独设置背景色
首先说下控件功能如下: 1,可以设置固定行 和固定列.固定行和列是任何时候不许编辑的,但是可以代码修改设置 2,可以设置背景色(包括固定好和表格内部背景色,非固定单元格背景只对新建单元格有效) 3,可以合并单元格(横向竖向均可合并,支持横竖同时合并单元格效果) 4,边框线宽度可以设置(外边框线,内边框线可以分开设置) 5,边框颜色可以设置(内外线色可以设置不同颜色) 6,可以设置编辑状态(此属性是新建单元格属性,只对新建单元格生效) 7,只读属性(针对所有非固定单元格) 8,随时可以设置行数和列数(减少的话,末尾待减少储存数据会丢失) 9,增加是否立即刷新参数,可以在大量输入录入时快速执行 下面是单元格单独属性设置介绍 1,可以储存
字符串
2,可以储存整数 3,可以储存文本(默认单元格内显示[DEMO],可以编辑实际内容或读取实际内容) 4,可以储存
字符串
列表(可以设置读取选择
字符串
) 5,可以储存日期(格式2018-07-06) 6,可以储存时间(格式10:26:32,设置智能设置到时分,直接赋值可以包含更
精确
单位) 7,可以设置日期(格式包含以上格式,设置同上.直接赋值可以保存更
精确
单位) 8,可以储存颜色(显示以保存颜色显示) 9,单元格字体,所有字体设置均支持(包含颜色,字体,换行,对齐等属性) 10,背景可以单独设置 10,可以单独设置是否允许编辑 详细使用请看使用说明
Delphi
XE10零基础实战快速入门
通过课堂上一个一个的实战例子,演示
Delphi
XE10的用法,最后通过一个完整的通讯录程序,让学员初步掌握软件开发的全部流程让零基础学员快速入门
Delphi
编程,快速掌握
Delphi
的使用方法,并能够制作出自己的软件来。为同学们下一步的提高打下坚实的基础。
Delphi
开发技巧之-System
使用TMemoryStream保存数据 使用未注册字体 使用注册表读写
字符串
使系统菜单关闭按钮失效 列举注册表键 列举运行的进程 列出所有登录到工作站的用户信息 创建
精确
定时器 取CPU名称 取windows, system, temporary 目录 取其它应用程序状态栏文本 取内存信息 取屏幕保护等待时间 取当前用户名 取当前鼠标位置的句柄和类名 取磁盘卷标名 取窗口最小化或最大化通知 取驱动器类型 取鼠标指针下的控件标题 在Windows NT下获取所有驱动器列表 在窗体内使用IP地址控件 屏蔽 Alt+F4 开关 Caps Num Scroll 锁 当程序空闲时执行 打开“开始”菜单 打开时间对话框 改变其它应用程序标题 改变指定网络服务器或域的用户密码 改变标准Windows对话框 改变系统时间 显示Dll函数输出 显示格式化对话框 根据指定位置格式化货币值 检查windows的启动模式 检查系统字体大小 检查计算机是否联网 清空回收站 确定用户登录域 结束任务 设置和取消CD自动运行 转到待机模式 转换ASCII为ANSI 运行控制台应用程序获取它的输出 通过串口读写
字符串
锁定工作站 闪烁窗口 隐藏任务列表
中
的程序 隐藏开始按钮和开始菜单
DELPHI
Variant变量的使用技巧
delphi
为了完全支持OLE,32位
Delphi
增加了Variant 数据类型,本节将从宏观角度来分析这种数据类型。实际上,Variant类型对Pascal语言有普遍而深入的影响,
Delphi
控件库
中
与OLE 无关的地方也使用到这种类型。 Variant变量没有类型 一般说来,你可以用Variant 变量存储任何数据类型,对它执行各种操作和类型转换。需要注意的是:这违反了Pascal 语言的一贯原则,有悖于良好的编程习惯。variant 变量的类型检查和计算在运行期间才进行,编译器不会提示代码
中
的潜在错误,这些错误在进一步测试
中
才能发现。总之,你可以认为包含variant变量的代码是解释性代码,正如解释性代码一样,许多操作直到执行时才能知道,这对代码运行速度会有很大的影响。 上面对Variant 类型的使用提出了警告,现在来看看Variant 类型究竟能干什么。基本上说,如果声明了一个variant 变量: var V: Variant; 你就可以把各种不同类型的值赋给它: V := 10; V := 'Hello, World'; V := 45.55; 一旦得到一个variant 值,你可以把它拷贝给任何兼容或不兼容的数据类型。如果你把值赋给不兼容的数据类型,
Delphi
会力尽所能进行转换,无法转换则颁布一个运行时间错误。实际上,variant变量
中
不仅包含了数据还包含有类型信息,并允许一系列运行时间操作,这些操作很方便,但运行速度慢且安全性差。 见例VariTest,它是上面代码的扩展。窗体上有三个编辑框,一对按钮,第一个按钮的OnClick 事件代码如下: procedure TForm1.Button1Click(Sender: TObject); var V: Variant; begin V := 10; Edit1.Text := V; V := 'Hello, World'; Edit2.Text := V; V := 45.55; Edit3.Text := V; end; 很有趣是不是?你可以把一个值为
字符串
的variant 变量赋给编辑框Text 属性,还可以把值为整数或浮点数的variant 变量赋给Text属性。正如你在图10.1
中
所看到的,一切正常。 (图10.1)按Assign按钮后,例VariTest的输出结果 图 10.1: 例 VariTest 的 Assign 按钮 Click 事件输出结果 更糟糕的是:你还可以用variant变量计算数值,从第二个按钮的Click事件代码就可看到这一点: procedure TForm1.Button2Click(Sender: TObject); var V: Variant; N: Integer; begin V := Edit1.Text; N := Integer(V) * 2; V := N; Edit1.Text := V; end; 至少这种代码带有一定危险性,如果第一个编辑框包含了一个数字,那么一切运行正常;如果不是,将会引发异常。这里再重申一遍,如果不到万不得以,不要随便使用Variant 类型,还是应坚持使用传统的Pascal 数据类型和类型检查方法。在
Delphi
和 VCL
中
,variant变量主要是用于 OLE 支持和数据库域的访问。 Variant类型内部结构
Delphi
中
定义了一个 variant 记录类型,TVarData,它与Variant 类型有相同的内存布局。你可以通过TVarData访问variant变量的实际类型。TVarData 结构
中
包含了Variant类型信息(由Vtype域表示)、一些保留域及当前值。 VType域的取值包括OLE 自动化
中
的所有数据类型,这些类型通常叫OLE 类型或variant 类型。以下是variant 类型的完整列表,按字母顺序排列: varArray varBoolean varByRef varCurrency varDate varDispatch varDouble varEmpty varError varInteger varNull varOleStr varSingle varSmallint varString varTypeMask varUnknown varVariant 你可以在
Delphi
帮助系统的variants 主题下找到这些类型的说明。 还有许多操作variant 变量的函数,你可以用它们进行特定的类型转换,或通过它们获取variant变量的类型信息(例如VarType 函数),当你用variant变量写表达式时,
Delphi
会自动调用这些类型转换和赋值函数。另外还有操作variant 数组的例程,你可以通过帮助文件的Variant support routines 主题了解相关内容。 Variant类型运行很慢! Variant 类型代码运行很慢,不仅数据类型转换如此,两个值为整数的Variant 变量相加也是如此。它们几乎跟Visual Basic这种解释性代码一样慢!为了
比较
Variant变量和整型变量的运行速度,请看例VSpeed 。 程序
中
设置了一个循环,记录运行时间并在进程条
中
显示运行状态。下面是基于variant类型的一段代码,基于整型的代码与此相似: procedure TForm1.Button1Click(Sender: TObject); var time1, time2: TDateTime; n1, n2: Variant; begin time1 := Now; n1 := 0; n2 := 0; ProgressBar1.Position := 0; while n1 < 5000000 do begin n2 := n2 + n1; Inc (n1); if (n1 mod 50000) = 0 then begin ProgressBar1.Position := n1 div 50000; Application.ProcessMessages; end; end; // we must use the result Total := n2; time2 := Now; Label1.Caption := FormatDateTime ( 'n:ss', Time2-Time1) + ' seconds'; end; 记时这段代码值得一看,因为你可以把它用到任何类型的性能测试
中
。正如你所看到的,程序用Now 函数获取当前的时间,用FormatDateTime 函数格式化时间差,输出结果以分("n")和秒("ss")表示。除此之外,你可以用Windows API的GetTickCount 函数,该函数能
精确
显示操作系统启动后至当前的毫秒数。 从上例可见两者的速度差异非常之大,以至于不用
精确
记时也能看到这种差异。图10.2是在本人计算机上运行程序看到的结果。当然运行结果取决于运行程序的计算机,但是两者的数值比不会有太大变化。
Delphi
5,388
社区成员
262,730
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章