PDA

View Full Version : فراخوانی تابع با ورودی آرایه از VB6



MEhdi Sobhani
چهارشنبه 17 شهریور 1389, 21:46 عصر
سلام
یه تابع نوشتم در VB6 داخل یک اکتیوایکس که یه آرایه دابل رو به عنوان ورودی میگیره و اون رو پر میکنه .
این کد تابع در اکتیوایکس هست و اکتیوایکس هم ضمیمه شده .
لطفا راهنمایی کنید چطور میتونم اون رو در سی شارپ فراخوانی کنم ؟

کد وی بی :



Public Sub GetDoubleArray(Data() As Double, ByVal fiileName$, ByVal Seekm&)
Open FileName$ For Binary As 1
Get 1, Seekm&, Datas
Close 1
End Sub

فایل اکتیوایکس رو هم ضمیمه کردم .
اینجا در ورودی تابع آرایه دابل هست اما در سی شارپ آرایه دابل رو قبول نمیکنه و برای نوع ورودی فقط مینویسه

ref Array Data

این هم کد نمونه در سی شارپ که خطا میده



double[] MyDoubles = new double[100];
MyOcx.GetDoubleArray( MyDoubles, "C:\MyData.dat", 1);


با تشکر فراوان
لینک فایل : اینجا (http://www.4shared.com/file/A5pxpLBo/Project1.html)

cheshm6k
پنج شنبه 18 شهریور 1389, 01:39 صبح
سلام



double[] MyDoubles = new double[100];
MyOcx.GetDoubleArray( MyDoubles, "C:\MyData.dat", 1);

با این تغییرات ارور برطرف شد


Array a = new double[100];
axUserControl1.GetDoubleArray(ref a, "C:\\1.dat", 1);
اما ........... امتخان کن ببین جواب مد نظرت رو میده.

MEhdi Sobhani
پنج شنبه 18 شهریور 1389, 02:12 صبح
سلام
با این تغییرات ارور برطرف شد

Array a = new double[100];
axUserControl1.GetDoubleArray(ref a, "C:\\1.dat", 1);اما ........... امتخان کن ببین جواب مد نظرت رو میده.
آقا دستت درد نکنه
خیلی عالی بود
دقیقا همون چیزی بود که لازم داشتم .
بازم ممنونم .

MEhdi Sobhani
پنج شنبه 18 شهریور 1389, 02:19 صبح
بازم ممنونم
یه سوال دیگه هم داشتم ممنون میشم اگر راهنمایی کنی .
اگر اون تابع رو اینطوری بنویسم



Public Sub GetVariant(Data As Variant, ByVal FileName$, ByVal Seekm&)
Open FileName$ For Binary As 1
Get 1, Seekm&, Data
Close 1
End Sub

بعد چجوری میتونم تو سی شارپ ازش استفاده کنم .
این (http://www.4shared.com/file/61ruhXAm/GetVariant.html)هم نمونه اکتیوایکسش هست .
ممنون .

cheshm6k
پنج شنبه 18 شهریور 1389, 02:45 صبح
چون Variant نوعش مشخص نیست و میتونه هر چیزی باشه میشه object :

اینو امتحان کن :

object obj = new object();
axGetVariant1.GetVariant(ref obj, "C:\\1.dat", 1);