delphi的Missing operator or semicolon报错

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了delphi的Missing operator or semicolon报错相关的知识,希望对你有一定的参考价值。

with Self.QueryMachineCollectTime do
begin
while not eof do
for i:=1 to QueryMachineCollectTime.RecordCount do
begin
LogFile:=ExtractFilePath(ParamStr(0))+FormatDateTime('yyyymmdd',Now)+'_'+inttostr(QueryMachineCollectTime.FieldByName('ClockId').AsInteger)+'.txt'; //打卡txt
clk.Port:=1; //通讯端口
clk.baudrate:=9600; //速率
//clk.clock_id:=StrToInt('$'+edClock_id.Text);
clk.clock_id:=ConverClockID(QueryMachineCollectTime.FieldByName('ClockId').AsInteger); //机器号
clk.CommStyle:=1; //连接方式 0:串口;1:tcp/ip
SelectCommStyle(1); //设置TCP/IP通讯
clk.IPAddr:=PChar(QueryMachineCollectTime.FieldByName('IPAddr').AsString); //IP
clk.IPPort:=QueryMachineCollectTime.FieldByName('IPPort').AsInteger; //IP端口 4001
clk.CmdVerify:=QueryMachineCollectTime.FieldByName('CmdVerify').AsBoolean; //校验
if OpenPort(@clk, clk.CommStyle) then
begin
ReadAllRecordAsFile(clk.hPort,clk.clock_id,PChar(LogFile),0,true,nil); //生成打卡数据txt
ReadClockRecordTotal(clk.hPort, RecordTotal);
//ClearAllReadCard(clk.hPort); //清空考勤机打卡数据
SetClockTime(clk.hPort,SetTime); //设置卡机时间为当前服务器时间
ClosePort(@clk, clk.CommStyle);
end;
createDate:=FormatDateTime('yyyymmdd',Now); //insert sqlserver时的CREATEDATE
createTime:=FormatDateTime('hhmmss',Now); //insert sqlserver时的CREATETIME
counter:=0;
if not FileExists(LogFile) then
begin
WriteLog(logFile2,'打卡数据文件丢失。');
Self.Close;
end;
AssignFile(TXT,LogFile); //把LogFile关联到变量TXT
Reset(TXT); //打开文件
while not Eof(TXT) do
begin
.....
.....
.....

delphi 在while not Eof(TXT) do这里报了Missing operator or semicolon这个错误,但我查了很久,语法没有问题吧。
如果把前面的with Self.QueryMachineCollectTime do这一句去掉,就能编译通过!

请问delphi高手指教一下。

虽然看不到你后边的代码,但看你的情况,是少了一个End; 编写代码时,习惯Begin跟End先成对写好,然后再往里边写代码,这样就可以避免这种错误了。
例如:
While Not Eof(TXT) DO
Begin

End;
然后再返回到其中写你的代码。
While Not Eof(TXT) DO
Begin
//ToDo.....
End;
建议你装一个CnPack插件。
参考技术A 你的 Eof(TXT)是包含在with Self.QueryMachineCollectTime do中的么,如果是的话
估计就是ADO组件中的Eof与读写文件中的Eof中突了,在某些情况下要尽量少用with语句,而且不要嵌套,要避免的地方就要尽量避免
参考技术B begin和end肯定没配对

如何解决笔记本开机出现“missing operating system”

参考技术A

  如果你一打开打开电脑出现missing operating system的英文字母,怎么都进不了系统桌面,那怎么办呢? 如何解决笔记本开机出现“missing operating system”?下面跟着我来一起了解下吧。

  解决笔记本开机出现“missing operating system”方法

  笔记本开机显示missing operating system可以说是笔记本使用中较常见的一种故障,missing operating system从字面上理解就是操作系统丢失,在硬盘主引扇区中还存在着一个重要的部分,就是最后两个字节“55AA",此字节为扇区的有效标志,当从硬盘,软盘或者光盘启动时,将检测这两个字节,如果存在则认为有硬盘存在,否则将显示为missing operating system。同上次我们讲到的Win7开机显示“operating system not found”类似,一般是硬盘里面没有操作系统或者操作系统引导文件损坏。

  一、系统故障原因分析与解决方法。

  系统故障:由于操作者的操作不当,比如强行关机,病毒破坏等导致系统引导文件丢失。最简单的方式就是从USB货光盘引导进入PE系统,在PE下查看否认到硬盘及分区。如果能认得到的话,一般可以通过重装操作系统或者修复分区表即可。(注:修复分区表可能存在丢失数据的风险)。

  二、硬件故障原因分析与解决方法。

  硬件故障:硬盘损坏、主板认不到硬盘等都会引起报missing operating system错。如果近PE认不到硬盘,在BIOS里也认不到硬盘,就要考虑是否是硬盘本身问题了。可以将硬盘拆卸下来装到硬盘盒里面看是否能正常读取里面的数据,不能的话一般就是硬盘坏了,如果可以识别就是主板原因导致的笔记本认不到硬盘。该故障就需要专业人员进行主板的专业检测。

  最后跟大家说说如何预防这个故障,可能出现这个故障本身多是由于操作者操作不当引起的,在使用笔记本的过程中,尽量正常关机,在笔记本还没完全关闭之前,尽量不要马上把盖子合上,尤其要避免在使用过程中震动笔记本。当笔记本出现不正常死机,不定时蓝屏,或者启动过慢时,就要注意是否硬盘有损坏,这种情况下,建议使用者要及时导出硬盘里面的重要数据,防止硬盘损坏导致的数据丢失的后果。

  装win7出现missing operatingsystem解决方法

  1.进入windows pe操作系统,寻找到pe系统自带的DG分区软件单文件版本,运行该软件。如果你发现自己的pe操作系统之中并没有此软件的话可以尝试在别的机器之上下载通过U盘复制运行。

  2.DG分区软件会自动帮助用户列出机器之中所存在的设备和设备之中规划的分区。这里我们应当选中安装了操作系统分区所在的存储设备。

  这里我选中了本地磁盘所在的三星SSD硬盘。

  3.右键,这个时候会弹出右键菜单。在右键菜单之中寻找重建MBR(主引导记录)选项。

  如果你没有发现这个选项的话请确保自己没有错误的选中分区而不是存储设备。

  4.软件弹出提示,重建主引导记录有可能会让之前的引导程序失效。因为在之前用户的机器之中出现了missing operating system问题,所以说可以肯定的就是之前的windows8下载引导程序必然是失效过了。这里点击确定,我们所做的只不过是修复工作而已。

以上是关于delphi的Missing operator or semicolon报错的主要内容,如果未能解决你的问题,请参考以下文章

delphi7报错: Missing operator or semicolon

如何解决笔记本开机出现“missing operating system”

运行matlab时出现这个错误。是啥意思Error: Missing operator, comma, or semicolon.

刚装的ROS无法启动,提示missing operating system

电脑重装系统出现missing operating system怎么办?

MongoDB - MongoDB CRUD Operations, Query Documents, Query for Null or Missing Fields