delphi2007 教程

delphi2007 教程

首页 新随笔 联系 聚合 管理
  1013 Posts :: 0 Stories :: 28 Comments :: 0 Trackbacks
我的字符串比较函数没起作用???? Delphi / Windows SDK/API
http://www.delphi2007.net/DelphiBase/html/delphi_20061205175922278.html
最近老师要求我们模拟页面置换的先进先出,在进行页面置换的时候,我希望先对页面名称进行比较,一样的话,就没必要进行置换.  
   
  procedure   TForm1.Button3Click(Sender:   TObject);  
      var   h,m:integer;   flag:boolean;  
  begin  
   
            flag:=true;  
            for   h:=1   to   listbox1.ItemIndex   do  
            //   h作为新进页面与已有页面的比较的控制循环变量  
              begin  
                    if     sametext(edit2.Text,listbox1.Items[h])then  
                              begin  
                              flag:=false;   //   物理块中存在与新进页面一样的页面  
                              end  
                    else  
                              begin  
                              flag:=true;//新进页面在物理块中没有  
                                end;  
                end;  
          if   flag=false   then  
                  begin  
                  showmessage('页面已存在,不需要置换');  
                  edit2.Clear;  
                  edit2.SetFocus;  
                  end  
        else  
                  begin           //根据fifo算法   进行替换  
                  m:=i   mod   strtoint(edit1.Text);  
                  listbox1.Items[m]:=edit2.Text;  
                  edit2.Clear;  
                  edit2.SetFocus;  
                  i:=i+1;  
                  end;  
   
   
  end;  
   
  但是无论我输入什么变量,他会进行置换,不管是不是存在相同的页面,然而我也怀疑是sametext相同的话,返回的值是false,试过也不行,也用过(<>),和另外一个函数,但是都没用,感觉好像没进行比较这一步....???     请问大家这是怎么回事,多谢!!!!

//你的代码风格太差,难道你们老师就没说过你?  
  //你照着VCL里的代码风格编写  
  //这个问题关键是在循环中赋值又没有退出循环,那当然flag值就是最后一条判断出来的值  
  //参考如下代码:  
   
      flag   :=   True;  
      for   h   :=   0   to   Listbox1.ItemIndex   do  
      //   h作为新进页面与已有页面的比较的控制循环变量  
      begin  
          if   SameText(Edit2.Text,   Listbox1.Items[h])then  
          begin  
              flag   :=   False;   //   物理块中存在与新进页面一样的页面  
              Break;   //   <<<<<<<<<<<<<<<<<退出循环  
          end;  
      end;  
 

for   h:=1   to   listbox1.ItemIndex   do    
   
  -----------------------------------  
   
  你的问题是程序没有执行h作为新进页面与已有页面的比较的控制循环变量,而Flag的初始值为True,为什么没有执行呢,你把循环按下面改一下就可以了.  
   
  for   h:=0   to   pred(listbox1.Items.count)   do

谢谢你们   照你们的改后,程序可以达到我预期的效果了   zswang   :关于代码风格的问题,我以后会注意的   你的代码很精简,从中我也看出了我的问题.但是在循环控制的那个部分也要照sanmaotuo的改       呵呵,经过你们俩的指导,我学到了东西,谢谢

posted on 2009-04-22 10:44 delphi2007 阅读(149) 评论(0)  编辑 收藏 引用
只有注册用户登录后才能发表评论。