CnPack Forum


 
Subject: 每日构建为什么是空的 :( delphi经常会无报错退出
felixsun
普通灌水员
Rank: 2



UID 231
Digest Posts 0
Credits 51
Posts 44
点点分 51
Reading Access 10
Registered 2003-11-25
Status Offline
Post at 2004-11-30 14:54  Profile | Blog | P.M. 
每日构建为什么是空的 :( delphi经常会无报错退出

在delphi 6下, delphi经常会无报错退出,

  估计是输入助手的问题

  规律:
   每次都是在敲几个字母后要出现助手对话框的时候,
   关闭 输入助手 后没有这个问题

  幸亏我有 Ctrl + S 的习惯 :D
Top
zjy
管理员
Rank: 9Rank: 9Rank: 9



UID 2
Digest Posts 6
Credits 2385
Posts 1543
点点分 2385
Reading Access 102
Registered 2002-12-16
Location China
Status Offline
Post at 2004-11-30 15:48  Profile | Site | Blog | P.M. 
每日构建刚才正在做目录调整,现在可以在这里下载:
http://www.cnvcl.org/downbuilds.php

D6下助手导致无报错退出是严重的问题,请查看这个帖子来查错:
http://bbs.cnvcl.org/viewthread.php?tid=291
如果有空,请下载一个调试版帮助我们改正。




Zhou JingYu
CnPack Administrator
http://www.cnpack.org/
Top
felixsun
普通灌水员
Rank: 2



UID 231
Digest Posts 0
Credits 51
Posts 44
点点分 51
Reading Access 10
Registered 2003-11-25
Status Offline
Post at 2004-11-30 21:36  Profile | Blog | P.M. 
进行了一些测试, 初步估计是,语法分析器的问题,

在特定的工程下,故障重现率100%
工程的特点是,包含了很多单元,注释掉部分单元后,故障消失,取消注释后重现,
只要注释掉部分单元就可以,不需要特定的单元,

我猜测是,搜到的关键字太多,语法分析器的存储被溢出了   仅仅是猜测
Top
felixsun
普通灌水员
Rank: 2



UID 231
Digest Posts 0
Credits 51
Posts 44
点点分 51
Reading Access 10
Registered 2003-11-25
Status Offline
Post at 2004-11-30 21:40  Profile | Blog | P.M. 
interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ScktComp, inifiles, TypeUnit, StdCtrls, ExtCtrls, Grids, Menus, ComCtrls,
  ActnList, winsock2, te_controls, ksthemeforms, ksthemeengine,
  ksthememenus, ksthemegrids, ksthemetabs, ksthemeedits, ksthemelabels,
  ksthemebuttons, ksthemepanels, ksthemeitems, ksthemespinedit, ShellAPI,
  jpeg, ksthemetrackbars, ksthemestatusbar, ksthemestdcontrol, GFrame,
  ksthemecheckboxs, ImgList, ksthemecomboboxs, SimpleTCP,
  ksthememessages, Global, syncobjs, ksthemegroupboxs;

implementation

uses LogInUnit, AnswerRecordMeetListUnit, AnswerOrRecordUnit,
  NotificationUnit, TodayMeetListUnit, SendNotificationUnit,
  SetMeetUnit, MeetMemberUnit, UIUnit, Video, FullVideo, HandleMemUnit,
  HandleBuffUnit, UnitCtrl, ChooseServerUnit, ChangeInforUnit,
  RcvTextUnit, ChatUnit, PresideWindows, SpeedkerWindows, MyVideoWindows,
  SendProgress, MeetMsgListUnit, ChooseFileUnit, TurnForm,
  SetSoundUnit, FileSendClientUnit, UnitWDMVFWCap, RForm, typinfo,
  StartClinicUnit;
Top
zjy
管理员
Rank: 9Rank: 9Rank: 9



UID 2
Digest Posts 6
Credits 2385
Posts 1543
点点分 2385
Reading Access 102
Registered 2002-12-16
Location China
Status Offline
Post at 2004-11-30 22:06  Profile | Site | Blog | P.M. 
OH,这个工程真大啊!如果确实是标识符太多的问题话,用调试版专家应该可以查到这个问题,有空下载一下测试一下吧。
http://www.cnvcl.org/download/debug/CnWizards_0.7.0.8_Debug.exe




Zhou JingYu
CnPack Administrator
http://www.cnpack.org/
Top
felixsun
普通灌水员
Rank: 2



UID 231
Digest Posts 0
Credits 51
Posts 44
点点分 51
Reading Access 10
Registered 2003-11-25
Status Offline
Post at 2004-11-30 23:01  Profile | Blog | P.M. 
已经跟踪到这里,应该是这一段出的问题
单元 CnWizSymbolList

for i := 0 to SymbolCount - 1 do
begin
// Get the name of the symbol.
CompGetSymbolText(Symbols^[i], S, 2);

if Filter <> '' then
Idx := Pos(Filter, UpperCase(S))
else
Idx := 1;
if (Idx = 1) or MatchAnyWhere and (Idx > 0) then
begin
// Get the declear of the symbol.
CompGetSymbolText(Symbols^[i], Text, 1);
IconIndex := GetIconIndex(Text);
if IconIndex <> siUnknown then
begin
Idx := AnsiPos(S, Text);
if Idx > 0 then
Text := Trim(Copy(Text, Idx + Length(S), MaxInt));
end;
// 某些声明会带 (...) 的无意义符号
Text := StringReplace(Text, '(...)', '', [rfReplaceAll]);
Add(S, IconIndex, Round(MaxInt / SymbolCount * i), Text);
end;
end;

Top
felixsun
普通灌水员
Rank: 2



UID 231
Digest Posts 0
Credits 51
Posts 44
点点分 51
Reading Access 10
Registered 2003-11-25
Status Offline
Post at 2004-11-30 23:08  Profile | Blog | P.M. 
应该是这句,当i太大的时候,
                CompGetSymbolText(Symbols^[i], Text, 1);
Top
felixsun
普通灌水员
Rank: 2



UID 231
Digest Posts 0
Credits 51
Posts 44
点点分 51
Reading Access 10
Registered 2003-11-25
Status Offline
Post at 2004-11-30 23:34  Profile | Blog | P.M. 
出错时 SymbolCount 远远大于 i ,
GetMemory 也都没有失败
Top
zjy
管理员
Rank: 9Rank: 9Rank: 9



UID 2
Digest Posts 6
Credits 2385
Posts 1543
点点分 2385
Reading Access 102
Registered 2002-12-16
Location China
Status Offline
Post at 2004-12-1 08:13  Profile | Site | Blog | P.M. 
请问出错时 SymbolCount 大约有多少?你的 D6 打过 SP2 了吗?
我找个大工程测试一下看看。




Zhou JingYu
CnPack Administrator
http://www.cnpack.org/
Top
zjy
管理员
Rank: 9Rank: 9Rank: 9



UID 2
Digest Posts 6
Credits 2385
Posts 1543
点点分 2385
Reading Access 102
Registered 2002-12-16
Location China
Status Offline
Post at 2004-12-1 08:50  Profile | Site | Blog | P.M. 
我刚才在 D6SP2 下把几乎所有系统自带单元都加进去,SymbolCount 达到 46,666,也没有出错啊。




Zhou JingYu
CnPack Administrator
http://www.cnpack.org/
Top
felixsun
普通灌水员
Rank: 2



UID 231
Digest Posts 0
Credits 51
Posts 44
点点分 51
Reading Access 10
Registered 2003-11-25
Status Offline
Post at 2004-12-1 11:04  Profile | Blog | P.M. 
忘记说了,出错时, I只有 1044  
我在
CompGetSymbolText(Symbols^, Text, 1);
前后都加了 OutputDebugString
确定,只到了这句的前面
Top
zjy
管理员
Rank: 9Rank: 9Rank: 9



UID 2
Digest Posts 6
Credits 2385
Posts 1543
点点分 2385
Reading Access 102
Registered 2002-12-16
Location China
Status Offline
Post at 2004-12-1 11:32  Profile | Site | Blog | P.M. 
在源码的不同位置弹出输入助手时,显示的列表项也不同的,比如在:
var
  i: In
这里弹出时列表中包含的都是类型和常量列表,而在方法体中列表又不同,这个是 IDE 内部处理的,你发生错误时是在什么位置呢?还是不管在哪都出错?

另外,能不能查查在第一次调用:
CompGetSymbolText(Symbols^[i], S, 2); // 这句返回的是标识符
时,返回的 S 是什么?
CompGetSymbolText(Symbols^[i], Text, 1); // 这句返回的是声明
是这一句出错吧。

如果有问题,可能得跟踪 IDE 的汇编了,可惜我这里不能重现。

另外,在使用助手出错的环境下,使用 IDE 自己的自动完成是否也会出错呢?




Zhou JingYu
CnPack Administrator
http://www.cnpack.org/
Top
felixsun
普通灌水员
Rank: 2



UID 231
Digest Posts 0
Credits 51
Posts 44
点点分 51
Reading Access 10
Registered 2003-11-25
Status Offline
Post at 2004-12-1 17:35  Profile | Blog | P.M. 
函数里
Var
  a:Tv

类似的
Top
zjy
管理员
Rank: 9Rank: 9Rank: 9



UID 2
Digest Posts 6
Credits 2385
Posts 1543
点点分 2385
Reading Access 102
Registered 2002-12-16
Location China
Status Offline
Post at 2004-12-6 13:41  Profile | Site | Blog | P.M. 
在这个位置时符号确实是比较多的,那使用 IDE 自己的自动完成是否也会出错呢?




Zhou JingYu
CnPack Administrator
http://www.cnpack.org/
Top
 




All times are GMT++8, the time now is 2024-4-18 21:00

    本论坛支付平台由支付宝提供
携手打造安全诚信的交易社区 Powered by Discuz! 5.0.0  © 2001-2006 Comsenz Inc.
Processed in 0.007739 second(s), 8 queries , Gzip enabled

Clear Cookies - Contact Us - CnPack Website - Archiver - WAP