PDA

View Full Version : اشکال در اجرای برنامه نوشته شده درمحیط برنامه نویسی



amirkazem
دوشنبه 13 اردیبهشت 1395, 17:35 عصر
باسلام
برنامه دلفی XE3 را مدتهاهست که استفاده می کنم. اخیراً داشتم فرمهای یک برنامه راتنظیم می کردم که متوجه شدم (خودِ برنامه دلفی XE3) دچارمشکل شده به این صورت که درپوشه win32 وشاخه Debug فایل اجرایی برنامه(prohect1) رانمی سازد.

XE3راچندین بار حذف ونصب می کنم که باموفقیت نصب میشه(طبق روال دوسال اخیر) وپروژه های جدیدهم می تونم شروع کنم ولی درهنگام تست برنامه (درمحیط کدنویسی) برنامه اجرانمیشه ودر قسمت (Message ) پیغام پیدانکردن (کنترل دات رس) رامی ده که تصویرضمیمه مربوط به همین ارورهستش. دوستان محبت بفرمایید راهنمایی کنیدکه واقعاً چند روزی هستش که حالم گرفته شده.

ممنونم ازهمه!

mahdi.sagga
دوشنبه 13 اردیبهشت 1395, 17:57 عصر
منم یه بار اینجوری شده بودم آخرشم مجبور شدم ویندوز عوض کنم .

amirkazem
دوشنبه 13 اردیبهشت 1395, 18:11 عصر
سلام، شمن تشکر،
آیاویندوزعوض کردید، مشکل برطرف شد؟

