有關傳陣列的問題? |
答題得分者是:speedup
|
thomas0728
中階會員 發表:112 回覆:260 積分:89 註冊:2002-03-12 發送簡訊給我 |
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 發送簡訊給我 |
|||
thomas0728
中階會員 發表:112 回覆:260 積分:89 註冊:2002-03-12 發送簡訊給我 |
|||
jieshu
版主 發表:42 回覆:894 積分:745 註冊:2002-04-15 發送簡訊給我 |
引言: 大大:不行呢 v:=vararrayof(aData); 這行根本編譯不過 因為他像只接受 variant 的型態,不接受 olevariantv := aData; 引言: for I:=VarArrayLowBound(V,1) to VarArrayHighBound(v,1) do同樣的這行也過不了這行沒問題阿,編譯可過!
------
人生有夢,逐夢而行 人若為善,福雖未至,禍已遠離 人若為惡,禍雖未至,福已遠離 http://www.taconet.com.tw/jieshu/ |
||
thomas0728
中階會員 發表:112 回覆:260 積分:89 註冊:2002-03-12 發送簡訊給我 |
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 發送簡訊給我 |
引言: 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 發送簡訊給我 |
引言: 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/ |
引言: 這樣是可以編譯的過的,是沒問題,但只考慮了 SERVER 端,如果 CLIENT 是傳二個二元素的陣列過來,伺服端是會誤判為只有一個元素的陣列 不信可以式試自己寫的Function當然知道參數如何,要怎麼傳和處理也要先規劃好,不然怎麼做都會有錯誤的,要判斷Variant是不是Array,可以用VarIsArray來判斷,至於你要做什麼,怎麼處理,應該只有你才知道吧!
人生有夢,逐夢而行。 人若為善,福雖未至,禍已遠離。 人若為惡,禍雖未至,福已遠離。 http://www.coss.com.tw/jieshu/ |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |