線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2137
推到 Plurk!
推到 Facebook!

有關傳陣列的問題?

答題得分者是:speedup
thomas0728
中階會員


發表:112
回覆:260
積分:89
註冊:2002-03-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-05-19 23:02:06 IP:61.219.xxx.xxx 未訂閱
var AData:OLEVariant; HDATA,DDATA:OLEVARIANT begin AData:=VarArrayCreate([0,1],varVariant); AData[0]:=HDATA; AData[1]:=DDATA; .... SocketConnection.AppServer.array_test(aDATA); end; procedure TTestServer.array_test(AData:OLEVariant); begin for I:=LOW(ADATA) to HIGH(AData) do //這行會出錯 AData[i]:='AAA'; ..... end; 如果愛情也有味覺 那麼 有沒有ㄧ種愛 微微泛酸 不太苦澀 有點甜密 嚐起來的滋味讓人想起幸福 Thomas Chiou
------
Thomas Chiou
hahalin
版主


發表:295
回覆:1698
積分:823
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-05-20 00:01:37 IP:218.170.xxx.xxx 未訂閱
    procedure TTestServer.array_test(AData:OLEVariant);
var v:variant;
begin    v:=vararrayof(aData);
for I:=VarArrayLowBound(V,1) to VarArrayHighBound(v,1) do //這行會出錯
V[i]:=''AAA'';
.....
end;    
thomas0728
中階會員


發表:112
回覆:260
積分:89
註冊:2002-03-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-05-21 10:28:33 IP:61.219.xxx.xxx 未訂閱
大大:不行呢 v:=vararrayof(aData); 這行根本編譯不過 因為他像只接受 variant 的型態,不接受 olevariant for I:=VarArrayLowBound(V,1) to VarArrayHighBound(v,1) do同樣的這行也過不了 如果愛情也有味覺 那麼 有沒有ㄧ種愛 微微泛酸 不太苦澀 有點甜密 嚐起來的滋味讓人想起幸福 Thomas Chiou
------
Thomas Chiou
jieshu
版主


發表:42
回覆:894
積分:745
註冊:2002-04-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-05-21 20:11:37 IP:203.204.xxx.xxx 未訂閱
引言: 大大:不行呢 v:=vararrayof(aData); 這行根本編譯不過 因為他像只接受 variant 的型態,不接受 olevariant
v := aData;
引言: for I:=VarArrayLowBound(V,1) to VarArrayHighBound(v,1) do同樣的這行也過不了
這行沒問題阿,編譯可過!
人生有夢,逐夢而行。 人若為善,福雖未至,禍已遠離。 人若為惡,禍雖未至,福已遠離。 http://www.coss.com.tw/jieshu/
------
人生有夢,逐夢而行
人若為善,福雖未至,禍已遠離
人若為惡,禍雖未至,福已遠離
http://www.taconet.com.tw/jieshu/
thomas0728
中階會員


發表:112
回覆:260
積分:89
註冊:2002-03-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-05-21 20:49:37 IP:61.219.xxx.xxx 未訂閱
jieshu 大大是用那一版的 delphi 竟可編譯的過    procedure TTestServer.array_test(AData:OLEVariant);                                  ^^^^^^^^^^^^^^^^ 是宣告成 olevariant 而  vararrayof 的型是      function VarArrayOf(const Values: array of Variant): Variant; 這樣怎會編譯的過,我的 delphi 是 7.0 不知大大的版本是一版      如果愛情也有味覺 那麼 有沒有ㄧ種愛 微微泛酸 不太苦澀 有點甜密 嚐起來的滋味讓人想起幸福
------
Thomas Chiou
speedup
資深會員