Mahmood_M
دوشنبه 13 اردیبهشت 1395, 19:57 عصر
در این لینک (https://forums.embarcadero.com/thread.jspa?messageID=818234) راه حلی ارایه شده

mahdi.sagga
سه شنبه 14 اردیبهشت 1395, 03:16 صبح
آره برطرف شد ولی بعد از عوض کردن ویندوز آخرین نسخه rad stdio رو نصب کردم .

یه راه دیگه ام داره اگه میخواین ویندوز عوض نکنین
اسم اون فایل هایی رو که میگه پیدا نمیشه تو درایو C جستجو کن بعدش اونارو 2 جا کپی کن یکی داخل برنامه خودت و یکی هم تو system 32
----------------------------------------------------------------------------------------------------------------------------------------------------------------

الان که به عکست دقت کردم دیدم اسم فرمت form2 هست یعنی موقع new project فرمت با اسم form2 شروع میشه این خودش اشکاله پس قبل از انجام مراحل بالا اول اطلاعات داخل این فولدرو پاک کن ببین درست نشد مراحل بالا رو انجام بده


C:\Users\Documents\Embarcadero\Studio\Projects

Mahmood_M
سه شنبه 14 اردیبهشت 1395, 05:48 صبح
الان که به عکست دقت کردم دیدم اسم فرمت form2 هست یعنی موقع new project فرمت با اسم form2 شروع میشه این خودش اشکاله پس قبل از انجام مراحل بالا اول اطلاعات داخل این فولدرو پاک کن ببین درست نشد مراحل بالا رو انجام بده

اشکالی وجود نداره !
اگر در مسیر پیشفرض ذخیره پروژه های دلفی فایلهای مربوط به Project1 ذخیره شده باشه برای جلوگیری از تکراری شدن نام فایلها در مسیر ذخیره، به صورت پیشفرض نام ها به project2 و 3 و ... تغییر میکنه
...
این مشکلات عموما به متغیرهای عمومی ویندوز برمی گرده یا نام یونیت ها که در نسخه های جدید دلفی گروه بندی شده
دلفی برای پیدا کردن کامپایلر و برخی مسیرهای خاص خودش از متغیرهای عمومی ویندوز ( Environment Variables ) استفاده می کنه
حذف شدن این متغیرها یا تغییر کردن اونها و یا وجود برخی متغیرهای اضافی و تکراری ممکنه باعث پیدا شناخته نشدن مسیرها توسط دلفی بشه

ابوالفضل عباسی
سه شنبه 14 اردیبهشت 1395, 06:10 صبح
اسم اون فایل هایی رو که میگه پیدا نمیشه تو درایو C جستجو کن بعدش اونارو 2 جا کپی کن یکی داخل برنامه خودت و یکی هم تو system 32



اصلا نیازی نیست که این فایل هایی رو که دلفی میخاد پیدا کنه رو در system32 کپی بکنید(این پوشه خطرناکه).در همون مسیر پروژه تون کافیه،ولی این مورد رو چک کن.
در منوی tools->option بروید و به قسمت library مراجعه کنید.
بعد باید قسمت های library path و browsing path بصورت پیش فرض باشه،یعنی آدرس های غیر $ دار در اون موجود نباشه مخصوصا browsing path.

این نظر شخصی من هستش:
هیچ گاه نگذارید که پروژه در پوشه debug بارگذاری بشه(چون ادرس دهی سخت میشه)برای تغییر ادرس در پوشه اصلی پروژه این تغییرات رو اعمال کنید:
به منوی project->option بروید.بخش delphi compiler و ادرسی که در Output directory هست رو پاک کرده و \. رو وارد کنید.
از این بعد فایل exe پروژه تون در مسیر ذخیره سازی پروژه dpr تولید میشه.

hp1361
سه شنبه 14 اردیبهشت 1395, 06:55 صبح
اصلا نیازی نیست که این فایل هایی رو که دلفی میخاد پیدا کنه رو در system32 کپی بکنید(این پوشه خطرناکه).در همون مسیر پروژه تون کافیه،ولی این مورد رو چک کن.
در منوی tools->option بروید و به قسمت library مراجعه کنید.
بعد باید قسمت های library path و browsing path بصورت پیش فرض باشه،یعنی آدرس های غیر $ دار در اون موجود نباشه مخصوصا browsing path.

این نظر شخصی من هستش:
هیچ گاه نگذارید که پروژه در پوشه debug بارگذاری بشه(چون ادرس دهی سخت میشه)برای تغییر ادرس در پوشه اصلی پروژه این تغییرات رو اعمال کنید:
به منوی project->option بروید.بخش delphi compiler و ادرسی که در Output directory هست رو پاک کرده و \. رو وارد کنید.
از این بعد فایل exe پروژه تون در مسیر ذخیره سازی پروژه dpr تولید میشه.


سلام
چرا آدرس دهی سخت میشه؟

ضمن اینکه بعد از کامپایل، کلی فایل ایجاد میشه که این منجر به شلوغی پوشه اصلی برنامه خواهد شد!

ابوالفضل عباسی
سه شنبه 14 اردیبهشت 1395, 07:16 صبح
آدرس دهی رو خودم گفتم.:لبخند:
من ممکنه توی بانک هام ادرس debug داده باشم بعد روی یک سیستم دیگه نباشه،پس اگه مسیر exe نزدیک تر باشه هم شلوغی پوشه کمتر میشه و هم ادرس دهی سرراست میشه.

hp1361
سه شنبه 14 اردیبهشت 1395, 08:13 صبح
آدرس دهی رو خودم گفتم.:لبخند:
من ممکنه توی بانک هام ادرس debug داده باشم بعد روی یک سیستم دیگه نباشه،پس اگه مسیر exe نزدیک تر باشه هم شلوغی پوشه کمتر میشه و هم ادرس دهی سرراست میشه.

با استفاده از کد زیر میتونید آدرس جاری فایل برنامه (همون اگزه) رو بگیرید و استفاده کنید


ExtractFilePath(ParamStr(0))


حالا هرجا دوست دارید اگزه رو بزارید!

ابوالفضل عباسی
سه شنبه 14 اردیبهشت 1395, 09:32 صبح
این روشی که ذکر کرده اید رو خودم استفاده کرده ام.من در بعضی مواقع آدرس برنامه رو توی INI ذخیره میکنم بعد ادرس دهی طولانیه.ولی با این روش ذکر کردم برای بازیابی ادرس یدونه \. می نویسم و دیگر نیازی به

ExtractFilePath(ParamStr(0))
و ... نیست.اما اون طوری باید /win32/debug هم در آدرس باشه که ممکنه یه نفر exe رو جابه جا کنه و به ارور های متوالی بربخوره.اما با این روش \. که با resource کردن ini همراهش اجرا میشه و نیاز به فرمانی که گفتید نیست.
درضمن این بحث مربوط به این سوال که amirkazem گفته مربوط نمیشه.بهتره ادامه ندهیم،من روشی که استفاده میکردم رو ذکر کردم فقط همین.

Mahmood_M
سه شنبه 14 اردیبهشت 1395, 13:35 عصر
اصلا نیازی نیست که این فایل هایی رو که دلفی میخاد پیدا کنه رو در system32 کپی بکنید(این پوشه خطرناکه).در همون مسیر پروژه تون کافیه،ولی این مورد رو چک کن.
در منوی tools->option بروید و به قسمت library مراجعه کنید.
بعد باید قسمت های library path و browsing path بصورت پیش فرض باشه،یعنی آدرس های غیر $ دار در اون موجود نباشه مخصوصا browsing path.

این نظر شخصی من هستش:
هیچ گاه نگذارید که پروژه در پوشه debug بارگذاری بشه(چون ادرس دهی سخت میشه)برای تغییر ادرس در پوشه اصلی پروژه این تغییرات رو اعمال کنید:
به منوی project->option بروید.بخش delphi compiler و ادرسی که در Output directory هست رو پاک کرده و \. رو وارد کنید.
از این بعد فایل exe پروژه تون در مسیر ذخیره سازی پروژه dpr تولید میشه.

... ؟!


این روشی که ذکر کرده اید رو خودم استفاده کرده ام.من در بعضی مواقع آدرس برنامه رو توی INI ذخیره میکنم بعد ادرس دهی طولانیه.ولی با این روش ذکر کردم برای بازیابی ادرس یدونه \. می نویسم و دیگر نیازی به
1

ExtractFilePath(ParamStr(0))

و ... نیست.اما اون طوری باید /win32/debug هم در آدرس باشه که ممکنه یه نفر exe رو جابه جا کنه و به ارور های متوالی بربخوره.اما با این روش \. که با resource کردن ini همراهش اجرا میشه و نیاز به فرمانی که گفتید نیست.
یعنی Resource کردن فایل INI و استخراج آدرس از اون ، راه ساده تریه ؟ نسبت به اینکه بخوایم از اون دستور استفاده کنیم ؟! :)

