这是什么问题???

向良玉 2010-06-18 10:48:20
...全文
103 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
向良玉 2010-06-19
  • 打赏
  • 举报
回复
就是这里出的错,运行完后出错,但是数据库都已经写进去了。。。
我自己调试的结果只知道
/////////////////////////////////////从memo中读取数据并分析 ///////////
之前出的错,把后面改成函数或者屏蔽都出错

function solve(ss: string;bb:string):string;
var i,i1,j,k,m,n,m2,m4,p,p1,p2,k1:integer;
a2,a3: array [1..1000] of string;
s,b:string;
t:double;
begin
ss:=copy(ss,2,length(ss)-1);
n:=length(ss);
i:=0;
k:=1; //位置
p:=1; //数组
m2:=0;
while m2=0 do
begin
if copy(ss,i,1)=',' then
begin
a2[p]:=copy(ss,k,i-k);
k:=i+1;
p:=p+1;
end
else if copy(ss,i,1)=';' then
begin
a2[p]:=copy(ss,k,i-k);
k:=i+1;
p:=p+1;
m2:=1;
end;
i:=i+1;
end;
for i:=1 to p-1 do
begin
s:='';
for j:=1 to p-1 do
begin
if j=i then s:=s
else
begin
s:=s+a2[j]+',';
end;
end;
s:=copy(s,1,length(s)-1);
if s='' then exit; //为空则退出
s:='('+s+';';
m4:=0;

if length(bb)=0 then bb:=bb+s
else
begin
for j:=1 to length(bb) do //判断是否已加入
begin
if copy(bb,j,length(s))=s then
m4:=1;
end;
if m4=0 then bb:=bb+s;
end;
solve(s,bb); //循环调用
end; //for
form1.Memo1.Lines.Add(bb);
end;



procedure TForm1.Button3Click(Sender: TObject);
var i,i1,i2,i3,j,j2,k,kk,p,n,m,m1,m2,m3,m4,m5,ppp,p1,p2,c1:integer;
lmax,rmax,b,b1,b2,s,s1,ss,bb,a,strong:string;
a1,a2,ll: array [1..1000] of string; //ll为最大项目集
mm:array [1..1000] of integer; //记录最大频繁项目集的频数
t:double;
//conf:float;
begin
kk:=0;
//将数据给回变量
adoquery1.Close();
adoquery1.SQL.Clear();
adoquery1.SQL.Add('select max(c) as cc from frequent');
adoquery1.Open();
c:=adoquery1.Fields[0].AsInteger;
for i:=1 to c do
begin
adoquery1.Close();
adoquery1.SQL.Clear();
adoquery1.SQL.Add('select l,r from frequent where c='+inttostr(i));
adoquery1.Open();
l[i]:=adoquery1.Fields[0].AsString;
r[i]:=adoquery1.Fields[1].AsString;
end;

//最大频繁项目集
s:=l[c];
//lmax:=l[c]; //先把最大的添加到最大频繁项目集
// rmax:=r[c]; //先把最大的添加到最大频繁项目集次数
k:=1; //所至位置
p:=1; //数组位数
i:=1;
m2:=0;
while(m2=0) do //输入到数组中,方便比较
begin
if copy(s,i,1)=',' then // 一组中的一段
begin
a1[p]:=copy(s,k,i-k);
lmax:=lmax+a1[p]+',';
k:=i+1;
p:=p+1;
end
else if copy(s,i,1)=';' then // 一组中最后一个
begin
a1[p]:=copy(s,k,i-k); //获取这一组
lmax:=lmax+a1[p]+';';
k:=i+1;
p:=p+1; //得到数组长度
end
else if copy(s,i,1)='*' then //遇到结束符
begin
m2:=1;//停止
end;
i:=i+1;
end;

