PDA

View Full Version : تشخیص 32 یا 64 بیت بودن CPU در دلفی 2010 .



ali_kolahdoozan
دوشنبه 08 آبان 1391, 13:55 عصر
با سلام


دوستان من دلفی بلد نیستم و شاخه کاری من هم اصلا دلفی نیست ، فقط به یک تابع شسته و رفته و دقیق در دلفی نیاز دارم که بتونم بفهمم CPU سیستم از نوع 32 بیت است یا 64 بیت .

لطفا اگر قصد کمک دارید یک سورس در اختیارم بگذارید چون به دلیل بلد نبودن دلفی ، راهنمایی کمکی بهم نمیکنه .


با تشکر

Felony
دوشنبه 08 آبان 1391, 14:23 عصر
میتونید از کلاس Win32_Processor از WMI استفاده کنید ، حالا بلد نیستید میتونید نرم افزار WMI Delphi Code Creator رو دانلود کنید تا کدش رو براتون تولید کنه .

BORHAN TEC
دوشنبه 08 آبان 1391, 15:25 عصر
سلام
این کد هم میتونه بهتون کمک کنه:
function CPUType: string;
var
Reg: TRegistry;
begin
CPUType := '';
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_LOCAL_MACHINE;
if Reg.OpenKey('\Hardware\Description\System\CentralP rocessor\0', False) then
CPUType := Reg.ReadString('Identifier');
finally
Reg.Free;
end;
end;

ali_kolahdoozan
دوشنبه 08 آبان 1391, 15:44 عصر
الان کد کار میکنه ، اما هیچی بر نمی گردونه

BORHAN TEC
دوشنبه 08 آبان 1391, 15:51 عصر
آقا قربون شکلت ، بدجوری error میده . چه باید کرد ؟ چیزی باید uses بشه ؟

الان کد کار میکنه ، اما هیچی بر نمی گردونه
با منی یا آقای تاجیک؟ :متفکر:
اگه با من هستید، باید Registry رو به فهرست uses اضافه کنید.
راستی اون قسمت از رشته که به صورت جدا نوشته شده CentralProcessor هست که نمی دونم چرا اینجا اینطوری نشون داده شده!

ali_kolahdoozan
دوشنبه 08 آبان 1391, 15:55 عصر
با منی یا آقای تاجیک؟ :متفکر:
اگه با من هستید، باید Registry رو به فهرست uses اضافه کنید.
راستی اون قسمت از رشته که به صورت جدا نوشته شده CentralProcessor هست که نمی دونم چرا اینجا اینطوری نشون داده شده!

اونها رو هم درست کرده بودم . اما بازم این متد چیزی بر نمی گردونه

Felony
دوشنبه 08 آبان 1391, 16:03 عصر
الان کد کار میکنه ، اما هیچی بر نمی گردونه
رجیستری محل مناسبی برای واکشی این نوع اطلاعات سیستمی نیست چون وجود یک کلید به موارد بسیار زیادی بستگی داره .

ali_kolahdoozan
دوشنبه 08 آبان 1391, 16:14 عصر
این داستان در #C همش 4 خط است . چطور دلفی نداره ؟

Felony
دوشنبه 08 آبان 1391, 20:02 عصر
پسر خوب اینجا بخش دلفی هست ، دلفی یک زبان native هست ، نه به اندازه ++C ولی به اندازه خودش is not for childrens ! ، راه حل به شما گفته شد ولی شما دوست داری با 2 خط کاری که میخوای رو انجام بدی پس وقتتو اینجا هدر نده ، دلفی از این قدرت ها نداره !

ali_kolahdoozan
دوشنبه 08 آبان 1391, 21:39 عصر
ابتدا عرض کنم که خب این کد کار نمیده . ثانیا داستان کار با رجیستری زیاد امن نیست و میتونه دقیق نباشه . سوما ............... / سوما باشه برای بعد .

Felony
دوشنبه 08 آبان 1391, 21:46 عصر
راحت ترین راه مطمئن همونی هست که من در پست اولم گفتم ( WMI ) .

BORHAN TEC
سه شنبه 09 آبان 1391, 14:59 عصر
سلام

