PDA

View Full Version : مشکل در تعریف متغیر



persia_hrn
سه شنبه 19 شهریور 1392, 01:05 صبح
سلام بر دوستان عزیز
لطفاً به کد زیر نگاه کنید :

Var Loop: Int64;

Procedure ...
begin
For Loop:=0 to ListBox1.Items.Count-1 do
if StrToInt64(Edit1.Text)<StrToInt64(ListBox1.Items.String[Loop]) then
begin
...
end;
end;
توی دستور بالا من از آیتم شماره 0 لیست تا آخرین آیتم لیست رو چک میکنم که اگه عدد توی Edit1 کوچکتر از عدد ثبت شده توی لیست در ردیف شماره حلقه بود یه اتفاقی بیافته .

فرض کنیم که تعداد آیتم های لیست بیشتر از تعداد اعداد محدوده Integer باشه اونوقت چکار باید کرد ؟

زمانی که متغیر رو به Integer تغییر میدم و StrToInt رو توی شرط میذارم درست کار میکنه ولی وقتی دستور به شکل بالا باشه ارور زیر رو میده :


[Fatal Error] Unit8.pas(89): Internal error: C862

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

ضمناً سوال فقط راجع به حلقه ی For هستش ، سایر حلقه ها رو کاری ندارم :چشمک:

یوسف زالی
سه شنبه 19 شهریور 1392, 09:35 صبح
سلام.
ضمن این که دستورات شما رو نفهمیدم،
طبق مستندات لیست باکس (نسخه 7):


property Count: Integer read GetCount;

به این معنی که جوابگوی تعداد خارج از محدوده Integer نیست.
برای تعداد بیشتر در صورتی که ساپورتی انجام نمی شه، به نظرم بهتره که مطالب رو دسته بندی و فیلتر کنید یا اینکه از کامپوننت های توسعه یافته استفاده کنید یا اینکه خودتون لیست رو با اشاره گر دربیارید..

persia_hrn
سه شنبه 19 شهریور 1392, 12:18 عصر
با سلام خدمت آقا یوسف عزیز


لیست رو با اشاره گر دربیارید..

میشه یه توضیح کوچیک راجع به این مطلب بدید ؟
ممنون می شم . :تشویق:

یوسف زالی
سه شنبه 19 شهریور 1392, 12:36 عصر
اگر حالت نمایشی ندارید، می تونید لیست رو با استفاده از لیست پیوندی پیاده سازیش کنید.
برای پیاده سازی لیست پیوندی باید یکم با اشاره گر ها آشنا باشید.
اگر بتونید خوب از آب درش بیارید از نظر تئوری سریع ترین حالت رو برای کار در اختیار شما قرار می ده.
اگر برای نمایش هم دارید از لیست استفاده می کنید، یک لیست باید خودتون بنویسید، و بصورت کلاس یا کامپوننت ازش استفاده کنید.
حالا حالت نمایش دارید یا ندارید؟

BORHAN TEC
سه شنبه 19 شهریور 1392, 13:09 عصر
سلام
من يه چيزي رو متوجه نميشم!!! يعني تعداد عناصري كه مي خواهيد در ListBox باشه از 2000000000 بيشتره؟!!! :متعجب: همانطور كه مي دانيد محدوده Integer به صورت تقريبي مقادير حدود منفي 2 ميليارد تا مثبت دو ميليارد رو شامل ميشه(البته خورده اش رو كاري ندارم).

Ananas
سه شنبه 19 شهریور 1392, 20:42 عصر
-2147483648..2147483647

persia_hrn
چهارشنبه 20 شهریور 1392, 01:26 صبح
سلام دوستان عزیز

ممنون واسه جواب هاتون .

بله کاری که دارم انجام میدم باید لیست نمایشی باشه .

یکجور برنامه حسابداری دارم می نویسم واسه یک جای بخصوص که مطمئناً عناصر ذخیره شده توی لیست ها بیشتر از محدوده ی Cardinal هستش یعنی یه چیزی حدود 5 میلیارد عنصر توی یک لیست :ناراحت:

اگه بخوام یه کلاس با قابلیت هایی که لیست داره بنویسم دهنم چیز میشه ... یعنی خسته می شه :چشمک: کار یکی دو روز هم نیست و مهمتر از اون در حد سواد من هم نیست ، نقداً نابود میشم :گیج:

دوستان کامپوننت پیشرفته ای سراغ ندارید ؟

محمد جون نیستی داداش کم پیدایی نکنه هنوز داری با آهنگا ... می کنی ؟! :لبخند: شاکرتم :چشمک:

khorsandreza
چهارشنبه 20 شهریور 1392, 02:53 صبح
سلام
من نیز به یک همچین چیزی نیاز داشتم ولی نه در آن حد اندازه شاید دویست هزار رکورد (البته دیگه با این شیوه موافق نیست) یک کامپوننتی پیدا کردم به نام NextGrid البته برای D7 میتونی با کمی تغییر برای نسخه های بالاتر کامپایل کنید نسبت به بارگذاری از سرعت خوبی برخوردار است حالا ببینید مشکلتان را برطرق می کند.
از اینجا دانلود کنید (http://etaksan.ir/download/unit.rar)