while(c>1) do
begin
c:=c-1;
s:=l[c];
ppp:=0;////////////////////////////相同项个数限制变量
k:=1; //所至位置
p1:=1; //数组位数
i:=1;
m2:=0;
while(m2=0) do //输入到数组中,方便比较
begin
if copy(s,i,1)=',' then // 一组中的一段
begin
if copy(s,k,i-k)<>'' then
a2[p1]:=copy(s,k,i-k);
k:=i+1;
p1:=p1+1;
end
else if copy(s,i,1)=';' then // 一组中最后一个
begin
a2[p1]:=copy(s,k,i-k); //获取这一组
k:=i+1;
p1:=p1+1;
m1:=0;
for m:=1 to p1-1 do //判断组中是否c-1个都不存在于现有的不完全的最大频繁项目集
begin
for j:=1 to p-1 do
begin
if a1[j]=a2[m] then
m1:=m1+1; // 有相同项
end;
end;
if m1=ppp then //c-1个都不在,就将不存在的添加到现有的最大频繁项目集中
begin
for m:=1 to p1-1 do
begin
m3:=0;
for j:=1 to p-1 do
begin
if a1[j]=a2[m] then m3:=1; // 有相同项
end;
if m3=0 then //不同,则添加进去
begin
a1[p]:=a2[m];
p:=p+1;
end;
lmax:=lmax+a2[m]+','; //存入最大频繁项目集
end;
lmax:=copy(lmax,1,length(lmax)-1);
lmax:=lmax+';';
end;
p1:=1;
end
else if copy(s,i,1)='*' then //遇到结束符
begin
ppp:=ppp+1; //限制数量+1,再次循环
i:=0; //重新再开始
if ppp=c then
m2:=1;//停止
end;
i:=i+1;
end;
end;
lmax:=lmax+'*';
///////////////////////////////求关联规则//////////////////////
s:=lmax;
k:=1; //所至位置
p1:=1; //数组位数
b2:='select orderID from order_pro where ';
i:=1;
m2:=0;
while(m2=0) do //遇到结束符结束
begin
if copy(s,i,1)=',' then // 一组中的一段
begin
a1[p1]:=copy(s,k,i-k);
b2:=b2+'['+a1[p1]+']=1 and ';
k:=i+1;
p1:=p1+1;
end
else if copy(s,i,1)=';' then // 一组中最后一个
begin
a1[p1]:=copy(s,k,i-k); //获取这一组
b:=b2+'['+a1[p1]+']=1'; //动态生成语句
k:=i+1;
p1:=p1+1;
//开始执行这一段
adoquery1.Close();
adoquery1.SQL.Clear();
adoquery1.SQL.Add(b);
adoquery1.Open();
m3:=adoquery1.RecordCount; //算出一个最大频繁项目的个数
for j:=1 to p1-1 do
begin
ss:=ss+a1[j]+',';
end;
ss:=copy(ss,1,length(ss)-1);
ll[kk]:=ss; //将最大频繁项目存入数组
mm[kk]:=m3;
kk:=kk+1;
ss:='('+ss+';'; //装饰下ss以便判断
//////////调用函数solve
solve(ss,bb);
memo1.Lines.Add('*'); //将数据存入memo
bb:='';
ss:='';
b2:='select orderID from order_pro where '; //重置语句
p1:=1;
end
else if copy(s,i,1)='*' then //遇到结束符
begin
m2:=1;//停止
end;
i:=i+1;
end;
adoquery1.Close();

/////////////////////////////////////从memo中读取数据并分析 ///////////
ss:='';
kk:=-1;
for i1:=0 to memo1.Lines.Count-2 do
begin
if memo1.Lines.Strings[i1]<>'*' then //将一组带重复数据的字符都给s
begin //去掉重复项
if ss='' then ss:=memo1.Lines.Strings[i1]
else
begin
k:=1; //所至位置
p:=1; //数组位数
s:=memo1.Lines.Strings[i1];
m2:=length(memo1.Lines.Strings[i1]);
for i:=1 to m2+1 do //输入到数组中,方便比较
begin
if copy(s,i,1)=',' then // 一组中的一段
begin
a1[p]:=copy(s,k,i-k);
// showmessage(s+'+'+a1[p]);
k:=i+1;
p:=p+1;
end
else if copy(s,i,1)=';' then // 一组中最后一个
begin
Setlength(bb,0); //初始化bb
a1[p]:=copy(s,k,i-k); //获取这一组
k:=i+1;
p:=p+1;
for i2:=1 to p-1 do
begin
bb:=bb+a1[i2]+',';
end;
bb:=copy(bb,1,length(bb)-1)+';';