خواهشا اگر در مورد موضوعی اطلاع دقیق ندارید با لحن مطمئن اشتباهاتتون رو بیان نکنید، برخی از دوستان که در حال یادگیری هستند از همین اشتباهات استفاده می کنند و مسیر اشتباهی میرن
به هر حال ، استفاده از "./" قابل استناد نیست، چون آدرس پیشفرض برنامه ممکنه تغییر کنه مثلا در صورت استفاده از Dialog ها و ...
بهتره آدرس در زمان اجرا استخراج بشه
این بحثی که پیش کشیدید ربطی به موضوع تاپیک نداره، لطفا در مورد موضوع تاپیک نظرتون رو بگید و قبلش از گفته هاتون اطمینان حاصل کنید
در صورت تکرار، پستهای بی ارتباط حذف خواهند شد
موفق باشید

amirkazem
سه شنبه 14 اردیبهشت 1395, 14:56 عصر
باسلام، ضمن تشکرویژه ازتوجه دوستان به رفع مشکل اینجانب، به عرض برسونم که:
بنده تمام پروژه هایی که می نویسم ودرحال کاربرروی آنهاهستم رادردرایومخصوص ودرپوشه ی مخصوصی ذخیره میکنم.ضمن اینکه درهرپروژه(البته سورسش) پوشه های win32و نیز پوشه Debug وجودداره.
ضمن اینکه درهنگام کامپایل کردن برای آدرس دهی جهت اتصال به بانک (که معمولاً اکسس هستش) فقط نام بانک اطلاعاتی موردنظررادرنظرمی گیرم که برنامه درهرسیستمی(کامپیوترهای مقصد) برای اجرای برنامه هیچ مشکلی نداره وفقط کافیه بانک موردنظردرکنارفایل اجرایی وجودداشته باشه.
امامشکل بنده این هستش که حتی سورس برنامه های قبلی راهم که الان درمحیط دلفی(کدنویسی) بازمیکنم باپیغام خطاهایی ازجمله خطاهای موجوددرتصویرزیرمواجه میشم.

hp1361
چهارشنبه 15 اردیبهشت 1395, 02:00 صبح
باسلام، ضمن تشکرویژه ازتوجه دوستان به رفع مشکل اینجانب، به عرض برسونم که:
بنده تمام پروژه هایی که می نویسم ودرحال کاربرروی آنهاهستم رادردرایومخصوص ودرپوشه ی مخصوصی ذخیره میکنم.ضمن اینکه درهرپروژه(البته سورسش) پوشه های win32و نیز پوشه Debug وجودداره.
ضمن اینکه درهنگام کامپایل کردن برای آدرس دهی جهت اتصال به بانک (که معمولاً اکسس هستش) فقط نام بانک اطلاعاتی موردنظررادرنظرمی گیرم که برنامه درهرسیستمی(کامپیوترهای مقصد) برای اجرای برنامه هیچ مشکلی نداره وفقط کافیه بانک موردنظردرکنارفایل اجرایی وجودداشته باشه.
امامشکل بنده این هستش که حتی سورس برنامه های قبلی راهم که الان درمحیط دلفی(کدنویسی) بازمیکنم باپیغام خطاهایی ازجمله خطاهای موجوددرتصویرزیرمواجه میشم.