發表:19
回覆:259
積分:280
註冊:2003-07-04

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-05-22 09:47:05 IP:61.224.xxx.xxx 未訂閱
引言: var AData:OLEVariant; HDATA,DDATA:OLEVARIANT begin AData:=VarArrayCreate([0,1],varVariant); AData[0]:=HDATA; AData[1]:=DDATA; .... SocketConnection.AppServer.array_test(aDATA); end; procedure TTestServer.array_test(AData:OLEVariant); begin for I:=LOW(ADATA) to HIGH(AData) do //這行會出錯 AData[i]:='AAA'; ..... end;
Server端先試試直接轉型
 v:= Variant(aData);
 for I:=VarArrayLowBound(V,1) to VarArrayHighBound(v,1) do
若發生Runtime Error 請在client端用IDisp介面呼叫(因為D7在某些狀況下對latebinding的傳遞參數(含結構化OleVariant)會誤判 方法略述如下 在Client端
uses ...,XXXTestServer_TLB; //Server物件的Type Library 宣告檔
..
  //將  SocketConnection.AppServer.array_test(aDATA); 改成
  ITestServerDisp(SocketConnection.AppServer).array_test(aDATA);
   
混心雜欲 棄修身~唉
------
唉~
jieshu
版主


發表:42
回覆:894
積分:745
註冊:2002-04-15

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-05-22 13:25:13 IP:61.70.xxx.xxx 未訂閱
引言: jieshu 大大是用那一版的 delphi 竟可編譯的過 procedure TTestServer.array_test(AData:OLEVariant); ^^^^^^^^^^^^^^^^ 是宣告成 olevariant 而 vararrayof 的型是 function VarArrayOf(const Values: array of Variant): Variant; 這樣怎會編譯的過,我的 delphi 是 7.0 不知大大的版本是一版 < face="Verdana, Arial, Helvetica">
我並沒有講到VarArrayOf,怎麼會你跟我講VarArrayOf會編譯不過的問題
測試碼如下:
>
我是用 >    <><><>< src="http://www.coss.com.tw/jieshu/img/jsDesign.jpg">
人生有夢,逐夢而行。 人若為善,福雖未至,禍已遠離。 人若為惡,禍雖未至,福已遠離。 http://www.coss.com.tw/jieshu/
------
人生有夢,逐夢而行
人若為善,福雖未至,禍已遠離
人若為惡,禍雖未至,福已遠離
http://www.taconet.com.tw/jieshu/
thomas0728
中階會員


發表:112
回覆:260
積分:89
註冊:2002-03-12

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-05-24 05:43:09 IP:61.219.xxx.xxx 未訂閱
procedure TTestServer.array_test(AData:OLEVariant); var v : variant; I : Integer; begin v := AData; for I := VarArrayLowBound(V, 1) to VarArrayHighBound(v, 1) do 這樣是可以編譯的過的,是沒問題,但只考慮了 SERVER 端,如果 CLIENT 是傳二個二元素的陣列過來,伺服端是會誤判為只有一個元素的陣列 不信可以式試 如果愛情也有味覺 那麼 有沒有ㄧ種愛 微微泛酸 不太苦澀 有點甜密 嚐起來的滋味讓人想起幸福 Thomas Chiou
------
Thomas Chiou
jieshu
版主


發表:42
回覆:894
積分:745
註冊:2002-04-15

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-05-24 19:27:40 IP:203.204.xxx.xxx 未訂閱
引言: 這樣是可以編譯的過的,是沒問題,但只考慮了 SERVER 端,如果 CLIENT 是傳二個二元素的陣列過來,伺服端是會誤判為只有一個元素的陣列 不信可以式試
自己寫的Function當然知道參數如何,要怎麼傳和處理也要先規劃好,不然怎麼做都會有錯誤的,要判斷Variant是不是Array,可以用VarIsArray來判斷,至於你要做什麼,怎麼處理,應該只有你才知道吧!
人生有夢,逐夢而行。 人若為善,福雖未至,禍已遠離。 人若為惡,禍雖未至,福已遠離。 http://www.coss.com.tw/jieshu/
------
人生有夢,逐夢而行
人若為善,福雖未至,禍已遠離
人若為惡,禍雖未至,福已遠離
http://www.taconet.com.tw/jieshu/
系統時間:2024-05-03 6:21:29
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!