PDA

View Full Version : سوال: تعریف آرایه در استراکچر



mahsara
چهارشنبه 08 دی 1389, 20:36 عصر
با سلام
من در وی بی مبتدی هستم بیشتر دلفی کار کردم و یه پروِ‍‍زه دلفی دارم که میخوام به وی بی تبدیل کنم.
یه استراکچر دارم که یکی از فیلدهاش یه ارایه هست. برای تعریف این ارایه و تعیین سایزش و بعد دسترسی بهش مشکل دارم. کلا تعاریفی که توی دلفی دارم ایناست که میخوام به وی بی تبدیل بشه.

type pos= Record
left : integer;
top : integer;
p : integer;
neib : array[1..4] of integer;
End;
var
یک ارایه دو بعدی بدون سایز <--- arrpos : array of array of pos;

یعنی مشکل در ارایه neib است.
تعریف که من در وی بی استفاده کردم این بود

Public Structure pos


Dim left As Integer

Dim top As Integer

Dim p As Integer
Public neib(3) AsInteger
End Structure






اما خطا میده که سایز ارایه نمیتونه تعریف بشه. وقتی سایزش برداشتم برای redim کردنش نمیدونم چه جوری بهش دسترسی داشته باشم.



بعد اومدم اینجوری نوشتم:



VBFixedArray(3)> Public neib() As integer>



اما موقع دسترسی به مقادیر داخل ارایه neib خطا دارم:



arrpos(1).neib(1) = 10



ممنون میشم اگر دوستان سریعتر کمکم کنند چون یکم عجله دارم.

omid-vbAuto
چهارشنبه 08 دی 1389, 20:51 عصر
با سلام
من در وی بی مبتدی هستم بیشتر دلفی کار کردم و یه پروِ‍‍زه دلفی دارم که میخوام به وی بی تبدیل کنم.
یه استراکچر دارم که یکی از فیلدهاش یه ارایه هست. برای تعریف این ارایه و تعیین سایزش و بعد دسترسی بهش مشکل دارم. کلا تعاریفی که توی دلفی دارم ایناست که میخوام به وی بی تبدیل بشه.

type pos= Record
left : integer;
top : integer;
p : integer;
neib : array[1..4] of integer;
End;
var
یک ارایه دو بعدی بدون سایز <--- arrpos : array of array of pos;

یعنی مشکل در ارایه neib است.
تعریف که من در وی بی استفاده کردم این بود

Public Structure pos


Dim left As Integer


Dim top As Integer

Dim p As Integer

Public neib(3) AsInteger
End Structure








اما خطا میده که سایز ارایه نمیتونه تعریف بشه. وقتی سایزش برداشتم برای redim کردنش نمیدونم چه جوری بهش دسترسی داشته باشم.



بعد اومدم اینجوری نوشتم:



VBFixedArray(3)> Public neib() As integer>



اما موقع دسترسی به مقادیر داخل ارایه neib خطا دارم:



arrpos(1).neib(1) = 10




ممنون میشم اگر دوستان سریعتر کمکم کنند چون یکم عجله دارم.




شما لازم نیست کدهای دلفیتونو به ما بگید!!!


فقط بفرمائید چه برنامه ای رو از VB.Net می خواهید تا کمکتون کنم.اوگی؟

Saman_12
چهارشنبه 08 دی 1389, 22:34 عصر
من نفهمیدم مشکل کجا هست خوب ReDim اش کنید :


Dim NewPos As New pos
ReDim NewPos.neib(2) 'ReDim neib() to neib(2)

For i As Integer = 0 To 2

NewPos.neib(i) = (2 * i) + i 'Set New Item
Next

For Each Num As Integer In NewPos.neib

MsgBox(Num) 'MassageBox.Show(num.Tostring())
Next

ReDim Preserve NewPos.neib(5) 'ReDim Preserve neib() to neib(5)

For i As Integer = 3 To 5 'Show All Int To neib

NewPos.neib(i) = (4 * i) + i 'Set New Item
Next

For Each Num As Integer In NewPos.neib 'Show All Int To neib

MsgBox(Num) 'MassageBox.Show(num.Tostring())
Next

reza_edu
چهارشنبه 08 دی 1389, 22:46 عصر
سلام من تو تجربه کاریم میدونم که تو ویبی نمیشه از آرایه تو استراکچر استفاده کرد (ممکنه من بلد نباشم دوستان ایراد نگیرن) برای همین از کلاس استفاده میکنم اینجور مواقع اول بگید که میخواید رکورد های ایجاد شده رو تو چه محیطی ذخیره کنید تو فایل یا دیتابیس تا شاید بتونم بیشتر کمک کنم البته راه هائی هم برای دور زدن این مشکل دارم که نمیدونم تا چه حد درسته انجامش ولی جواب دادن. اگه دوستان روش دیگه ای میدونن بگن من هم ممنون میشم.

pouyansaraf
پنج شنبه 09 دی 1389, 01:41 صبح
سلام
سوال تعریف آرایه در استراکچر کاملا مشخصه . نمی دونم چرا بعضی ها نمیگیرند تا کمکتون کنند :قهقهه:
در هر صورت با توجه به صحبت دوستمون که گفت ReDim (که هنوز نمیدونم چیه و باید برم دنبالش ببینم چیه) باعث شد یه چیزی پیدا کنم

اگر این Structure ما باشه


Structure CardValueStructure
Dim Value() As Integer
End Structure


از این طریق تونستم مقدار دهی کنم



Static CardValueArray(0) As CardValueStructure
ReDim Preserve CardValueArray(2)
ReDim CardValueArray(1).Value(1)
CardValueArray(1).Value(0) = 5


و با Msgbox مقدار رو درست نشون داد


MsgBox(CardValueArray(1).Value(0))