سلام

شما لینکی که آقای مهری گذاشتن رو خوندی؟ کارهایی که گفته شده اونجا انجام دادی؟

ابوالفضل عباسی
چهارشنبه 15 اردیبهشت 1395, 02:50 صبح
با تشکر از محمود جان که مشکلات ما رو گوش زد میکنند.
من در دلفی VCL از فرمان application.Exename برای اینکه مسیر اگزه رو پیدا کنم استفاده میکنم.
در فایرمانکی ویندوز هم از روشی که hp1361 ذکر کردند استفاده میکنم.اما در اندروید(که این جا مورد بحث نیست)از روشی که ذکر کردم استفاده میکنم چون یک روش دیگه هم وجود داره تا مسیر اصلی پروژه در اندروید و ios رو پیدا کنی که این فایل در root گوشی ذخیره شده و دسترسی نداریم چون نیاز به روت کردن هست.
پس میام از resource کردن یک مسیر پیشفرض در sdcard ایجاد میکنم.که در دلفی یک تابع تعریف کرده ام که \. یعنی یک newfolder در sdcard.
بعد پوزش می خواهم به دلیل اینکه اشتباها آمدم روشی که در اندروید استفاده میکنم رو شرح دادم.:لبخند::لبخند:وگرنه روش اصلی همون روشی است که دوستان ذکر نمودند.

ابوالفضل عباسی
چهارشنبه 15 اردیبهشت 1395, 02:58 صبح
دوست عزیز amirkazem اگر میشه برای اینکه راحت تر بتونیم مشکلتون رو برطرف کنیم،یک قسمت از سورستون که فکر میکنید سالم بوده و کامپایل می شود رو در این تاپیک بگذارید تا بررسی کنیم ببنیم مشکل از دلفی است یا آدرس دهی پیش فرض دلفی و یا ویندوزتون.
من خودم بشخصه براتون بررسی میکنم و بهتون اطلاع میدهم.(احتمالا مشکلی در آدرس دهی پیش اومده که نمی تونه این فایل ها رو پیدا کنه.)

قبل از این کار دلفی رو uninstall کنید و در drive دیگری بجز C نصب کنید و کامپایل بگیرید و ببینید مشکل حل میشه یانه.اگر نشد پروژه تون رو قرار بدهید.(اگر مشکل حل نشد،تنها یک راه می ماند که ویندوز رو تعویض بکنید)

amirkazem
چهارشنبه 15 اردیبهشت 1395, 15:21 عصر
سلام

شما لینکی که آقای مهری گذاشتن رو خوندی؟ کارهایی که گفته شده اونجا انجام دادی؟

بله انجام دادم ولی مشکل حل نشد.

amirkazem
چهارشنبه 15 اردیبهشت 1395, 19:40 عصر
دوست عزیز amirkazem اگر میشه برای اینکه راحت تر بتونیم مشکلتون رو برطرف کنیم،یک قسمت از سورستون که فکر میکنید سالم بوده و کامپایل می شود رو در این تاپیک بگذارید تا بررسی کنیم ببنیم مشکل از دلفی است یا آدرس دهی پیش فرض دلفی و یا ویندوزتون.
من خودم بشخصه براتون بررسی میکنم و بهتون اطلاع میدهم.(احتمالا مشکلی در آدرس دهی پیش اومده که نمی تونه این فایل ها رو پیدا کنه.)

قبل از این کار دلفی رو uninstall کنید و در drive دیگری بجز C نصب کنید و کامپایل بگیرید و ببینید مشکل حل میشه یانه.اگر نشد پروژه تون رو قرار بدهید.(اگر مشکل حل نشد،تنها یک راه می ماند که ویندوز رو تعویض بکنید)



باسلام، به عرض برسونم که تمامی برنامه هایی که قبلاً می نوشتم، همه وهمه بدون هیچ مشکلی کامپایل می شدند.الان که همونها رو هم بازمی کنمف بازهم خطاهای (پیدانکردن کنترل ها وباتن ها و...) رو میده.

دلفی رو هم (uninstall)کردم سیستم هم ریست کردم واینبار دلفی را توی درایو دیگری که فرموده بودیدنصب کردم ولی بازهمان مشکل باقیست.

خُب تنهاراه باقی مانده نصب مجددویندوزهستش.