m4:=0; //判断是否重复
for j:=0 to length(ss) do
begin
if copy(ss,j,length(bb))=bb then
m4:=1;
end;
if m4=0 then
ss:=ss+bb; //ss中不存在,加入
p:=1; //初始化p
end;//else 3
end; //for 2
end; //else 2
end //if
else //处理完数据后开始计算 (46,75,73;(75,73;(73;(75;(46,73;(46;(46,75;(23,75,73;(23,73;(23;(23,75;(23,46,73;(23,46;(23,46,75;
begin
kk:=kk+1;
ss:=ss+'*';
ss:=copy(ss,2,length(ss)-1);
b2:='select orderID from order_pro where ';
i3:=1;
p1:=1;
k:=1;
m3:=0;
while(m3=0) do //遇到结束符结束
begin
if copy(ss,i3,1)=',' then // 一组中的一段
begin
a1[p1]:=copy(ss,k,i3-k);
if copy(a1[p1],1,1)='(' then
a1[p1]:=copy(a1[p1],2,length(a1[p1])-1);
b2:=b2+'['+a1[p1]+']=1 and ';
k:=i3+1;
p1:=p1+1;
end
else if copy(ss,i3,1)=';' then // 一组中最后一个
begin
a1[p1]:=copy(ss,k,i3-k); //获取这一组
if copy(a1[p1],1,1)='(' then
a1[p1]:=copy(a1[p1],2,length(a1[p1])-1);
b:=b2+'['+a1[p1]+']=1'; //动态生成语句
k:=i3+1;
p1:=p1+1;
s1:='';
for j2:=1 to p1-1 do
begin
s1:=s1+a1[j2]+',';
end;
s1:=copy(s1,1,length(s1)-1);
//开始执行这一段
adoquery1.Close();
adoquery1.SQL.Clear();
adoquery1.SQL.Add(b);
adoquery1.Open();
m5:=adoquery1.RecordCount; //算出一个最大频繁项目的个数
t:=mm[kk]/m5;
if t>=0.6 then strong:='是'
else strong:='否';
b:='insert into rules values('+#39+ll[kk]+#39+','+#39+s1+#39+','+floattostr(t)+','+#39+strong+#39+')';
adoquery1.Close();
adoquery1.SQL.Clear();
adoquery1.SQL.Add(b);
adoquery1.ExecSQL;
b2:='select orderID from order_pro where '; //重置语句
p1:=1;
end
else if copy(ss,i3,1)='*' then //遇到结束符
begin
m3:=1;//停止
end;
i3:=i3+1;
end;
ss:='';
end;//else 1

end; //for 1
memo1.Clear;
form1.PageControl1.ActivePageIndex:=3;
form1.ADOTable3.Active:=true;
end;
winstonbonaparte 2010-06-18
  • 打赏
  • 举报
回复
沒圖?一片空白
hsmserver 2010-06-18
  • 打赏
  • 举报
回复
很有可能是释放已经释放的对象,或使用未创建的对象
有代码有真相
varick_zhong 2010-06-18
  • 打赏
  • 举报
回复
呵呵,看不到图
bdmh 2010-06-18
  • 打赏
  • 举报
回复
这是大红叉子
向良玉 2010-06-18
  • 打赏
  • 举报
回复
http://img07.taobaocdn.com/sns_album/i7/T18NtDXgtIXXb1upjX.jpg
向良玉 2010-06-18
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 hsmserver 的回复:]
很有可能是释放已经释放的对象,或使用未创建的对象
有代码有真相
[/Quote]
程序可以运行,结果也出来了,就是运行完了才出现这个错误,我调试了一天还没搞出来是哪行。。。有什么快捷的办法解决吗
lyhoo163 2010-06-18
  • 打赏
  • 举报
