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

نام تاپیک: رفع خطای (بی ربط) !Out of memory

  1. #1

    رفع خطای (بی ربط) !Out of memory

    با سلام خدمت دوستان گرامی!
    مشکل بنده این است که در یک برنامه VB6 ، پس از این که کاربر برنامه را نصب می کنه و صفحه
    اصلی را می بینه، برای رفتن به بخشهای دیگه نرم افزار باید دکمه ای را کلیک کنه ولی با زدن
    دکمه، ویندوز خطای Out of memory می گیره .
    جالب این است که این خطا ظاهرا واقعی نیست چرا که من روی یک سیستم با رم 32 هم جواب گرفتم ولی روی یک سیستم با رم 256 جواب نمی دهد. البته برنامه را روی سیستمهای زیادی تست کرده ام ولی حدود 30 یا 40 درصد از اونا با ایجاد خطا از برنامه خارج میشن.

    این را هم بگم که تمام نکات از قبیل Unload صحیح و یا Nothing کردن هر فرم یا رکوردست موقع بسته شدن را انجام داده ام ولی باز مشکل حل نمی شود. ( روی ویندوزها مختلف)
    در راهنمای ویندوز هم علت مشکل، اشغال حافظه توسط برنامه معرفی شده ولی گفتم روی رم 32 کار می کنه. این هم ناگفته نمونه که در برنامه از Flash.ocx ( ورژن 6 ) که فایلی 8 مگابایتی را باز می کنه استفاده کرده ام. در ابتدای برنامه هم یک قطعه فیلم حدود 30 مگا بایتی به نمایش در می آید ( البته به سفارش صاحب برنامه)

    از طرف دیگر یک برنامه دیگه ای رو که جدیدا نوشته ام در ویندوز 98 و Me جواب میده ولی روی XP
    همین مشکل را دارم. ( البته هر دو را توی 98 نوشته ام)


    لطفا اگر در این زمینه راه حلی دارید کمک کنید.

    ... وای خسته شدم!!


  2. #2
    من معمولا از این قطعه کد استفاده میکنم, میتونید اونو بعد یا قبل از جاهایی که حافظه زیادی نیاز دارید صدا بزنید



    Option Explicit

    Private Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
    Private Declare Function GetProcessWorkingSetSize Lib "kernel32" (ByVal hProcess As Long, lpMinimumWorkingSetSize As Long, lpMaximumWorkingSetSize As Long) As Long
    Private Declare Function SetProcessWorkingSetSize Lib "kernel32" (ByVal hProcess As Long, ByVal dwMinimumWorkingSetSize As Long, ByVal dwMaximumWorkingSetSize As Long) As Long
    Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
    Private Declare Function GetCurrentProcessId Lib "kernel32" () As Long

    Public Sub MemoryCleanup()
    '
    Dim lRetVal As Long
    Dim hProcess As Long
    Dim lpMinimumWorkingSetSize As Long
    Dim lpMaximumWorkingSetSize As Long
    Const PROCESS_ALL_ACCESS = &H1F0FFF

    hProcess = OpenProcess(PROCESS_ALL_ACCESS, False, GetCurrentProcessId)
    lRetVal = GetProcessWorkingSetSize(hProcess, lpMinimumWorkingSetSize, lpMaximumWorkingSetSize)
    lpMinimumWorkingSetSize = -1
    lpMaximumWorkingSetSize = -1
    lRetVal = SetProcessWorkingSetSize(hProcess, lpMinimumWorkingSetSize, lpMaximumWorkingSetSize)
    hProcess = CloseHandle(hProcess)
    '
    End Sub



  3. #3
    از راهنماییتان خیلی ممنونم.
    اگر ممکن است کمی در مورد این تابع و نحوه عملکردش توضیح بدهید.

  4. #4
    با سلام خدمت دوستان گرامی
    من هم دقیقا با همین مشکل روی برخی از کامپیوتر ها برخورد کردم
    علاوه بر این خطا تمام کنترل هایی که راست به چپ هستند،از چپ به راست نشان داده می شوند
    در صورتیکه گزینه install right to left for ...در control panel نصب شده
    فقط هم روی ویندوز xpاین مشکل رو داره

  5. #5
    من هم همین مشکل را داشتم زمانیکه برنامه را در ویندوز 98 کامپایل (exe) میکردم چنین پیغامی ظاهر میشد ولی زمانیکه در ویندوز xp برنامه‌ام را کامپایل می‌کردم مشکل بر طرف می‌شد. شما هم یک بار با ویندوز xp برنامه‌تان را exe کنید به نظرم مشکلت حل شود.

  6. #6
    جناب S.Azish با توجه به توضیحاتی که ع.م.خ دادند من فکر نمی کنم مشکل ایشون کمبود حافظه باشه!
    جناب ع.م.خ من حدس می زنم شما از مانیفست استفاده می کنید و فکر می کنم مشکل شما از همین مانیفسته

  7. #7
    من حدس می زنم شما از مانیفست استفاده می کنید
    ببخشید میشه بگید مانیفست چیه؟؟ :oops:

  8. #8
    مانیفست یک ریسورس یا یک فایل xml است که برای دادن استیل استاندارد ایکس پی یا لانگهورن به یک برنامه استفاده می شود
    قبلاً تو همین بخش در این باره زیاد بحث شده

  9. #9
    تشکر. حله :موفق: :flower:

  10. #10
    دوستان سلام
    این پیغام عتیقه Out Of Memory لزوما بخاطر کمبود حافظه نیست. در خصوصا VB6 گاهی میکروسافت (مثل خیلی وقتهای دیگه) قاط می زنه و بی دلیل یه فرم (یا چند فرم) را با این خطا مواجه می کنه. در این مواقع گاهی با بی خیال شدن این فرم (یا فرم ها) و دوباره ساختن آنها مشکل حل می شه. من یکی دوبار با این میکروسافت از این حال ها کردم. من نمی دونم این میکروسافت چرا الکی مشهور شده (البته من خودم معمولا خیلی وابسته به میکروسافتم ولی یقین دارم که خیلی بی خوده.)

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

  1. خطای out of memory while expanding memory stream
    نوشته شده توسط m-khorsandi در بخش برنامه نویسی در Delphi
    پاسخ: 9
    آخرین پست: چهارشنبه 05 دی 1386, 16:21 عصر
  2. دلیل خطای Out of memory
    نوشته شده توسط Hossein Moradi در بخش برنامه نویسی در 6 VB
    پاسخ: 5
    آخرین پست: یک شنبه 14 اسفند 1384, 23:50 عصر
  3. out of memory
    نوشته شده توسط hosseinrp در بخش برنامه نویسی در 6 VB
    پاسخ: 7
    آخرین پست: شنبه 01 بهمن 1384, 03:31 صبح
  4. پیغام Qut Of Memory
    نوشته شده توسط ehsan_ansaripoor در بخش برنامه نویسی در 6 VB
    پاسخ: 3
    آخرین پست: یک شنبه 27 شهریور 1384, 13:34 عصر
  5. اشکال در کامپایل برنامه 'Out off memory'????
    نوشته شده توسط user addi در بخش برنامه نویسی اسمبلی خانواده x86
    پاسخ: 1
    آخرین پست: دوشنبه 22 فروردین 1384, 00:49 صبح

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

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