دوست عزیز این موردی که شما گفتید اصلاً ضعف به حساب نمی آید. اگر شما مجموعه دلفی 2010 را به صورت کامل داشته باشید متوجه می شوید که یک DVD هم به همراه آن وجود دارد که شامل یکسری کامپوننت است. به این نکته توجه داشته باشید که یکی از اصلی ترین مجموعه کامپوننت هایی که همه دلفی کاران آنرا نصب می کنند مجموعه رایگان و کد باز JVCL است. این مجموعه به شدت تحت حمایت Embarcadero است که شما برای این قبیل کارها می توانید از آن استفاده کنید. توجه داشته باشید با نصب این مجموعه شما می توانید از صدها کامپوننت موجود در آن هم استفاده کنید.
اگر شما این مجموعه را نصب کرده باشید به راحتی با استفاده از کد زیر می توانید به مقصودتان برسید:
- ابتدا یک کامپوننت از نوع TJvComputerInfoEx بر روی فرمتان قرار دهید و بعد با استفاده از کد زیر کارتان را انجام دهید:
procedure TForm4.Button1Click(Sender: TObject);
begin
if JvComputerInfoEx1.CPU.Is64Bits then
ShowMessage('CPU is 64 bit')
else
ShowMessage('CPU is Not 64 bit');
end;
اگر DVD همراه دلفی را هم در اختیار ندارید می توانید مجموعه JVCL را به صورت جدا دانلود کنید. به این نکته توجه داشته باشید که قبل از نصب JVCL شما باید JCL را نصب کرده باشید.
برای دانلود آخرین نسخه JCL و JVCL می توانید به آدرس زیر بروید:
http://cc.embarcadero.com/Item/29000
http://sourceforge.net/projects/jvcl/files/JVCL%203/JVCL%203.47/
به نظر من، اینکه شما از وجود چنین مجموعه هایی اطلاع ندارید، به ضعف در اطلاعات شما باز می گردد و ضعف دلفی و یا هر محیط دیگری نیست. اگر خواستید من چند مثال می زنم که انجام آنها در محیط دلفی به صورت پیش فرض با ویزارد و کمتر از یک دقیقه امکان پذیر است ولی در محیط دات نت (و به قول شما C#‎‎‎) به صورت پیش فرض باید برای آنها مدت زمان زیادی را وقت بگذارید! به عنوان مثالی از این دست می توانید در مورد DataSnap و FireMonkey و ... کمی تحقیق کنید.

موفق باشید...

ali_kolahdoozan
سه شنبه 09 آبان 1391, 16:10 عصر
سلام

دوست عزیز این موردی که شما گفتید اصلاً ضعف به حساب نمی آید. اگر شما مجموعه دلفی 2010 را به صورت کامل داشته باشید متوجه می شوید که یک DVD هم به همراه آن وجود دارد که شامل یکسری کامپوننت است. به این نکته توجه داشته باشید که یکی از اصلی ترین مجموعه کامپوننت هایی که همه دلفی کاران آنرا نصب می کنند مجموعه رایگان و کد باز JVCL است. این مجموعه به شدت تحت حمایت Embarcadero است که شما برای این قبیل کارها می توانید از آن استفاده کنید. توجه داشته باشید با نصب این مجموعه شما می توانید از صدها کامپوننت موجود در آن هم استفاده کنید.
اگر شما این مجموعه را نصب کرده باشید به راحتی با استفاده از کد زیر می توانید به مقصودتان برسید:
- ابتدا یک کامپوننت از نوع TJvComputerInfoEx بر روی فرمتان قرار دهید و بعد با استفاده از کد زیر کارتان را انجام دهید:
procedure TForm4.Button1Click(Sender: TObject);
begin
if JvComputerInfoEx1.CPU.Is64Bits then
ShowMessage('CPU is 64 bit')
else
ShowMessage('CPU is Not 64 bit');
end;
اگر DVD همراه دلفی را هم در اختیار ندارید می توانید مجموعه JVCL را به صورت جدا دانلود کنید. به این نکته توجه داشته باشید که قبل از نصب JVCL شما باید JCL را نصب کرده باشید.
برای دانلود آخرین نسخه JCL و JVCL می توانید به آدرس زیر بروید:
http://cc.embarcadero.com/Item/29000
http://sourceforge.net/projects/jvcl/files/JVCL%203/JVCL%203.47/
به نظر من، اینکه شما از وجود چنین مجموعه هایی اطلاع ندارید، به ضعف در اطلاعات شما باز می گردد و ضعف دلفی و یا هر محیط دیگری نیست. اگر خواستید من چند مثال می زنم که انجام آنها در محیط دلفی به صورت پیش فرض با ویزارد و کمتر از یک دقیقه امکان پذیر است ولی در محیط دات نت (و به قول شما C#‎‎‎) به صورت پیش فرض باید برای آنها مدت زمان زیادی را وقت بگذارید! به عنوان مثالی از این دست می توانید در مورد DataSnap و FireMonkey و ... کمی تحقیق کنید.

موفق باشید...

من که همون اول کار گفتم من هیچی دلفی سرم نمیشه و نمیخام هم سرم بشه در نتیجه فرضیه ضعف اطلاعات من کاملا درسته . مشکلی که پیش آمد این است که دیدم کسی مثل شما پیدا نشد که بیاید و همین را که فرموده اید به من یاد بدهد در نتیجه برایم سوال پیش آمد چطور کسانی که مرا کودک خواندند هم خودشان بلد نیستند . منظور من توهین به زبان دلفی نبود . منظور من این بود که چطوری یک چنین چیز ساده ای را دوستان با وجود این همه ادعا و کودک خواندن من نمی دانند. به هر حال دم شما گرم . با تشکر و سپاس بسیار از کمک شما .

Felony
سه شنبه 09 آبان 1391, 18:30 عصر
منظور من این بود که چطوری یک چنین چیز ساده ای را دوستان با وجود این همه ادعا و کودک خواندن من نمی دانند.
کسی شما رو کودک خطاب نکرد ، در ضمن راه حلی که در پست اولم بهت گفتم به سادگی همین پستی بود که شاهین زد ، البته این پست شاهین برات دردسر سازه چون نصب کامپوننت تو دلفی هم گاهی وقت ها برای خودش داستان ها داره ، کلاس مورد نیاز رو بهت گفتم ، برنامه سازنده کد رو هم بهت گفتم کافی بود برنامه رو اجرا کنی و کلاسی که گفتم رو انتخاب کنی و کد تولید شده رو تو Code Editor کپی کنی !