PDA

View Full Version : DLL & OCX



mehrnoush
یک شنبه 24 شهریور 1387, 18:45 عصر
سلام
می خواستم بدونم از چه راهی میشه فهمید فایهایی که برای ستاپ کردن برنامه لازم داریم تا روی همه سیستم ها جواب بده چه فایهایی هستند و باید در کجا کپی بشن :
( System32 یا جاهای دیگه ) .../.
خیلی ممنون
خیلی خیلی خیلی خیلی مهمه.

اوبالیت به بو
یک شنبه 24 شهریور 1387, 18:53 عصر
اگر از كنترل هاي پيش فرض vb استفاده كنيد نيازي به نصب چيزي نيست اما اگر از پنجره Component كنترلي رو به پروژه اضافه كردين حتماً بايد در كامپيوتري كه قراره اجرا بشه رجيستر بشه.
اين سوال در اين تايپيك هم پرسيده شد:

http://barnamenevis.org/forum/showthread.php?t=122546
با استفاده از برنامه اي كه من گذاشتم شما مي توني كنترل هاي اضافه شده رو نصب كنيد. با كمي تغيير مي تونيد ازش استفاده كنيد

mehrnoush
دوشنبه 25 شهریور 1387, 09:02 صبح
این برنامه ای که شما دارید بدرد کسی می خوره که بدونه چه فایهایی رو باید کپی کنه والی سوال من چیز دیگه ای بود...!
البته اینم بگم که برنامه ی من حتی وقتی ویژوال بیسیک هم رو سیستم نصب باشه بازم اجرا نمیشه و بعد از نصب زمانی که اجرا می کنی این ارور ظاهر میشه :


Run-Time error 53
File not found

Mbt925
دوشنبه 25 شهریور 1387, 12:25 عصر
بحث ساخت Setup بحث پر مشکلیه که معمولا 90% کاربرها باهاش مشکل دارن.

استفاده از نرم افزارهای Setup ساز با بحث سازماندهی فایل های موردنیاز برنامه فرق داره که باید سر فرصت براش یه آموزش بنویسم.

فایل های موردنیاز برنامه 2 دسته هستن:
1- فایل های که سیستم عامل نیاز داره تا بتونه برنامه رو اجرا کنه: مثل OCX ها و DLL ها.
2- فایل هایی که خود برنامه نیاز داره تا بتونه درست عمل کنه.

گروه اول:
فایل های موردنیاز این گروه باید در سیستم عامل مقصد رجیستر بشن که روش های مختلفی برای رجیستر کردن ذکر شده.
برای تشخیص این فایل ها می تونید از پنجره Components و Refrences استفاده کنید. در این پنجره های دنبال گزینه های علامت دار بگردید و مسیرشون رو دنبال کنید (در پایین پنجره ها مسیر نمایش داده شده) تا بدستشون بیارید.

گروه دوم:
فایل های گروه دوم رو فقط خود برنامه نویس می تونه بدرستی مدیریت کنه، برای مثال مشکلی که شما ذکر کردید (File Not Found) از این ناشی میشه که شما عملیاتی رو روی 1 فایل انجام دادید بدون اینکه بررسی کنید آیا اون فایل وجود داره یا نه.
برای مثال برنامه هایی که با فایل های متنی کار می کنن و چیزی رو از اونا می خونن یا درشون می نویسن باید حتما از وجود فایل (هنگام خواندن) مطمئن بشن.

یه روش مناسب و بسیار ساده برای اطمینان از وجود فایل:

وقتی فایل از نوه Input باز میشه، وجود/عدم وجودش بررسی نمیشه که می تونه باعث بروز خطا بشه.

برای رفع این مشکل قبل از اینکه فایل رو از نوع Input باز کنید، اون رو از نوع Binary باز کنید و ببندید، با این کار اگه فایل وجود نداشته باشه، ساخته میشه.





Dim intFreeNum As Integer

intFreeNum = FreeFile
Open [FilePath] For Binary As #intFreeNum
Close #intFreeNum

Open [FilePath] For Input As #intFreeNum
[Do Input Function]
Close #intFreeNum

mehrnoush
دوشنبه 25 شهریور 1387, 18:48 عصر
خیلی ممنون از توضیح کاملتون
اما مشکل من حل نشد چون من اصلا از فایلهای گروه دوم هیچ استفاده ای تو برنامم نکردم

xxxxx_xxxxx
سه شنبه 26 شهریور 1387, 07:41 صبح
Run-Time error 53

File not found


این ارور ناشی از استفاده از دستورات کار با فایل و فراخوانی اونهاست. مگه شما نمیگید:


برنامه ی من حتی وقتی ویژوال بیسیک هم رو سیستم نصب باشه بازم اجرا نمیشه



خوب پروژه تونو باز کنید و از اونجا برنامه رو اجرا کنید ببینید رو کدام خط ارور میده.

mehrnoush
سه شنبه 26 شهریور 1387, 10:33 صبح
بابا پروژه من با خود vb کار می کنه و هیچ اروری نمیده اما وقتی نصبش می کنی حتی زمانی که Vb رو سیستم نصب باشه بازم کار نمی کنه و ارورو میده

r0ot$harp
سه شنبه 26 شهریور 1387, 13:54 عصر
بابا پروژه من با خود vb کار می کنه و هیچ اروری نمیده اما وقتی نصبش می کنی حتی زمانی که Vb رو سیستم نصب باشه بازم کار نمی کنه و ارورو میده


دوست عزیز مطمئا این خطا در زمانی رخ می دهد که فایلی از برنامه ناقص باشد . مطمئا باشین که DLL , OCX چیزی این وسط رو زمین جا افتاده و شما اونو آدرس دهی درست نکرده اید .

اگر امکان داره برنامه خودتون و اینجا قرار دهید تا دوستان روش بحث کنند و اگر مشکل خیلی سخت بود واسش راه حلی پیدا کنند .




باتشکر احسان

A.Eimani
سه شنبه 26 شهریور 1387, 14:14 عصر
سلام هموطن

من فكر ميكنم به خاطر اين باشه كه محل قرار دادن كامپايل برنامه چون با محل اصلي برنامه فرق ميكنه اين مشكل پيش اومده

شما برنامه exe رو كنار پروژه بزار و اجرا كن ببين بازم ارور ميده يا نه؟

mf_engineer
شنبه 30 شهریور 1387, 03:14 صبح
دوست عزیز چند وقت پیش من هم مشکل شما رو داشتم که یکی از دو ستان زحمت کشیدن و این راه حل رو پیشنهاد کردن و جواب داد شما هم امتحان کنین



___

عزیزم برای اینکار شما باید OCX ها رو کنار برنامه بزارید و در کنار برنامه یک فایل با پسوند
Bat. بزارید مثلا Register.Bat و توش این چیز را رو تایپ در ضمن جایی که نوشته OCXName نام OCX های بکار گرفته شده رو بنویسید. در مثال زیر دو تا OCX بکار رفته شده شما می تونید به تعداد OCX خودتون این کار رو انجام بدید.

ابتدا برنامه notepad را باز کنید و توش این ها رو تایپ کنید.



xcopy /y OCXName.OCX %systemroot%\system32\




xcopy /y OCXName2.OCX %systemroot%\system32\




regsvr32 %systemroot%\system32\OCXName.ocx



regsvr32 %systemroot%\system32\OCXName2.ocx



و با نام Register.Bat ذخیره کنید. زمانی که برنامه رو نصب کردید از کاربر بخواهید بر روی فایل کلیک کند. تا با مشکلی روبرو نشود.

__________________
_______________