سلام دوستان
من یک dll نوشتم ولی وقتی در برنامه از اون استفاده می کنم پیغام خطا زیر را می دهد
invalid pointer operation
لطفا مرا راهنمایی کنید
سلام دوستان
من یک dll نوشتم ولی وقتی در برنامه از اون استفاده می کنم پیغام خطا زیر را می دهد
invalid pointer operation
لطفا مرا راهنمایی کنید
اگه DLL را با دلفی نوشتید، می تونید از طریق IDE دلفی در زمان اجرای برنامه، اون DLL را دیباگ کنید و محل وقوع خطا را پیدا کنید.
فکر می کنم شما فرم مادر را مشخص نکرده اید ...در هر صورت از مقاله DLL در سایت ModiranGroup.Com یک بازدیدی بکن شاید بدردت بخوره
خدا می داند این خطا از چند جای مختلف می تونه باشه. کمی بیشتر در مورد زمان رخداد خطا و خود dll و توابع و عملیاتش توضیح دهید.
در مورد اين dll يك مقاله فارسي نداريد بزارين از اين دربه دري راحت شيم
درباره DLL در سایت مطلب زیاد هست:در مورد اين dll يك مقاله فارسي نداريد بزارين از اين دربه دري راحت شيم
http://www.google.com/cse?cx=0102772...D%3A11&x=0&y=0
وَ سَيَعْلَمُ الَّذِينَ ظَلَمُوا [آل محمد حقهم] أَيَّ مُنْقَلَبٍ يَنْقَلِبُونَ - الشعراء (227)
و ظالمین [حق آل محمد (ص) ] به زودی خواهند دانست که به کدام بازگشتگاه بازخواهند گشت.
علي اقا مدير ارشد شايد باورتون نشه درست يك هفته است من كل سايت شمارو زيرور رو كردم نتونستم جواب سوالمو پيدا كنم سوال من اينه
يك webbowser در برنامه بزاريم و بجاي اينكه به برنامه ادرس سايتو بديم (ادرسي كه داخل webbrowser باز ميشه) يك فايل dll در كنار برنامه بزاريم و ادرس را داخل اون فايل بنويسيم يعني اگه بخواهيم سايتي كه داخل webbrowser باز ميشه رو عوض كنيم فقط اون فايل dll را عوض كنيم و خودبخود سايت هم عوض بشه
بابا بخدا ديگه خسته شدم از بس از اينو واون كمك خواستم و فقط شنيدم كه جستجو كن من قبول دارم تو سايت هست ولي سواد من نميرسه كاملا مطالبو باز كنمو جوابمو از توش دربيارم من تازه دلفي رو شروع كردم خواهشا اگه زحمتي نيست كد داخل فايل dll و كد داخل برنامه اصلي را برام بنويسيد
مثال عملي
library Project2;نحوه استفاده
uses
SysUtils,
Classes;
{$R *.res}
procedure WebsiteAddress(Address: PChar);
begin
StrCopy(Address, 'https://barnamenevis.org/forum')
end;
exports
WebsiteAddress;
begin
end.
procedure TForm1.Button1Click(Sender: TObject);چندتا نکته:
var
DLL: HMODULE;
WebsiteAddress: procedure(Address: PChar);
Buffer: array[0..255] of Char;
begin
DLL := LoadLibrary('Project2.dll');
if DLL <> 0 then
try
WebsiteAddress := GetProcAddress(DLL, 'WebsiteAddress');
if Assigned(WebsiteAddress) then
begin
WebsiteAddress(Buffer);
Edit1.Text := Buffer;
end;
finally
FreeLibrary(DLL);
end;
end;
1-لحن طلبکارانه لحن مناسبي براي صحبت نيست.
2-اگه با اين کار ميخوايد که امنيت رشته آدرس وبسايت رو بالا ببريد، اصلا کارآمد نيست.
3-در استفاده از dllها، موقع کار با حافظه مراقب باشيد. بافرها به موقع تخصيص داده بشه و به موقع آزاد بشه.
4-رشتهها(AnsiString و WideString) و همچنين آرايههاي ديناميک(x:array of y)، براي انتقال بين دو تا تصوير اجرايي مناسب نيستند (مثلا بين dll و برنامه اجرايي)
اگه خواستيد توابع ديگهاي هم تعريف کنيد، روش همينه. فقط اسمشو تو بخش exports بياريد.
آخرین ویرایش به وسیله B-Vedadian : سه شنبه 08 مرداد 1387 در 08:03 صبح دلیل: اشتباه کوچک!
مشکل اکثر دوستان این هست که یک سوال چند وجهی دارند، و انتظار دارند در یک تاپیک به تمام آنها یکجا پرداخته شده باشه، یعنی؛ تاپیکی که در آن مستقیما درباره چگونگی خواندن آدرس یک سایت از داخل DLL و نمایش آن در یک WebBrowser بحث شده باشه. خب طبیعی هست که احتمال وجود همچین تاپیکی بسیار کم هست. شما باید خودتان سوالتان را به چند بخش تقسیم کنید، و بعد در سایت دنبال جواب هر بخش بگرید. مثلا:شايد باورتون نشه درست يك هفته است من كل سايت شمارو زيرور رو كردم نتونستم جواب سوالمو پيدا كنم
1- چگونه می توان در دلفی یک DLL ایجاد کرد.
2- چگونه می توان از یک DLL در برنامه استفاده کرد.
3- چگونه می توان یک رشته را از DLL به یک برنامه در حال اجرا ارسال کرد.
4- چگونه می توان یک آدرس وب را در WebBrowser نمایش داد.
و...
اگر سوال خود را به فرض مثال به بخش های بالا تقسیم کرده بودید، متوجه می شدید که همه آنها قبلا در سایت بحث شده اند و برایشان راه حل ارائه شده. به فرض هم اگر یکی از راه حل ها را متوجه نشده بودید، می توانستید سوالتان را در همان تاپیک مطرح کنید.
وَ سَيَعْلَمُ الَّذِينَ ظَلَمُوا [آل محمد حقهم] أَيَّ مُنْقَلَبٍ يَنْقَلِبُونَ - الشعراء (227)
و ظالمین [حق آل محمد (ص) ] به زودی خواهند دانست که به کدام بازگشتگاه بازخواهند گشت.
دوست عزيز لحن من به هيچ وجه طلب كارانه نبود بلكه لحن التماسي بود
همه اين كار هارو انجام دادم ولي وقتي button1 را كليك ميكنم هيچ اتفاقي نمي افته اگر كدها ناقص است لطفا كاملش كنيد در ضمن من هيچ اثري از webbrowser در اين كدها نديدم جايگاه اين webbrowser در داخل اين كدها كجاست و edit1 چيكار ميكنه
باز هم من اگه لحنم بدبود معذرت ميخوام اين سايت اميد همه بچه هاي اماتور و حرفه اي در زمينه برنامه نويسي است
من این کد رو خودم تست کردم. اگه رو فرم یه TButton به نام Button1 و یه TEdit به نام Edit1 بذارید، متن تابع رو هم برای OnClick همون Button1 بذارید، وقتی رو Button1 کلیک کنید، تو Edit آدرس سایت میآد.
دو حالت داره، یا شما تابع Button1Click رو به OnClick مربوط به Button نسبت ندادید، یا فایل project2.dll رو به آدرس پروژه exeی مربوطه کپی نکردید.
در مورد WebBrowser هم باید بگم که ربطی به این موضوع نداره. مقصود یک سورسه که نحوه استفاده از DLLها رو بصورت عملی تو دلفی نشون بده. وقتی آدرس رو داشته باشید، هر کاری که خواستید میتونید باهاش بکنید.
یه نکته هم بگم. دلفی بصورت پیشفرض میتونه با array[0..n] of Charها بصورت PChar کارکنه. این یعنی میتونید اونها رو به Stringها هم نسبت بدید.
حق با شماست. (الآن اصلاح شده همون پست رو ببینید)
بلافاصله قبل begin و end. بنویسید exports WebsiteAddress;