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

關於function的使用

答題得分者是:shinjie
Angi
一般會員


發表:16
回覆:56
積分:14
註冊:2005-01-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-01-12 09:57:38 IP:211.20.xxx.xxx 未訂閱
1.請問function如何回傳陣列值,該如何宣告,如何傳 2.function中必須使用DBText...的東西把SQLQuery的資料讀出來,有沒有其他方法,可以不用DBText呢? 3.如果function可能需要用在很多地方,我該如何處理? 目前的做法因為2的原因,所以把function全寫在一個form裡,但不知這樣會不會導致系統速度變慢,有沒有更好的處理方式呢?
shinjie
資深會員


發表:12
回覆:275
積分:287
註冊:2003-03-19

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-01-12 10:11:33 IP:203.73.xxx.xxx 未訂閱
1.http://delphi.ktop.com.tw/topic.php?topic_Id=22259 2.可以自已給值Edit1.text:=SQLQuery.FieldByName('欄位名稱').AsString; 3.寫在一個PAS檔中,要用的時候再Use進來,速度跟放在那裡應該沒有影響,跟程式寫法才有影響
------
我將在茫茫人海中尋訪我唯一之靈魂伴侶。
得之;我幸。不得;我命。
Angi
一般會員


發表:16
回覆:56
積分:14
註冊:2005-01-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-01-13 09:25:19 IP:211.20.xxx.xxx 未訂閱
寫在一個PAS檔中,是指全部的function嗎?? 不管這個form是否需要的function全部叫進來,不會影響到速度嗎? 若不考慮程式寫法本身的問題...
shinjie
資深會員


發表:12
回覆:275
積分:287
註冊:2003-03-19

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-01-13 10:36:51 IP:203.73.xxx.xxx 未訂閱
寫在同一個PAS中,Compile時會將所有的Function放在Project的一個地方,當有很多Form用到同一個Function時,會去同一個記憶體位址讀取,反而會簡省Project的大小,但是如果在各個Form裡面宣告的話,反而會增加Project的大小。 如果一個PAS裡有很多(無限多)Function的話, 應該是會影響Compile的速度。 執行效能就不能確定會不會影響,這個要看Compiler的能力而言。 發表人 - shinjie 於 2005/01/13 10:39:22
------
我將在茫茫人海中尋訪我唯一之靈魂伴侶。
得之;我幸。不得;我命。
syc0121
一般會員


發表:6
回覆:12
積分:3
註冊:2003-01-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-01-14 17:26:32 IP:61.222.xxx.xxx 未訂閱
關於1.請問function如何回傳陣列值,該如何宣告,如何傳 試試看這是不是你要的 function TForm1.TEST(StrA,StrB,StrC:String):OleVariant; var tmpAry:OleVariant; begin tmpAry:=VarArrayCreate([0,2],varVariant); tmpAry[0]:=StrA; tmpAry[1]:=StrB; tmpAry[2]:=StrC; Result:=tmpAry; end;
Angi
一般會員


發表:16
回覆:56
積分:14
註冊:2005-01-12

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-01-18 17:11:26 IP:211.20.xxx.xxx 未訂閱
function TForm1.TEST(StrA,StrB,StrC:String):OleVariant; var tmpAry:OleVariant; begin tmpAry:=VarArrayCreate([0,2],varVariant); tmpAry[0]:=StrA; tmpAry[1]:=StrB; tmpAry[2]:=StrC; Result:=tmpAry; end; 我測試了一下..發現會出現error在 tmpAry:OleVariant; Illegal character in input file:' '[$A140] 這是什麼意思丫??
Angi
一般會員


發表:16
回覆:56
積分:14
註冊:2005-01-12

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-01-18 17:41:06 IP:211.20.xxx.xxx 未訂閱
影響Compile的速度 是指第一次run的時候才有影響嗎 一但做成exe檔,就不會再被影響了嗎?? 另外,為什麼我使用 SQLQuery.FieldByName('欄位名稱').AsString; 使用SQLQuery.下拉選單卻沒有FieldByName呢 不過,我在使用時,不會出現error 但是執行後卻會說找不到欄位 我計算資料筆數,卻又可以出現,不知道是什麼原因呢? 我看到SQLQuery.FieldValues['欄位名稱'],這是否和FieldByName是相同的呢? 然後,如果我的SQL傳回的結果是一個SUM的值,我該如何指定欄位名稱? 還是有另外的方法可以取得這個值??
Angi
一般會員


發表:16
回覆:56
積分:14
註冊:2005-01-12

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-01-18 17:52:42 IP:211.20.xxx.xxx 未訂閱
我知道SQLQuery.FieldValues['欄位名稱'] 為何會出現欄位找不到的情況了 因為我有使用DataSetProvider和ClientDataSet元件 所以在下語法時,必須寫成 ClientDataSet1.FieldValues['欄位名稱']; 這樣就可以了 SQLQuery.FieldByName('欄位名稱').AsString; 也同樣可以改為 ClientDataSet1.FieldByName('欄位名稱').AsString; 就行了 不過,還是不知如何取得SUM的欄位值
shinjie
資深會員


發表:12
回覆:275
積分:287
註冊:2003-03-19

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-01-19 07:59:46 IP:203.73.xxx.xxx 未訂閱
影響Compile的速度並不會影響run的速度 取得SUM的欄位值有兩種方法 第一種是寫在SQL裡面 SQL:Select sum(欄位名稱) as 要叫的別名 from 表格 第二種是寫在Loop裡面 在While not EOF裡面自已加種
------
我將在茫茫人海中尋訪我唯一之靈魂伴侶。
得之;我幸。不得;我命。
carstyc
資深會員


發表:16
回覆:254
積分:329
註冊:2003-07-18

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-01-19 22:39:37 IP:219.84.xxx.xxx 未訂閱
>>不過,還是不知如何取得SUM的欄位值 有兩種方式,一種在SQL COMMAND 裡面去對sum結果定一個欄位名稱 select FieldA,sum(FieldB) as Total from table group by FieldA 再以 ClientDataSet1.FieldByName('Total').AsString; 另一種是直接用 ClientDataSet1.Fields[2].AsString 去取得...
系統時間:2024-05-21 1:04:25
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!