PDA

View Full Version : مشکل در فراخوانی تابع Dll



دنی کوئیل
دوشنبه 14 آذر 1384, 20:53 عصر
سلام دوستان

همگی خسته نباشید

یه مشکل تو فراخوانی تابع Dll برام پیش آمده

اول بزار بگم تو Dll چه تابعی نوشتم

تابعی که نوشتم یک رشته Alireza را برمی گرداند

راستی با Vb نوشتم این Dll را .

حالا برای اینکه تردید و سوالی برای شما پیش نیاد کد تابع را که با Vb نوشتم می ذارم اینجا



Public Function Test()
Test = "Alireza"
End Function




حالا من می خواهم بدونم چه جوری این تابع را که Dll کردم و گذاشتم تو پوشه پروژه ام بخوانم

البته فراخوانی Dll در دلفی را بلدم اما نمی دونم این یکی چرا نمیشه

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

Touska
دوشنبه 14 آذر 1384, 20:54 عصر
تا اونجایی که من می دونم dll رشته معمولی بر نمی گردونه.

مثلا تو دلفی حتما باید از shortstring استفاده نمایید.

Naficy
سه شنبه 15 آذر 1384, 11:15 صبح
اصلا کار جالبی نمی خواید بکنید. dll با vb؟ کار افتضاحیه...
باید بدونید که صدا زدن تابع انواع مختلفی (stdcall، safecall و...) دارد. همین جوری نمی شه یه dll ساخت و import کرد. باید دقیقا بدونید لیست پارامترها چیه (البته باید بدونید دقیقا چیه، نه اینکه بدونید توی مثلا vb یک رشته است. این اصلا کافی نیست...) همین طور باید بدونید تابع را به چه روشی باید صدا بزنید. و...

بازم می گم:
اصلا کار جالبی نمی خواید بکنید. dll با vb؟ کار افتضاحیه... (به دلایل متنوع)

دنی کوئیل
سه شنبه 15 آذر 1384, 17:51 عصر
خوب پس به من بگید چه جوری می توانم این علیرضا را از Dll به خونم

Naficy
چهارشنبه 16 آذر 1384, 09:55 صبح
باید رشته را بصورت ShortString یا PChar از درون dll انتقال بدین. اگر از PChar استفاده کنین (که راه استانداردتریه) باید بصورت پارامتر به تابع ارسال بشه (نه مقدار بازگشتی). و سپس تابع در اون تغییر انجام بده. معمولا مناسبه که حافظه مربوطه توسط برنامه فراخواننده اختصاص داده شده باشه و تابع درون dll فقط مقادیر درون حافظه را ست کند.
یک مثال عملی از این کار تابع GetWindowText یا GetComputerName درون API ویندوز است. (یا هر تابع دیگری از ویندوز که رشته بر می گرداند)
اگر احیانا هنوز قصد استفاده از vb رو دارید، من نمی تونم کمکی در این زمینه بتون بکنم.