最近老师要求我们模拟页面置换的先进先出,在进行页面置换的时候,我希望先对页面名称进行比较,一样的话,就没必要进行置换.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,试过也不行,也用过(<>),和另外一个函数,但是都没用,感觉好像没进行比较这一步....??? 请问大家这是怎么回事,多谢!!!!
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,试过也不行,也用过(<>),和另外一个函数,但是都没用,感觉好像没进行比较这一步....??? 请问大家这是怎么回事,多谢!!!!
解决方案 »
- 用delphi开发web services 时,如何返回数据集?
- 求 delphi进程间通讯例子,自定义消息传递或共享内存区!
- 第一次表白就被拒绝的哥们来接分
- 探讨一下,如何能用本地客户端来访问INTERNET服务器???
- 麻烦各位大哥推荐几本好的DELPHI(或者VC也行)网络编程(涉及讨论TCP协议)的书籍(如果是可以下载的电子书就更好喽,呵呵)..
- DevExpressBars5这个控件包是否有限制
- 如何動態設置添加DBGrid的Column???
- 刚学jBuilder的问题
- [求助]关于二进制文件格式
- 关于ADO的ExecSQL的问题
- 注入的问题
- 用DELPHI开发的Automation怎样在用regsvr32注册后,让IE认为是安全的?
//你照着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;