有關Array之一問 |
尚未結案
|
kelvin00929
一般會員 ![]() ![]() 發表:6 回覆:6 積分:2 註冊:2004-04-22 發送簡訊給我 |
請問各位大大,
我在BCB當中有import一外部OCX,
他其中有一method的傳回值為float 型態的array, 我試過的方式如下: float Array[10];
float *Data; Data=&Array[0]; *Data=Method[10];
//Method[10] is one method of OCX, 10 is number of array. 可是好像不行,Array[10]裡面的值好像並沒有接收到此Method所傳回來的值,
我用一行一行執行的方式發現,
Array[10]裡的值都沒有改變過,
而且Array[10]原始值很怪,EX:1.596844131845485E-44 請問我要如何去承接此Method所傳回來的Array呢?
是否可以用OleVariant呢(不清楚是否可用)?
如可以,可否指點迷津, 謝謝。
|
nickcai2002
一般會員 ![]() ![]() 發表:3 回覆:20 積分:24 註冊:2004-11-18 發送簡訊給我 |
|
kelvin00929
一般會員 ![]() ![]() 發表:6 回覆:6 積分:2 註冊:2004-04-22 發送簡訊給我 |
引言: 你宣告的陣列不夠大 float Array[10]; 只有0~9的空間, 如果一定要有Array[10]; 就宣告 float Array[11];nickcai2002您好, 上述所寫的code只是示意而已, 我的問題是在於 用何種方式去接收此Method所傳回來的Array呢? 因為此Method會傳來一陣列值, 但是我有試過讓此Method傳回一個值而已, 並用一float型態的物間去接收, 但還是接不起來, 如: float Array; //此時Array值可能為1.956265444524E-39 Array=Method[1]; ShowMessage(Array); //Array 還是為 1.956265444524E-39 |
hornacek
一般會員 ![]() ![]() 發表:29 回覆:76 積分:21 註冊:2004-02-02 發送簡訊給我 |
|
pwipwi
版主 ![]() ![]() ![]() ![]() ![]() 發表:68 回覆:629 積分:349 註冊:2004-04-08 發送簡訊給我 |
|
kelvin00929
一般會員 ![]() ![]() 發表:6 回覆:6 積分:2 註冊:2004-04-22 發送簡訊給我 |
引言: kelvin00929你好: 我記得Variant可以做到。另外印象中也有聽過dynamic STL(不過我不懂...) 另外,你沒提的OCX傳float array的資料型是什麼。是float*嗎?大部分我看到傳array都是用Variant。很少用Pointer就傳過去(BSTR不算的話...)。 COM寫法我比較熟一些,不過OCX就很少用到。如果對OCX的看法有誤,也煩請版上前輩們指正了。 |
nickcai2002
一般會員 ![]() ![]() 發表:3 回覆:20 積分:24 註冊:2004-11-18 發送簡訊給我 |
|
kelvin00929
一般會員 ![]() ![]() 發表:6 回覆:6 積分:2 註冊:2004-04-22 發送簡訊給我 |
|
pwipwi
版主 ![]() ![]() ![]() ![]() ![]() 發表:68 回覆:629 積分:349 註冊:2004-04-08 發送簡訊給我 |
|
kelvin00929
一般會員 ![]() ![]() 發表:6 回覆:6 積分:2 註冊:2004-04-22 發送簡訊給我 |
引言: 關於Variant..使用的目的是能傳各種型別的資料, 效率可能就沒法子令人滿意了。 然而,我想重點或許在OCX的Method型態... 如果這方面無法得知,可能就要問比較熟OCX的人了 話說回來,很少看到有人把library寫成OCX的... 有什麼特殊用處嗎?(還是我少見多怪?)可能是因為這個OCX,原廠希望可以同時供VB與C 去呼叫, 所以寫成OCX, 對了,原廠有提供VC 的code: //------\/--------VC code---- COleVariant waveform; waveform.Attach(dso.GetScaledWaveform("C1", // trace name 500, // numPoints 0); // transfer first array //-----/\---------------- 其中dso.GetScaledWaveform("C1", 500,0) 就是我說的Method,此Method會傳回1*500的一維陣列, 但我不太懂VC 的語法, waveform.Attach(),在VC 是否可接收陣列值? |
pwipwi
版主 ![]() ![]() ![]() ![]() ![]() 發表:68 回覆:629 積分:349 註冊:2004-04-08 發送簡訊給我 |
|
kelvin00929
一般會員 ![]() ![]() 發表:6 回覆:6 積分:2 註冊:2004-04-22 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |