نمایش نتایج 1 تا 18 از 18

نام تاپیک: حل مشکل ماژول ها در 64 و 32 بیتی

  1. #1
    کاربر دائمی آواتار amir91
    تاریخ عضویت
    اسفند 1389
    محل زندگی
    اصفهان
    پست
    111

    حل مشکل ماژول ها در 64 و 32 بیتی

    با سلام خدمت اساتید و دوستان عزیز
    من یک فایل دارم که از ماژول های این سایت استفاده کرده ام و در سیستم 32 بیتی بدون هیچ مشکلی جواب می دهد ولی در سیستم 64 بیتی به متن ماژول ها ایراد می گیرد
    مثل:
    Declare Function SetClassLong Lib "user32" Alias "SetClassLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
    برای حل این مشکل راه حلی وجود دارد که فایل هم در سیستم 32 بیتی و هم در 64 بیتی جواب دهد
    با تشکر

  2. #2
    کاربر دائمی آواتار AbbasSediqi
    تاریخ عضویت
    مهر 1392
    محل زندگی
    تهران
    پست
    409

    نقل قول: حل مشکل ماژول ها در 64 و 32 بیتی

    برادر بعد از declare باید اثن رو اضافه کنی ptrsafe

  3. #3
    مدیر بخش آواتار Abbas Amiri
    تاریخ عضویت
    فروردین 1390
    محل زندگی
    اصفهان
    پست
    2,327

    نقل قول: حل مشکل ماژول ها در 64 و 32 بیتی

    سلام
    سعی کنید در برنامه هایتان جهت استفاده از رفرنسهای خارجی و استفاده از عبارت Declare از عبارات شرطی پیش پردازنده استفاده کنید.تا در سیستمهای 64بیتی به مشکل برنخورید
    در مثال بالا:
    #If Win64 Then
    Declare PtrSafe Function SetClassLong Lib "user32" Alias "SetClassLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
    #Else
    Declare Function SetClassLong Lib "user32" Alias "SetClassLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
    #End If

  4. #4
    کاربر دائمی آواتار amir91
    تاریخ عضویت
    اسفند 1389
    محل زندگی
    اصفهان
    پست
    111

    نقل قول: حل مشکل ماژول ها در 64 و 32 بیتی

    با سلام و تشکر
    چون فایل من روی شبکه بود از راه حلی که دو فرمول 32 و 64 استفاده کردم و جواب داد .

  5. #5

    نقل قول: حل مشکل ماژول ها در 64 و 32 بیتی

    ممنون از پاسختون استاد امیری گرامی

    من این شرط رو در استفاده کردم اما نمیدونم چرا خطا میگیره و بعد از قرار دادن PtrSafe بعد از Declare همون خط رو به رنگ قرمز در میاره

    تصویر و کد استفاده شده را ضمیمه کردم ممنون میشم ملاحظه بفرمایین

    If Win64 ThenPublic Declare PtrSafe Function ShowWindow Lib "user32.dll" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
    Else
    Public Declare Function ShowWindow Lib "user32.dll" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
    End If


    عکس های ضمیمه عکس های ضمیمه

  6. #6

    نقل قول: حل مشکل ماژول ها در 64 و 32 بیتی

    سلام
    دوست عزیز کلمه public را از سطر دوم و چهارم حذف کن
    #If Win64 Then
    Declare PtrSafe Function ShowWindow Lib "user32.dll" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
    #Else
    Declare Function ShowWindow Lib "user32.dll" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
    #End If

  7. #7

    نقل قول: حل مشکل ماژول ها در 64 و 32 بیتی

    ممنون جناب عربی گرامی

    ولی سطرهایی که با Public و حتی Declare شروع میشن هم همین شرایط رو دارن و به رنگ قرمز در میان

  8. #8

    نقل قول: حل مشکل ماژول ها در 64 و 32 بیتی

    چون فایل من روی شبکه بود از راه حلی که دو فرمول 32 و 64 استفاده کردم و جواب داد .
    فایل من هم روی شبکه است . دوستمون از چه روشی استفاده کردن

  9. #9
    کاربر دائمی آواتار amir91
    تاریخ عضویت
    اسفند 1389
    محل زندگی
    اصفهان
    پست
    111

    نقل قول: حل مشکل ماژول ها در 64 و 32 بیتی

    سلام دوست گرامی
    دستوراتی که نوشتی درسته فقط
    از علامت # قبل از if و else و end if استفاده کن مشکلت حل میشه

  10. #10

    نقل قول: حل مشکل ماژول ها در 64 و 32 بیتی

    با تشکر از دوست گرامی amir91
    من گفته شما رو هم اجرا کردم ولی مشکل همچنان حل نشده

    ممنون میشم یه نمونه از کارهای خودتون رو ضمیمه کنید
    عکس های ضمیمه عکس های ضمیمه

  11. #11
    کاربر دائمی آواتار amir91
    تاریخ عضویت
    اسفند 1389
    محل زندگی
    اصفهان
    پست
    111

    نقل قول: حل مشکل ماژول ها در 64 و 32 بیتی


    #If Win64 Then
    Private Declare PtrSafe Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
    #Else
    Private Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
    #End If
    دستور بالا را در برنامه خود paste کن

  12. #12
    مدیر بخش آواتار Abbas Amiri
    تاریخ عضویت
    فروردین 1390
    محل زندگی
    اصفهان
    پست
    2,327

    نقل قول: حل مشکل ماژول ها در 64 و 32 بیتی

    نقل قول نوشته شده توسط G.hemati مشاهده تاپیک
    ممنون از پاسختون استاد امیری گرامی

    من این شرط رو در استفاده کردم اما نمیدونم چرا خطا میگیره و بعد از قرار دادن PtrSafe بعد از Declare همون خط رو به رنگ قرمز در میاره

    تصویر و کد استفاده شده را ضمیمه کردم ممنون میشم ملاحظه بفرمایین

    If Win64 ThenPublic Declare PtrSafe Function ShowWindow Lib "user32.dll" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
    Else
    Public Declare Function ShowWindow Lib "user32.dll" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
    End If


    سلام

    علت اینکه جملات دارای PtrSafe به رنگ قرمز میشوند اینست که در ورژن VBA مورد نظر تعریف نشده است و این هیچ مشکلی ایجاد نمی کند، چون در سیستم های 32 بیتی کامپایلر این قسمت را نمی خواند.

  13. #13

    نقل قول: حل مشکل ماژول ها در 64 و 32 بیتی

    با سپاس از شما استاد عزیز (به قول یکی از گزارشگران فوتبال " چقدر خوبین شما ")

    فقط اگه بیزحمت نقش علامت # اول IF و ٍElse رو بگین، ممنون میشم و اگه این علامت نباشه مشکلی پیش میاد

  14. #14
    مدیر بخش آواتار Abbas Amiri
    تاریخ عضویت
    فروردین 1390
    محل زندگی
    اصفهان
    پست
    2,327

    نقل قول: حل مشکل ماژول ها در 64 و 32 بیتی

    نقل قول نوشته شده توسط G.hemati مشاهده تاپیک
    با سپاس از شما استاد عزیز (به قول یکی از گزارشگران فوتبال " چقدر خوبین شما ")

    فقط اگه بیزحمت نقش علامت # اول IF و ٍElse رو بگین، ممنون میشم و اگه این علامت نباشه مشکلی پیش میاد
    سلام
    علامت # مشخصه دستورات پیش پردازنده است که در VB کمتر استفاده میشود و مثلا در C بیشتر دیده می شود.
    در مورد مثال خودمان زمانی که کامپایلر به دستور #If می رسد بسته به شرط یکی از گزینه ها را انتخاب می کند وآن را کامپایل می کند و از سایر خطوطی که در عبارات #If است صرف نظر میکند .
    چنانچه از عبارات If مرسوم استفاده کنیم تمام جملات کامپایل خواهند شد.

  15. #15

    نقل قول: حل مشکل ماژول ها در 64 و 32 بیتی

    نقل قول نوشته شده توسط AbbasSediqi مشاهده تاپیک
    برادر بعد از declare باید اثن رو اضافه کنی ptrsafe
    خیلی کارت درسته بهت ایمان آوردم دمت گرم با یه کلمه کارمو راه انداختی ایییییییییییییییییییول

  16. #16

    نقل قول: حل مشکل ماژول ها در 64 و 32 بیتی

    ...................

  17. #17

    نقل قول: حل مشکل ماژول ها در 64 و 32 بیتی

    سلام من از روش‌های پست ۲ و پست ۹ امتحان کردم درست نشد.
    روش پست ۹ رو میرم موقع اجرای ماژول بالون این رو میگه؛

    روش پست ۲ هم کلاً ایرادی نمیگیره ولی ماژول اجرا نمیکنه
    امکان هست فایل بزارم برام اصلاح کنید؟؟
    یک سوال تو قسمت محیط vba منوی بالا tools و refrences کار خاصی نباید بکنم؟؟

  18. #18
    کاربر دائمی
    تاریخ عضویت
    دی 1387
    محل زندگی
    تربت حیدریه
    پست
    131

    نقل قول: حل مشکل ماژول ها در 64 و 32 بیتی

    سلام، دوستان اگه در این باره توضیح بدهند که:
    آیا اصلا نیاز هست که یک فایل اکسس محدود به نسخه 32 یا 64 بیتی بشه؟
    و شاید به اجبار باید با توجه به نسخه ویندوز در برخی ماژولها از کدهای 32 یا 64 بیتی استفاده کرد؟

