VFP 愛用者社區 首頁 VFP 愛用者社區
本討論區為 Visual Foxpro 愛用者經驗交流的地方, 請多多利用"搜尋"的功能, 先查看看有無前例可循, 如果還有不懂的再發問. 部份主題有附加檔案, 須先註冊成為社區居民才可以下載.
 
 常見問題常見問題   搜尋搜尋   會員列表會員列表   會員群組會員群組   會員註冊會員註冊 
 個人資料個人資料   登入檢查您的私人訊息登入檢查您的私人訊息   登入登入

下面一段代码,里面逻辑变量t,在各处的作用?特别是!t表示当时的逻

 
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區
上一篇主題 :: 下一篇主題  
發表人 內容
480615



註冊時間: 2008-04-11
文章: 93


第 1 樓

發表發表於: 星期三 十一月 02, 2011 4:00 pm    文章主題: 下面一段代码,里面逻辑变量t,在各处的作用?特别是!t表示当时的逻 引言回覆

在文本框中输入的内容添加到列表框中的一段代码, 判断文本框输入的内容列表框有无,若没有添加到列表框中。里面逻辑变量t,看不明白。请指教。
LPARAMETERS nKeyCode, nShIFtAltCtrl
IF nKeyCOde=13 &&如果用户按了回车键
*判断输入项在列表中是否存在
t=.F. FOR i=1 TO This.Parent.List1.ListCount
IF ALLTRIM(This.Value)==ALLTRIM(This.Parent.List1.List(i))
t=.T. &&表示已存在
EXIT
ENDIF
ENDFOR
IF !t This.Parent.List1.AddItem(This.Value)
ELSE
MESSAGEBOX("该项已存在!请重新输入!")
ENDIF
This.Value="" &&清空文本框
Thisform.Refresh()
ENDIF
里面有一个逻辑变量t,,既然判断已存了为什么还要再来一个if !t ,这里的!t等于什么?与上面的t=.T.有关还是与t=.F.有关?
回頂端
檢視會員個人資料 發送私人訊息
richshih



註冊時間: 2007-10-11
文章: 153


第 2 樓

發表發表於: 星期三 十一月 02, 2011 6:18 pm    文章主題: 引言回覆

t=.F. &&給予開始值
假如已存在 則 t=.T. ,否則 T 還是.F.
IF !t &&假如不存在則執行以下碼(T<>.T.)
This.Parent.List1.AddItem(This.Value)
回頂端
檢視會員個人資料 發送私人訊息
LiuRambo



註冊時間: 2007-11-27
文章: 481


第 3 樓

發表發表於: 星期三 十一月 02, 2011 7:49 pm    文章主題: 引言回覆

這是很平常的技巧
t可以看成是一個旗標值
t= .F. 在使用前先設定成.f.
然後開始查找
如果有符合條件的話 就t= .T.

!t是故意反值去看This.Parent.List1.AddItem(This.Value)是否新增成功

=================
IF !t This.Parent.List1.AddItem(This.Value)
ELSE
MESSAGEBOX("该项已存在!请重新输入!")
ENDIF
=================
以這段來說 換個笨一點的方法就變成:

IF !t &&表示沒找到
IF This.Parent.List1.AddItem(This.Value)
MESSAGEBOX("新增成功")
ELSE
MESSAGEBOX("该项已存在!请重新输入!")
ENDIF
ENDIF
回頂端
檢視會員個人資料 發送私人訊息 MSN Messenger
480615



註冊時間: 2008-04-11
文章: 93


第 4 樓

發表發表於: 星期三 十一月 02, 2011 8:00 pm    文章主題: 引言回覆

谢了,故意弄得如此绕口,直接来一个t=.f.不是挺简单。
回頂端
檢視會員個人資料 發送私人訊息
480615



註冊時間: 2008-04-11
文章: 93


第 5 樓

發表發表於: 星期三 十一月 02, 2011 10:55 pm    文章主題: 引言回覆

!t它与程序一开始t=.f.有关呼?

如有关的话 !t 就是t<>F.,变成t=.T.?

如果无关 哪t的初值是什么? !t 中的 t 到底是什么值?
回頂端
檢視會員個人資料 發送私人訊息
levi



註冊時間: 2011-11-01
文章: 1


第 6 樓

發表發表於: 星期四 十一月 03, 2011 4:23 pm    文章主題: 引言回覆

楼上几位说得很明白,顶一下
回頂端
檢視會員個人資料 發送私人訊息
LiuRambo



註冊時間: 2007-11-27
文章: 481


第 7 樓

發表發表於: 星期四 十一月 03, 2011 8:00 pm    文章主題: 引言回覆

代碼:
IF !t This.Parent.List1.AddItem(This.Value)

其實這行寫的蠻精簡的
我還真沒這麼用過

其實以結果來分析蠻簡單的

資料中已經有重複過的話
t一定是.T.
而This.Parent.List1.AddItem(This.Value)一定會得到.F.

所以  !t     This.Parent.List1.AddItem(This.Value)
    ^^^   ^^^^^^^^^^^^^^^^^^^
    .F.     .F.
不就是負負得正了嗎
回頂端
檢視會員個人資料 發送私人訊息 MSN Messenger
從之前的文章開始顯示:   
發表新主題   回覆主題    VFP 愛用者社區 首頁 -> VFP 討論區 所有的時間均為 台北時間 (GMT + 8 小時)
1頁(共1頁)

 
前往:  
無法 在這個版面發表文章
無法 在這個版面回覆文章
無法 在這個版面編輯文章
無法 在這個版面刪除文章
無法 在這個版面進行投票
無法 在這個版面附加檔案
無法 在這個版面下載檔案


Powered by phpBB © 2001, 2005 phpBB Group
正體中文語系由 phpbb-tw 維護製作