沉思的牛 发表于 2013-8-20 13:49:32

鱼C记事本发现的几个问题and交作业

本帖最后由 沉思的牛 于 2013-8-20 13:58 编辑

在学习鱼C记事本遇到了几个问题现在和大家讨论一下:
问题1:小甲鱼的代码不能向下查找
为了理解小甲鱼的代码,我进行单步调试,却发现J的值和我想的不一样赋值为0为什么会是2


到这里我就不明白小甲鱼的代码了

然后我自己写了一个查找的代码,能向下查找,大家看看
//按下查找按钮
procedure TForm1.FindDialog1Find(Sender: TObject);
var
   PosReturn: Integer;
begin


    if startflag = 0 then//第一次进来
    begin
      str:=memo1.Text;//所有字符串给str
      posreturn:=pos(finddialog1.FindText,str);//查找第一次出现的位置

      if(posreturn =0 ) then//第一次查找不到
      messagebox(handle,'查找不到','提醒',MB_OK)
      else
      begin
      str:=copy(str,posreturn+1,length(memo1.Text)-posreturn); //原来查找过的就不要了撒

      //ShowMessage(Str);
   //   showmessage(inttostr(PosReturn));

      ptr:=ptr+PosReturn;//ptr是光标位置

      Memo1.SetFocus;//设置焦点
      Memo1.SelStart:= ptr-1;   //设置光标位置
      Memo1.SelLength:= Length(FindDialog1.FindText); //显示蓝色光标

      startflag:=1;//置一
      end;
      
    end
    else   //第二次及其以上
    begin

      posreturn:=pos(finddialog1.FindText,str); //在Str里面找
      str:=copy(str,posreturn+1,Length(str)-PosReturn); //更新Str
      ptr:=ptr+PosReturn;

   // showmessage(str);
   // showmessage(inttostr(PosReturn));
   // showmessage(inttostr(ptr));
      
   If PosReturn <> 0 then   // 不等于0就是能查找到
      begin
      Memo1.SetFocus;//设置焦点福克斯
      Memo1.SelStart:=ptr-1;   //设置光标位置
      Memo1.SelLength:= Length(FindDialog1.FindText); //显示蓝色光标
      end
      else
      messagebox(handle,'查找不到','提醒',MB_OK); //查找完毕
   end;
end;


//按下取消按钮
procedure TForm1.FindDialog1Close(Sender: TObject);
begin
//两个都是全局变量
      startflag:=0;   //这个是查找标志
   ptr:=0;   //这个是设置光标位置
end;
OK, 到这里自己把查找的问题解决了;
但是小甲鱼的代码没有能理解,还有调试哪里J的值,和预期的不一样,大家来解决一下;

然后我们讨论问题二

问题2:帮助里面的字符和小甲鱼视频里面不一样
看图
小甲鱼的代码为什么我编译过后不一样?


沉思的牛 发表于 2013-8-20 13:51:26

强烈支持楼主ing...........:lol:

牡丹花下死做鬼 发表于 2013-8-20 14:08:00

没怎么接触delphi 7只能支持一下 啦(*^__^*) 嘻嘻……

浮游小鱼 发表于 2013-8-20 14:44:48

:dizzy:上次是科技的实力的vcd试试

沉思的牛 发表于 2013-8-21 10:04:18

牡丹花下死做鬼 发表于 2013-8-20 14:08 static/image/common/back.gif
没怎么接触delphi 7只能支持一下 啦(*^__^*) 嘻嘻……

帖子沉了。。。。

comeheres 发表于 2013-8-21 10:23:47

只有当进入for循环,j 才会被赋值为0

第二个问题,那是系统注册的原因,看下系统属性里的注册到吧

沉思的牛 发表于 2013-8-21 11:18:26

comeheres 发表于 2013-8-21 10:23 static/image/common/back.gif
只有当进入for循环,j 才会被赋值为0

第二个问题,那是系统注册的原因,看下系统属性里的注册到吧

进到了for循环里面去了的,单步的时候都进去了

comeheres 发表于 2013-8-21 11:32:18

沉思的牛 发表于 2013-8-21 11:18 static/image/common/back.gif
进到了for循环里面去了的,单步的时候都进去了

你的i为0

i-1就是-1

For j:=0 to -1 do

j肯定不能赋值了

沉思的牛 发表于 2013-8-21 12:03:28

comeheres 发表于 2013-8-21 11:32 static/image/common/back.gif
你的i为0

i-1就是-1


谢谢{:5_108:}明白了
居然犯这种低级错误{:5_107:}
页: [1]
查看完整版本: 鱼C记事本发现的几个问题and交作业