PDA

View Full Version : Invalid Pointer Operation



asilverisis
یک شنبه 12 تیر 1384, 14:09 عصر
سلام

من توی دلفی یه DLL ساختم که فقط یه پروسیجر رو رو Export می کنه

البته دو پروسیجر دیگه هم در داخل آن هستند

وقتی توی برنامه ازش استفاده می کنم کارش ر و دقیقا انجام می ده
ولی بعد از دادن نتیجه Error زیر رو می ده


Invalid Pointer Operation

قابل توجه که پارامترهای پروسیجر String هسنتد

گفتم شاید اشکال از اون باشه

maryam.ili
یک شنبه 12 تیر 1384, 17:05 عصر
احتملا باید نوع داده استرینگ را عوض کنی و از نوع رشته های دیگر دلفی استفاده کنی

vcldeveloper
دوشنبه 13 تیر 1384, 05:40 صبح
قابل توجه که پارامترهای پروسیجر String هسنتد
اگه از string در DLL استفاده می کنید، یونیت ShareMem باید اولین یونیت در بخش USES هر دو پروژه (هم DLL و هم برنامه ایی که ازش استفاده می کنه) باشه، همچین فایل BORLNDMM.DLL رو هم باید با برنامه تون در سیستم مقصد کپی کنید

بجای String می تونید از ShortString یا PChar استفاده کنید تا نیازی به استفاده از ShareMem نباشه.

asilverisis
دوشنبه 13 تیر 1384, 07:34 صبح
سلام آقای کشاورز

دست شما درد نکنه این کار رو کردم البته قبلا به Uses DLL اضافه کرده بودم ولی به برنامه نه

این Error رفع شد ولی حالا بعد از انجام کار وقتی فرم رو می بندم RunTime Error می ده :


RunTime Error 217 at 0041375c

محمد میرمصطفی
دوشنبه 13 تیر 1384, 17:57 عصر
مطمئنی که Objevtی، متغیری چیزی Create نمی کنی که بعدش Freeش نکرده باشی؟

asilverisis
دوشنبه 13 تیر 1384, 19:22 عصر
سلام

آره مطمئنم خیلی ساده است
یه پروسیجر External تعربف می کنم
بعد صداش می زنم

ضمنا این Runtime Error که می ده حتی اگر کار DLL هم انجام نشه یعنی فقط فرم رو باز کنم و ببندم هم اتفاق می افته

ضمنا تمام String ها رو هم ShortString کردم درست نشد

asilverisis
دوشنبه 13 تیر 1384, 19:28 عصر
سلام

آقا ببخشید درست شد
بعد از اینکه String ها رو تبدیل کردم به ShortString
ShareMem رو از لیست Uses حذف نکرده بودم

این کار رو کردم درست شد

از همتون ممنون


:sunglass:

babila
یک شنبه 19 تیر 1384, 20:43 عصر
من هم به چنین مشکلی برخورد کرده بودم ولی جالب اینجاست که هیچ کدوم از این کارها رو نکردم بلکه قبل از ارسال مقدار بازگشتی تابع آنرا در یک متغیر عمومی (تعریف شده در قسمت VAR اول )ریختم و بعد آن متغیر را در Result قرار دادم که مشکلم حل شد.