تاپیک های مشابه

  1. سوال: مشکل در برنامه ضرب دو عدد 32 بیتی!کمک کنید!لطفا
    نوشته شده توسط djnew2009 در بخش برنامه نویسی اسمبلی خانواده x86
    پاسخ: 3
    آخرین پست: جمعه 24 آبان 1392, 22:44 عصر
  2. مشکل فراخوانی یک dll در کامپیوتر 64 بیتی
    نوشته شده توسط spicirmkh در بخش ASP.NET Web Forms
    پاسخ: 6
    آخرین پست: دوشنبه 01 اسفند 1390, 13:06 عصر
  3. مشکل در اجرای وقفه در ویندوز 64 بیتی
    نوشته شده توسط deopen در بخش برنامه نویسی اسمبلی خانواده x86
    پاسخ: 6
    آخرین پست: پنج شنبه 07 آذر 1387, 19:27 عصر
  4. مشکل ماژول هجری شمسی
    نوشته شده توسط sdf123 در بخش Access
    پاسخ: 0
    آخرین پست: دوشنبه 13 آبان 1387, 11:33 صبح
  5. مشکل با کریستال ریپورت در ویندوز 64 بیتی
    نوشته شده توسط iman_s52 در بخش گزارش سازی با Crystal Report
    پاسخ: 0
    آخرین پست: شنبه 07 مهر 1386, 08:32 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •