PDA

View Full Version : پارامتر استاندارد برای DLL



net_ved
پنج شنبه 07 آذر 1387, 11:43 صبح
با سلام
من یه Dll نوشتم که یکسری تابع توش دارم که پارامتر String دارند
حالا می خوام اینو تو زبان VFox9 استفاده کنم ... همه پارامتر ها رو به DLL می شه فرستاد الا String
انگار دارم رشته خالی می فرستم
اشکال از کجاست ؟
این نکته رو بگم که وقتی DLL رو با یه appllication دلفی استفاده می کنم مشکلی نیست اما وقتی با VF استفاده می کنم همه پارامتر ها رو پاس میده الا String

دستوری که تو DLL نوشتم :
Function NA_WriteStr(Str:String):integer;stdcall

دستوری که تو VF نوشتم
DECLARE integer NA_WriteStr IN NADLL.dll
String S1

دنیای دلفی
پنج شنبه 07 آذر 1387, 17:59 عصر
يه كاري بكن به جاي استفاده از String از ShortString يا اگر طولش زياده از PChar استفاده كن احتمال زياد مشكل شما حل خواهد شد . سعي كنيد از String در اكسپورت هاي DLL استفاده نكنيد به دليل مشترك بودن حافظه در اكثر موارد مشكل ساز خواهد بود .

amin_alexi
پنج شنبه 07 آذر 1387, 18:01 عصر
سلام
نوع کار با String در زبانهای مختلف متفاوته !
پاسکال (Delphi ) طول رشته رو در اندیس 0 میزاره و لی زبان C اخر رشته #0 میزاره ...
این یک نمونه رو ببین ...

Function TstDLL:PChar;stdcall;
Begin
Result:='Ali';
End;

باید از نوع Pchar به جای String استفاده کنی ...
تست کن اگه مشکلی داشتی بگو راهنمایی کنم !

net_ved
شنبه 09 آذر 1387, 10:41 صبح
َAmin جان خیلی خیلی ممنون ...
اینم واسه کسایی که این مشکل منو داشتن ...
http://barnamenevis.org/forum/showthread.php?t=130721&highlight=%D8%AA%D8%A8%D8%AF%DB%8C%D9%84+%D8%B1%D8 %B4%D8%AA%D9%87