全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2505
推到 Plurk!
推到 Facebook!

請問字串'k=1 and k<5'要在程式的if去執行要如何來寫

答題得分者是:jow
17kobe
初階會員


發表:86
回覆:73
積分:31
註冊:2007-07-30

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-11-04 02:09:14 IP:61.230.xxx.xxx 訂閱
我的想法是
var
s: string

s := 'k=1 and k<5';

if s then
begin
...
end;

但是這樣好像不行。
請問我的s要變成什麼格式才形,因為我不知道要搜尋什麼主題,請各位幫忙囉
jow
尊榮會員


發表:66
回覆:751
積分:1253
註冊:2002-03-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-11-04 02:22:00 IP:123.193.xxx.xxx 訂閱
完全錯誤的想法!!!

(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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-11-04 14:58:55 IP:61.64.xxx.xxx 訂閱
這文章應該是新手文章吧

'k=1 and k<5' 這 .. 種 .. 邏輯 ... 也只有新手辦得到!

===================引 用 17kobe 文 章===================
我的想法是
var
s: string

s := 'k=1 and k<5';

if s then
begin
...
end;

但是這樣好像不行。
請問我的s要變成什麼格式才形,因為我不知道要搜尋什麼主題,請各位幫忙囉
system72
中階會員


發表:15
回覆:114
積分:55
註冊:2005-08-17

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-11-04 16:59:41 IP:219.80.xxx.xxx 訂閱

var
s: string
s := 'k=1 and k<5';
if s then


這..

入門課程的 程式語言部分,第一二章都會先講 "資料型態" 的.

大概是 翹課 翹太兇了, 建議看一下書的講解 與範例程式,應該就會懂.

(下次不要翹課了,不然很難銜接的)

尤其指標之類,沒上課光看書,不好看懂..



===================引 用 syntax 文 章===================
這文章應該是新手文章吧

====
eaglewolf
資深會員


發表:4
回覆:268
積分:429
註冊:2006-07-06

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-11-05 08:59:49 IP:211.75.xxx.xxx 訂閱
另一種想法
要判斷字串的內容是否為 '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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-11-05 10:24:32 IP:210.68.xxx.xxx 訂閱
我當然知道正確的寫法,只不過想做讓使用者輸入這個字串,然後在程式在轉換做判斷
在python就有一個通用的類型可以宣告,只不過我不知道delphi要轉成什麼類型,程式能真正判斷我所要判斷的。
使用者是輸入'k=1 and k<5'的字串就好了喔
編輯記錄
17kobe 重新編輯於 2007-11-05 15:01:31, 註解 無‧
syntax
尊榮會員


發表:26
回覆:1139
積分:1258
註冊:2002-04-23

發送簡訊給我
#7 引用回覆 回覆 發表時間:2007-11-06 01:06:09 IP:61.64.xxx.xxx 訂閱
看來你要的是 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

發送簡訊給我
#8 引用回覆 回覆 發表時間:2007-11-07 10:20:16 IP:220.132.xxx.xxx 訂閱
我的程式中有一個Tmemo給使用輸入判斷式用
然後有下列的按鈕,包括變數(會自動產生) ( ) - * / and or xor = <= >= > < <>,可以按按鈕然後輸入公式
,最後的公式可能是'k=1 and k<5'
而程碼中就可以
if 使用者的公式 then
do something;

我同學是說用ASCII試試看,還在找文章中。
不然字串再去分析也是蠻累的,若沒有好方法,這也是最後的方式了。
jow
尊榮會員


發表:66
回覆:751
積分:1253
註冊:2002-03-13

發送簡訊給我
#9 引用回覆 回覆 發表時間:2007-11-07 11:41:44 IP:210.66.xxx.xxx 訂閱
先不要管邏輯運算 (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試試看,還在找文章中。
不然字串再去分析也是蠻累的,若沒有好方法,這也是最後的方式了。
編輯記錄
jow 重新編輯於 2007-11-07 11:42:44, 註解 無‧
jow 重新編輯於 2007-11-07 14:48:43, 註解 無‧
17kobe
初階會員


發表:86
回覆:73
積分:31
註冊:2007-07-30

發送簡訊給我
#10 引用回覆 回覆 發表時間:2007-11-07 18:05:33 IP:210.68.xxx.xxx 訂閱
你的提議很好,如果我還是學生我就再去看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

發送簡訊給我
#11 引用回覆 回覆 發表時間:2007-11-11 19:37:43 IP:219.86.xxx.xxx 訂閱

原來是這樣,你可以收尋 Script 這個關鍵字,

應該可以找到滿多元件組 跟文章的.





===================引 用 17kobe 文 章===================
我當然知道正確的寫法,只不過想做讓使用者輸入這個字串,然後在程式在轉換做判斷
在python就有一個通用的類型可以宣告,只不過我不知道delphi要轉成什麼類型,程式能真正判斷我所要判斷的。
使用者是輸入'k=1 and k<5'的字串就好了喔
編輯記錄
system72 重新編輯於 2007-11-11 19:38:27, 註解 無‧
nod32
初階會員


發表:3
回覆:29
積分:31
註冊:2007-05-21

發送簡訊給我
#12 引用回覆 回覆 發表時間:2007-11-13 16:41:34 IP:124.254.xxx.xxx 訂閱
在初学者看似简单的问题,要实现起来其实是比较复杂的。简单的说,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

發送簡訊給我
#13 引用回覆 回覆 發表時間:2007-11-14 17:09:11 IP:210.68.xxx.xxx 訂閱
說得蠻好的
簡單的範例也可以延伸很多,我想如果控件不能用的話,就先從簡單的寫法來寫吧。
我很早以前也是有寫過,但是覺得遞迴跟if寫太多,覺得把問題用得很複雜。
jow
尊榮會員


發表:66
回覆:751
積分:1253
註冊:2002-03-13

發送簡訊給我
#14 引用回覆 回覆 發表時間:2007-11-16 13:49:42 IP:210.66.xxx.xxx 訂閱
我之前就建議過了

http://delphi.ktop.com.tw/board.php?cid=30&fid=1498&tid=91116#9

先做一下流程的研究吧,

嗯, 可以先寫個 '1 1=' 的運算

===================引 用 17kobe 文 章===================

說得蠻好的
簡單的範例也可以延伸很多,我想如果控件不能用的話,就先從簡單的寫法來寫吧。
我很早以前也是有寫過,但是覺得遞迴跟if寫太多,覺得把問題用得很複雜。
系統時間:2024-04-26 14:36:29
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!