从来没遇到过这种情况,单步调试时能进入{......}中执行语句。大惑不解,请高人指点。
解决方案 »
- 关于delphi C/S 结构的系统中数据库连接的疑问
- 菜鸟问题一个:验证窗体(普通)、主窗体(MDI)、子窗体1(MDICHILD1) 启动顺序问题!分不够另开贴再加!!!!
- 求:API HOOK的实现!!!!!!!
- excel资源在delphi中什么时候释放?
- 如何用Delphi控制SQL2000的:导入导出 备份与恢复 用户管理,分配权限等等
- Delphi下的Object Pascal支持模版编程吗?
- 问:该调用什么API获取可执行文件(.Exe,.Dll等)的版本,公司名称,程序名称等信息呢?
- 给id赋值2,欲删除表1中id=2的纪录,thank u 有分
- 关于NMSMTP的问题,请指教!
- Delpi如何存取SQLSERVER的Image或者binary字段。
- afterpost的问题.
- 怎么做OCR啊
我还把其它地方的同名文件也删除了。也没用。唉!
.Dcu文件能删吗?
你的代码不是在Delphi下面敲进来的,是从网页上或者写字板或者QQ等工具里拷过来的。
Delphi的回车换行符是#13#10,但是网页和某些工具#13就换行了。Copy进Delphi编辑器的时候,看起来是换行了,但是调试工具不认识。就造成了“错行”的现象。也就是断点所指示的行并不是当前所运行的行。
解决办法:
将你的代码Copy到记事本中,你会看到有问题的地方是一个黑方块而没有换行。删掉那个黑方块,回车一下,处理完了再拷回Delphi里面重新编译就可以了。
没有你说的那种情况。代码都是目前正在使用的。
我现在只是在上面做修改。
使用Compile All Projects编译,故障依旧。
其它路径下的所有同名文件删了,故障依旧。
build all projects ,故障依旧。
绝望中!
还有最后一招,把Delphi也删了
再重装试试
使用Compile All Projects编译,故障依旧。
其它路径下的所有同名文件删了,故障依旧。
build all projects ,故障依旧。
绝望中!再按浪说的方法试试,不行,重新把所有代码重写一。。呵呵
使用Compile All Projects编译,故障依旧。
其它路径下的所有同名文件删了,故障依旧。
build all projects ,故障依旧。
绝望中!------------------
肯定是做的还不够彻底,dcu和源文件的版本不一致。把工程选项和环境选项的目录设置检查一下
看了,没有。
to:lijinghe1(ljh)
工程选项和环境选项的目录设置应该注意什么。代码如下:
procedure TfrmOverTurnDoWith.tblOverTimeBeforePost(DataSet: TDataSet);
var vSeg_Year,vSeg_Month,vSeg_Day : Word;
vSeg_WaitMsg : TfrmWaitMessage;
vSeg_Component : TComponent;
vSeg_WeekSta,vSeg_WeekSun : string;
begin
inherited;
if (tblOverTime.FieldByName('ove_OverTime').AsFloat > 0) and
(tblOverTime.FieldByName('ove_Pay').AsFloat >= 0) then
begin
tblOverTime.FieldByName('ove_TurnIn').AsFloat :=
tblOverTime.FieldByName('ove_OverTime').AsFloat
- tblOverTime.FieldByName('ove_Pay').AsFloat
end; if tblOverTime.FieldByName('ove_TurnIn').AsFloat > tblOverTime.FieldByName('ove_OverTime').AsFloat then
begin
ShowMessage('倒休时不能大于加班时');
Abort;
end;
if tblOverTime.FieldByName('ove_Pay').AsFloat > tblOverTime.FieldByName('ove_OverTime').AsFloat then
begin
ShowMessage('支付时不能大于加班时');
Abort;
end;
if tblOverTime.FieldByName('ove_Department').AsString <= ' ' then
begin
ShowMessage('请输入部门名称');
dbgOverTimeove_Department.Field.FocusControl;
Abort;
end;
if tblOverTime.FieldByName('ove_WorkNo').AsString <= ' ' then
begin
ShowMessage('请输入员工工号');
dbgOverTimeove_WorkNo.Field.FocusControl;
Abort;
end;
if tblOverTime.FieldByName('ove_Date').AsString <= '0' then
begin
ShowMessage('请输入日期');
dbgOverTimeove_Date.Field.FocusControl;
Abort;
end; DecodeDate(tblOverTime.FieldByName('ove_Date').AsDateTime,vSeg_Year,vSeg_Month,vSeg_Day);
tblOverTime.FieldByName('ove_Year').AsInteger := vSeg_Year;
tblOverTime.FieldByName('ove_Month').AsInteger := vSeg_Month; stpCheckRepeatmonth.ParamByName('@pg_mon_WorkNO').AsString :=
tblOverTime.FieldByName('ove_WorkNo').AsString;
stpCheckRepeatmonth.ParamByName('@pg_mon_Year').AsInteger := vSeg_Year;
stpCheckRepeatmonth.ParamByName('@pg_mon_month').AsInteger := vSeg_Month;
stpCheckRepeatmonth.ParamByName('@Ficount').AsInteger := 0;
stpCheckRepeatmonth.Prepare;
stpCheckRepeatmonth.ExecProc;
if (stpCheckRepeatmonth.ParamByName('@Ficount').AsInteger > 0) and (vg_UserName<>'AD1M') then
begin
ShowMessage('月考勤已锁');
vSeg_Component := Application.FindComponent('frmWaitMessage');
if vSeg_Component <> nil then
vSeg_Component.Free;
Abort;
end
else begin
if tblOverTime.FieldByName('ove_OverTimeType').AsString <> 'z' then
begin
{if dbcldep_Department.Text <> '制模部' and dbcldep_Department.Text <> '开发部' and dbcldep_Department.Text <> '市场部' then
begin
tblOverTime.FieldByName('ove_OverTimeType').AsString := '平时';
if Pos(tblOverTime.FieldByName('workgroup').AsString,'塑一 塑二 塑三') > 0 then
begin
if tblOverTime.FieldByName('workgroup').AsString = '塑一' then
begin
if DayofWeek(tblOverTime.FieldByName('ove_Date').AsDateTime) = 2 then
tblOverTime.FieldByName('ove_OverTimeType').AsString := '周六';
if DayofWeek(tblOverTime.FieldByName('ove_Date').AsDateTime) = 3 then
tblOverTime.FieldByName('ove_OverTimeType').AsString := '周日';
end;
if tblOverTime.FieldByName('workgroup').AsString = '塑二' then
begin
if DayofWeek(tblOverTime.FieldByName('ove_Date').AsDateTime) = 4 then
tblOverTime.FieldByName('ove_OverTimeType').AsString := '周六';
if DayofWeek(tblOverTime.FieldByName('ove_Date').AsDateTime) = 5 then
tblOverTime.FieldByName('ove_OverTimeType').AsString := '周日';
end;
if tblOverTime.FieldByName('workgroup').AsString = '塑三' then
begin
if DayofWeek(tblOverTime.FieldByName('ove_Date').AsDateTime) = 6 then
tblOverTime.FieldByName('ove_OverTimeType').AsString := '周六';
if DayofWeek(tblOverTime.FieldByName('ove_Date').AsDateTime) = 7 then
tblOverTime.FieldByName('ove_OverTimeType').AsString := '周日';
end;
end
else begin
if DayofWeek(tblOverTime.FieldByName('ove_Date').AsDateTime) = 7 then
tblOverTime.FieldByName('ove_OverTimeType').AsString := '周六';
if DayofWeek(tblOverTime.FieldByName('ove_Date').AsDateTime) = 1 then
tblOverTime.FieldByName('ove_OverTimeType').AsString := '周日';
end;
if chkSWeek.Checked then
begin
tblOverTime.FieldByName('ove_OverTimeType').AsString := '平时';
vSeg_WeekSta := cbWeek.Text;
vSeg_WeekSun := cdeWeek.Text;
if DayofWeek(tblOverTime.FieldByName('ove_Date').AsDateTime) = GetWeekSerial(vSeg_WeekSta) then
tblOverTime.FieldByName('ove_OverTimeType').AsString := '周六';
if DayofWeek(tblOverTime.FieldByName('ove_Date').AsDateTime) = GetWeekSerial(vSeg_WeekSun) then
tblOverTime.FieldByName('ove_OverTimeType').AsString := '周日';
end;
if stpgetHoliday.Active then
stpgetHoliday.Active := False;
stpgetHoliday.ParamByName('@pg_Date').AsDateTime :=
tblOverTime.FieldByName('ove_Date').AsDateTime;
stpgetHoliday.Prepare;
stpgetHoliday.ExecProc;
if not stpgetHoliday.Active then
stpgetHoliday.Active := True;
if stpgetHoliday.RecordCount > 0 then
tblOverTime.FieldByName('ove_OverTimeType').AsString := '假日';
end
else} begin
tblOverTime.FieldByName('ove_OverTimeType').AsString := '平时';
if stpgetHoliday.Active then
stpgetHoliday.Active := False;
stpgetHoliday.ParamByName('@pg_Date').AsDateTime :=
tblOverTime.FieldByName('ove_Date').AsDateTime;
stpgetHoliday.Prepare;
stpgetHoliday.ExecProc;
if not stpgetHoliday.Active then
stpgetHoliday.Active := True;
if stpgetHoliday.RecordCount > 0 then
tblOverTime.FieldByName('ove_OverTimeType').AsString := '假日';
end;
end
else begin
if Pos(tblOverTime.FieldByName('ove_OverTimeType').AsString ,'平时,假日,周六,周日') = 0 then
begin
ShowMessage('输入加班类型不下确');
dbgOverTimeove_OverTimeType.Field.FocusControl;
Abort;
end;
end;
end;
end;
靠!它竟然不执行。我把这个按妞事件也全删除了,写了一个showmessage,设置了断点测试了一下,
结果根本没有执行这个语句,从结果看还是执行的原来程序。 那它执行的是那里的代码,难倒闹鬼了。
其他的Pas有没有问题?
如果其他Pas没有问题就是这个Pas的问题,否则就可能是你操作系统或者Delphi的问题。如果只是这个Pas有问题,那么把这个pas从工程里面移掉。
重新做一个。Pas名称,窗体名称不要太简单,最好是唯一的。这样可能2、3个小时能解决问题,也好过胡乱猜测了。
现在新的问题又来了,直接编译此bpl文件不能通过。在下对bpl以前没用过,
望各位继续帮助。
错误提示如下:
[Error] OverTurnDoWith.pas(360): Statement expected but 'PROCEDURE' found
[Hint] OverTurnDoWith.pas(131): Private symbol 'GetWeekSerial' declared but never used
[Fatal Error] pkgOverTurnDoWith.dpk(48): Could not compile used unit '..\Form\OverTurnDoWith.pas'