ازهمتون کمال تشکررادارم.

عیدمبعث روهم به تمامی دوستان تبریک عرض میکنم! عیدتون مبارک!:تشویق::قلب:

Mahmood_M
چهارشنبه 15 اردیبهشت 1395, 20:01 عصر
توی اون لینکی که گذاشته بودم یکی از کاربران اینطوری مشکلش حل شده :


Basically, I had to check my environment variables and delete a value.

1. On Windows 7, right click on my computer
2. Click Properties
3. Select the "Advanced" tab
4. Click on "Environment Variables" button at the bottom of the dialog.
5. In the lower section (System Variables), you will most likely find a variable called "Platform" which has the value of '*AnyCPU*'
6. Delete it.


این مورد رو چک کردید ؟

amirkazem
پنج شنبه 16 اردیبهشت 1395, 13:37 عصر
جناب Mahmood_M مدیرمحترم! سلام، البته ویندوز بنده 8.1 هستش و موردی که شمافرمودیدراهم چک کردم که اصلاً چنین گزینه ای موجودنبود.
ضمن اینکه امروز صبح ویندوزرا عوض کردم(نصب جدید8.1) و سپس Embarcadero یاهمون(Delphi XE3 که قبلاً باهاش کارمیکردم ) وجالب این بودکه برنامه بدون مشکل کارمیکرد.
به نظرم مشکل اززمانی آغاز شدکه ( Fast Report 5) را که نصب کردم ومیخواستم ازقسمت tools/option/delphi option/library/library path وادامه کار وسپس ازقسمت نصب Packageها که بعدازآن همان مشکل قبلی الان داره تکرار میشه.(البته عرض کنم که محتویات پوشه C:\Program Files (x86)\FastReports\fast Report5 را حذف کردم تابجای همان فایلها، فایلهایی که مربوط به فست ریپورت5 بودراجایگزین آنهاکنم.) بعدازاین کاربرنامه به حالت پیدانکردن مسیرها:


Checking project dependencies...
Compiling Project1.dproj (Debug, Win32)
dcc command line for "Project1.dpr"
c:\program files (x86)\embarcadero\rad studio\10.0\bin\dcc32.exe -$O- -$W+ --no-config -M -Q -TX.exe
-AGenerics.Collections=System.Generics.Collections; Generics.Defaults=System.Generics.Defaults;WinType s=Windows;WinProcs=Windows;DbiTypes=BDE;
DbiProcs=BDE;DbiErrs=BDE -DDEBUG -E.\Win32\Debug -I"c:\program files (x86)\embarcadero\rad studio\10.0\lib\Win32\debug";"$C:\Program Files
(x86)\FastReports\LibD17";"C:\Program Files (x86)\FastReports\FastReport 5\LibD177";"c:\program files (x86)\fastreports\libd17"
-LE"C:\Users\Public\Documents\RAD Studio\10.0\Bpl" -LN"C:\Users\Public\Documents\RAD Studio\10.0\Dcp" -N0.\Win32\Debug -NSWinapi;System.Win;Data.Win;
Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;System;X ml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touc h;Vcl.Samples;Vcl.Shell; -O"$$C:\Program Files
(x86)\FastReports\LibD17";"C:\Program Files (x86)\FastReports\FastReport 5\LibD177";"c:\program files (x86)\fastreports\libd17" -R"$$C:\Program Files
(x86)\FastReports\LibD17";"C:\Program Files (x86)\FastReports\FastReport 5\LibD177";"c:\program files (x86)\fastreports\libd17" -U"c:\program files
(x86)\embarcadero\rad studio\10.0\lib\Win32\debug";"$C:\Program Files (x86)\FastReports\LibD17";"C:\Program Files (x86)\FastReports\FastReport
5\LibD177";"c:\program files (x86)\fastreports\libd17" -V -VN -NB"C:\Users\Public\Documents\RAD Studio\10.0\Dcp" -NH"C:\Users\Public\Documents\RAD
Studio\10.0\hpp" -NO.\Win32\Debug Project1.dpr
[dcc32 Error] E1026 File not found: 'Controls.res'
Failed
Elapsed time: 00:00:01.9
اینهم خطاهای موجوددرmessageبرنامه .

ابوالفضل عباسی
چهارشنبه 22 اردیبهشت 1395, 11:13 صبح
لطفا ادرس هایی رو که به library اضافه کرده اید رو پاک کنید و کامپایل بگیرید.
یعنی فایل های fast report رو کامل از دلفی پاک کنید ببینید چه اتفاقی میوفته.