我的字串比較函式沒起作用???? delphi / windows sdk/api
最近老師要求我們模擬頁面置換的先進先出,在進行頁面置換的時候,我希望先對頁面名稱進行比較,一樣的話,就沒必要進行置換.
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的改 呵呵,經過你們倆的指導,我學到了東西,謝謝
字串比較函式
stricmp wcsicmp mbsicmp stricmp l wcsicmp l mbsicmp l 執行不區分大小寫的字串比較 語法 int stricmp const char string1,const char string2 int wcsicmp const wchar t str...
Zuul路由沒起作用(僅是我個人遇到的問題)
register register服務配置 不向後端服務傳遞的敏感頭資訊 path register 制定好path和serviceid,所有以path開頭的請求都會被路由到對應的服務。如下面 hiapi 被路由到service hi對應的服務,ribbonapi 被路由到service ribbo...
字串 雜湊 比較 各種字串Hash函式比較
常用的字串hash函式還有elfhash,aphash等等,都是十分簡單有效的方法。這些函式使用位運算使得每乙個字元都對最後的函式值產生影響。另外還有以md5和sha1為代表的雜湊函式,這些函式幾乎不可能找到碰撞。常用字串雜湊函式有bkdrhash,aphash,djbhash,jshash,rsh...