請問字串'k=1 and k<5'要在程式的if去執行要如何來寫 |
答題得分者是:jow
|
17kobe
初階會員 發表:86 回覆:73 積分:31 註冊:2007-07-30 發送簡訊給我 |
|
jow
尊榮會員 發表:66 回覆:751 積分:1253 註冊:2002-03-13 發送簡訊給我 |
完全錯誤的想法!!!
(1)if s then, 其中 s 必須是一個 Boolean 值. (2)判斷內容 k=1, 則 k 必定小於 5. 所以依你的程式碼來看, 應該是要寫成: var s: Boolean; begin s := k = 1; if s then begin ... end; end; ===================引 用 17kobe 文 章=================== 我的想法是 var s: string s := 'k=1 and k<5'; if s then begin ... end; 但是這樣好像不行。 請問我的s要變成什麼格式才形,因為我不知道要搜尋什麼主題,請各位幫忙囉 |
syntax
尊榮會員 發表:26 回覆:1139 積分:1258 註冊:2002-04-23 發送簡訊給我 |
|
system72
中階會員 發表:15 回覆:114 積分:55 註冊:2005-08-17 發送簡訊給我 |
|
eaglewolf
資深會員 發表:4 回覆:268 積分:429 註冊:2006-07-06 發送簡訊給我 |
另一種想法
要判斷字串的內容是否為 'k=1 and k<5' [code delphi] var s:string; s:='k=1 and k<5'; if s='k=1 and k<5' then begin ShowMessage('字串相等'); end else begin ShowMessage('字串不相等'); end; [/code] ===================引 用 17kobe 文 章=================== 我的想法是 var s: string s := 'k=1 and k<5'; if s then begin ... end; 但是這樣好像不行。 請問我的s要變成什麼格式才形,因為我不知道要搜尋什麼主題,請各位幫忙囉
------
先查HELP 再查GOOGLE 最後才發問 沒人有義務替你解答問題 在標題或文章中標明很急 並不會增加網友回答速度 Developing Tool: 1.Delphi 6 2.Visual Studio 2005 3.Visual Studio 2008 DBMS: MS-SQL |
17kobe
初階會員 發表:86 回覆:73 積分:31 註冊:2007-07-30 發送簡訊給我 |
|
syntax
尊榮會員 發表:26 回覆:1139 積分:1258 註冊:2002-04-23 發送簡訊給我 |
看來你要的是 Parser
不過既然是這樣,不知道你的企圖與程式的功用,誰也幫不了你 parser 的範圍太廣了 不過,簡單的方向,就是你必須自己處理「所有」字串的比對 這...累喔! ===================引 用 eaglewolf 文 章=================== 另一種想法 要判斷字串的內容是否為 'k=1 and k<5' [code delphi] var s:string; s:='k=1 and k<5'; if s='k=1 and k<5' then begin ShowMessage('字串相等'); end else begin ShowMessage('字串不相等'); end; [/code] ===================引 用 17kobe 文 章=================== 我的想法是 var s: string s := 'k=1 and k<5'; if s then begin ... end; 但是這樣好像不行。 請問我的s要變成什麼格式才形,因為我不知道要搜尋什麼主題,請各位幫忙囉 ===================引 用 17kobe 文 章=================== 我當然知道正確的寫法,只不過想做讓使用者輸入這個字串,然後在程式在轉換做判斷 在python就有一個通用的類型可以宣告,只不過我不知道delphi要轉成什麼類型,程式能真正判斷我所要判斷的。 使用者是輸入'k=1 and k<5'的字串就好了喔 |
17kobe
初階會員 發表:86 回覆:73 積分:31 註冊:2007-07-30 發送簡訊給我 |
|
jow
尊榮會員 發表:66 回覆:751 積分:1253 註冊:2002-03-13 發送簡訊給我 |
先不要管邏輯運算 (and or xor = <= >= > < <>)
是不是可以只做數值運算( ( ) - * / ), 我想光是 作業研究就可以學到不少東西了 你可以試試解答以下相關提問: 用堆疊寫計算程式的問題?前置轉後置再轉成結果 http://delphi.ktop.com.tw/board.php?cid=168&fid=1499&tid=91013 ^_^'' ===================引 用 17kobe 文 章=================== 我的程式中有一個Tmemo給使用輸入判斷式用 然後有下列的按鈕,包括變數(會自動產生) ( ) - * / and or xor = <= >= > < <>,可以按按鈕然後輸入公式 ,最後的公式可能是'k=1 and k<5' 而程碼中就可以 if 使用者的公式 then do something; 我同學是說用ASCII試試看,還在找文章中。 不然字串再去分析也是蠻累的,若沒有好方法,這也是最後的方式了。 |
17kobe
初階會員 發表:86 回覆:73 積分:31 註冊:2007-07-30 發送簡訊給我 |
你的提議很好,如果我還是學生我就再去看c++,呵
我有找到TBCParser 先來用用 http://www.bestcode.com/html/tbcparser.html Expression.Parser 運算 表達式分析(下面這個不會用) http://www.2ccc.com/article.asp?articleid=2057 很偷懶的人^^ |
system72
中階會員 發表:15 回覆:114 積分:55 註冊:2005-08-17 發送簡訊給我 |
|
nod32
初階會員 發表:3 回覆:29 積分:31 註冊:2007-05-21 發送簡訊給我 |
在初学者看似简单的问题,要实现起来其实是比较复杂的。简单的说,17kobe首选要换一种思想来考虑这个问题,要想计算用户输入的不规则字符串这个工作,其实是一个脚本解释器,即使你完全重写一个Delphi的编译器,s里的脚本运行等级也没办法真正完全的访问你编写的程序空间。
回到你的问题: 在你有这个想法前,你首先就是要定义一下,S里的语法,如果真的很简单,只是两种条件而已,那我想你就不要费劲了。把你的代码改成: var p1,p2 .... if (k=p1) and (k 其中P1与P2让用户输入,这是最简单的办法,如果你希望更复杂更通用一些,那你的工作量与刚才所想的就完全不是一个等级了,你至少需要定义,你的脚本可以做哪些工作,比如:“比较运算“”加法“减法”等等,然后要做的事,定义这些运算符,比如“="是比较运算符,在解释的时候,遇到"="号时,你首先要把=号两边的字符读出来,转换成Delphi里的对应类型,然后运算,得出结果,然后是递归、替换、计算.....。 很久以前我在为就职的公司开发过一个具有脚本解释能力的应用程序,可以说相当复杂。因此,我建议你首先是考虑你的应用是否真的需要这样。如果真的需要如此,那我上面其实是给了你一些思路,如果能找到开源的项目做参考就更好了。 ===================引 用 17kobe 文 章=================== 我的想法是 var s: string s := 'k=1 and k<5'; if s then begin ... end; 但是這樣好像不行。 請問我的s要變成什麼格式才形,因為我不知道要搜尋什麼主題,請各位幫忙囉 |
17kobe
初階會員 發表:86 回覆:73 積分:31 註冊:2007-07-30 發送簡訊給我 |
|
jow
尊榮會員 發表:66 回覆:751 積分:1253 註冊:2002-03-13 發送簡訊給我 |
我之前就建議過了
http://delphi.ktop.com.tw/board.php?cid=30&fid=1498&tid=91116#9 先做一下流程的研究吧, 嗯, 可以先寫個 '1 1=' 的運算 ===================引 用 17kobe 文 章=================== 說得蠻好的 簡單的範例也可以延伸很多,我想如果控件不能用的話,就先從簡單的寫法來寫吧。 我很早以前也是有寫過,但是覺得遞迴跟if寫太多,覺得把問題用得很複雜。 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |