View Full Version : آرایه ها در دلفی
ghgh-moghadam
دوشنبه 27 فروردین 1386, 16:42 عصر
سلام. من میخواهم یک آرایه 2 بعدی 2048×2048 از نوع بایت تعریف کرده و آن را پر نمایم ولی برنامه خطا میگیرد. تعریف من به صورت زیر است .
var
a: Array [1..2048,1..2048] of byte;
b1: byte;
.
.
.
a[1,1]:= b1;
لطفا راهنمایی کنید. با تشکر
hossein taghi zadeh
دوشنبه 27 فروردین 1386, 17:43 عصر
بیشتر توضیح دهید.
در تعریف آرایه و مقداردهی آن هیچ خطایی دیده نمیشود.
SYNDROME
دوشنبه 27 فروردین 1386, 21:47 عصر
با سلام
به شکل زیر تعریف کن
Type
TFormArray = Array[1..5,1..5] of String;
Var
FormCaption : TStringArray;
ghabil
دوشنبه 27 فروردین 1386, 22:35 عصر
سلام. من میخواهم یک آرایه 2 بعدی 2048×2048
var
a: Array [1..2048,1..2048] of byte;
چه خبره مگه !!! یعنی میخوای آرایت تقریبا 4000000 حونه داشته باشه؟!!!! خب معلومه Stack پر میشه ، بگو دقیقا میخوای چی کار کنی ؟ اگر واقعا هم نیاز به همیچن حافظه ای داری حداقل آرایت رو داینامیکی تعریف کن.
اما اگه دیگه هیچ راهی نداری و حتما باید این کار رو بکنی که بنظر من باید تجدید نظر کنی ، حداقل Array رو گلوبال بگیر که تو Stack نباشه ، یعنی اونجایی که نوشته Form1 : Tform زیر اون تعریفش کن مثلا
با سلام
به شکل زیر تعریف کن
دقیقا چه ربطی داشت ؟!!
SYNDROME
دوشنبه 27 فروردین 1386, 23:33 عصر
با سلام
یک اشتباه لوپی بود.
Type
A= Array[1..5,1..5] of String;
Var
B: A;
باز هم شرمنده
arshia_
سه شنبه 28 فروردین 1386, 11:22 صبح
حق با دوستمون است
اگر قصد تعریف آرایه ای به این بزرگی رو دارید نباید به صورت استاتیک تعریف کنید
به نظرم بهتره در مورد کار برنامه توضیح بدین شاید راه بهتری هم وجود داشته باشه
این آرایه رو دقیقا برای چه کاری لازم داری؟
ghgh-moghadam
سه شنبه 28 فروردین 1386, 16:28 عصر
من یک تصویر خام دارم که اطلاعات هر نقطه از آن به صورت بایت تعریف شده و باید تک تک نقاط را از فایل خام خوانده و تصویر را نمایش دهم و همچنین کارهایی دیگری روس تصویر انجام دهم سایز تصویر 2048×2048 است. و میخواهم نقاط را در ماتریس ریخته و سپس کارهای لازم را بروی آن انجام داده و نمایش دهم. راه حل بهتری دارید؟
dkhatibi
سه شنبه 28 فروردین 1386, 19:36 عصر
شما که در یک لحظه نمی خواهید با کل تصویر کار کنید. تکه تکه اونو انتخاب کنبد. شاید فقط لازم باشه با یک پیکسل و یک حلقه کار کنید نه یک آرایه.
ghabil
سه شنبه 28 فروردین 1386, 20:19 عصر
شما که در یک لحظه نمی خواهید با کل تصویر کار کنید. تکه تکه اونو انتخاب کنبد. شاید فقط لازم باشه با یک پیکسل و یک حلقه کار کنید نه یک آرایه.
اونوقت بیتهایی که تغییر داده رو کجا نگه داره؟!!
من یک تصویر خام دارم که اطلاعات هر نقطه از آن به صورت بایت تعریف شده و باید تک تک نقاط را از فایل خام خوانده و تصویر را نمایش دهم و همچنین کارهایی دیگری روس تصویر انجام دهم سایز تصویر 2048×2048 است. و میخواهم نقاط را در ماتریس ریخته و سپس کارهای لازم را بروی آن انجام داده و نمایش دهم. راه حل بهتری دارید؟
از کلاس TBitmap استفاده کن بجای درست کردن آرایه با استفاده از Bitmap.Canvas.Pixel دقیقا به همین آرایه ای از بایتها میرسی که اونم رنگ هر نقطه هست.
جدای از این Canvas کلی هم امکانات بهت میده که حتما کارهایی که میخوای بکنی رو راحتتر میکنه.
dkhatibi
چهارشنبه 29 فروردین 1386, 10:46 صبح
اونوقت بیتهایی که تغییر داده رو کجا نگه داره؟!!
تو فایلی که راره تغییرات ذخیره شوند یا یک فایل موقت.
ghabil
چهارشنبه 29 فروردین 1386, 13:32 عصر
یعنی به ازای هر پیکسل یکبار به هارد اکسس بکنه؟!!
میبینی آدم با اظهار نظر کردن در مورد مسائلی که ازشون اطلاع نداره ، دانسته های واقعیش رو هم زیر سوال میبره.
dkhatibi
پنج شنبه 30 فروردین 1386, 12:21 عصر
یعنی به ازای هر پیکسل یکبار به هارد اکسس بکنه؟!!
میبینی آدم با اظهار نظر کردن در مورد مسائلی که ازشون اطلاع نداره ، دانسته های واقعیش رو هم زیر سوال میبره.
درسته!
به هر حال من نگفتم در هر لحظه برای هر پیکسل این کار رو انجام بده.
با تکه تکه کردن تصویر این مشکل حل خواهد شد.
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.