回复
一片空白
随机开仓,止盈1~2个点,止损1~20个点能实现盈利正期望吗?《从编程小白到量化宗师之路》系列课程是一套综合性实战课程,涵盖股票,期货,虚拟货币等的交易方法和策略手段。《m单位止盈 n单位止损的方式,能不能实现盈利?》是本系列的第四个中级课程。本网站的课程宗旨是缩短个人或小型投资者与大型机构投资者之间的的差距。课程内容从交易者经常见到,经常思考的问题开始,通过分析成交后的盈亏分布,建立模型,刻画问题,并对问题以数学的方式进行了表达。从而得出结论。与市面上的其他理论课程不同,本课程注重实战,注重结果,全部模型代码均已经上传发表,学员上课后,可以使用自己的tick数据,进行分析。如果获取tick数据有疑问,可以参考课程:《期货CTP高频数据Tick下载》 https://edu.csdn.net/course/detail/24783本课程能够解答的问题有:1)请问1单位止盈,3单位止损的系统是否能实现正期望值? https://www.zhihu.com/question/423194389/answer/14989174122)抢帽子交易是什么意思?为什么有的人能够成功,说是取款机,而有的人说风险巨大,是老虎机。看过这个课程,您将会知道:a) 这类问题的究极解决方案,直达问题核心,不再纠结原因b)构建一段时间可用的交易策略c)知道“没有不变的策略”的原因  
【课程简介】本课程是《Armv8/Armv9架构从入门到精通 第二期》中的第四章。建议购买大课程。本课程以为armv8-aarch64、armv9为基准,不涉及armv7及其以前的版本,也不涉及aarch32。本课程包含但不限于以下内容MMU的基础学习:啥是MMU?工作原理?MMU和cache之间的关系?及其怎样相互影响的?哪些是MMU硬件自动的行为?哪些是软件可配置的行为?地址空间基础:啥是虚拟地址空间?啥是物理地址空间?啥时memory-map? 代码程序中的虚拟地址空间是怎样的?arm core硬件决定的物理地址空间是怎样的?SOC memory-map时的地址空间是怎样的?具体的外设又是怎样的地址空间?Translation Regime:系统里有多少个MMU?系统里有多少个Translation Regime?他们之间的关系是怎样的?页表翻译:MMU是怎样翻译的?页表有几级?这些信息是怎么告诉MMU的,MMU又是怎样工作的,软件又需要怎样设计?stage1和stage2的区别和使用?Descriptor:啥是Descriptor、页表项、entry、条目、页表条目? Descriptor的格式是怎样的?每一个属性位是怎样的?MMU除了完成地址转换,属性权限的控制/cache的缓存策略是怎样配置的?optee中使用MMU的示例MMU深度思考篇:开启MMU瞬间可能出现的问题以及多种常用的解决方案。注意这里提到的是多种方案,绝大多数人只知道第一种,除此之外还有没有其它的设计方式? MMU关闭时cache的缓存策略会怎样?【思考】01、一个大系统中有多少个MMU ?02、一个ARM Core中有多少个Translation regime?03、EL1&0 Translation regime Stage2、EL2 Translation regime stage1、EL2&0 Translation regime stage1 这三者的区别是什么?04、TTBR1_EL2寄存器有啥特殊性,这个寄存器是给谁使用的?05、有没有TTBR1_EL3寄存器?为什么?06、什么是memory-map? 一个ARM的系统中,有几套物理地址空间?07、页表到底有几级? 页表最少可以有几级?页表最多可以有几级?08、页表有多大? 页表存放在哪里?页表由谁来管理?09、页表是否能放在cache中?10、什么是Translation Table walk? 什么是TLB?11、请简述页表查询的过程?12、在一个大系统中,物理地址是多少位的? 物理地址是多少位指的是什么?虚拟地址又是多少位的? 物理地址的位数和虚拟地址的位数都是由谁来决定的?13、请说明entry、descriptor、页表项、条目 这个四个词汇的由来?14、TCR中有缓存属性和共享属性、页表的entry中也有缓存属性和共享属性,这俩有什么区别?15、请简述TTBR0和TTBR1的概念和意义?16、请简述cacheability和shareability属性的含义?17、stage1和stage2有何区别?18、stage1和stage2的descriptor中,有很多重复的属性,当两者属性有冲突了怎么办?19、L1、L2、L2的descriptor中也有部分相同的属性,重复时怎么办?20、Descriptor的格式有哪几种?21、Descriptor的类型有哪几种?22、简述您所观察到的系统软件中(操作系统或hypervisor)的shareability和cacheability一般都是怎样配置的?23、开启一个MMU的步骤是怎样的?24、啥是flat map? 啥是full level table?25、页表中的AF属性位、DBM属性位分别是干啥的?26、页表中的nG属性位是干啥的?27、页表中的Contiguous属性位是干啥的?28、在开启MMU的瞬间会考虑哪些事情?【课程目录】当前21节课,6.8小时

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