PDA

View Full Version : نام اصلی برنامه



Batman
شنبه 12 آبان 1386, 11:33 صبح
با سلام
دوستان چجوری میشه نام اصلی فایل اجرایی رو پیدا کرد
منظور اینکه
من توی برنامه ام با زدن یه کلید دوباره برنامه خودم رو از آدرس اصلی باز میکنم
حالا یه مشکلی هست اگر نام فایل اصلی مثلا Project1.exe باشه با دستور زیر برنامه دوباره توی یه صفحه جدید باز میشه

winexec(getcurrentdir + '\project1.exe',1);
با اجرای دستور بالا برنامه به شرطی باز میشه که آدرس درست باشه
خوب حالا اگر مثلا نام project1 به مثلا test تغییر کنه باید از کجا فهمید
امیدوارم که منظورم رو رسونده باشم
با تشکر

hossein taghi zadeh
شنبه 12 آبان 1386, 11:58 صبح
با سلام

تابع ParamStr، که ورودی آن یک عدد است، پارامتر متناظر آن عدد در CommandLine را بر می‌گرداند.
برای مثال ;(ParamStr(0 مسیر و نام فایل اجرای پروژه را برمی‌گرداند.

شما می‌توانید از این تابع به این صورت استفاده کنید:

WinExec(ParamStr(0), 1);

AlirezaBahredar
شنبه 12 آبان 1386, 13:30 عصر
دوست عزیز تجربه نشان می ده که از تابع Getcurrentdir تا اونجا که میشه استفاده نکنی بهتره...(تجربه شخصی خودم)
اما برای حل مشکل شما می تونی از این روش استفاده کنی

WinExec(pchar(ExtractFilePath(Application.ExeName) +'\'+ExtractFileName(Application.ExeName)),SW_NORM AL);

hr110
شنبه 12 آبان 1386, 14:15 عصر
همانطور که علیرضا هم گفتند بهتر از getcurrentdir استفاده نشود ، چرا که با اولین انتخاب فایل یا فولدر در برنامه(در صورت وجود/نیاز) این مسیر تغییر کرده و مسیر اجرای فایل را هم نخواهد داد، ضمناً اگر فایل اجرایی شما از یک مسیر دیگر باشد این مقدار صحیح نبوده و با exctract کردن مقدار paramstr(0) به نتیجه مطلوبتری خواهید رسید.

Mahmood_M
شنبه 12 آبان 1386, 14:32 عصر
جوابهای دوستان کامل و جامع بود اما کسی اصل جواب رو نگفت !
برای پیدا کردن نام فایل اجرایی از Application.ExeName استفاده میشه :

Application.Exename;

موفق باشید ...

hossein taghi zadeh
شنبه 12 آبان 1386, 14:48 عصر
با سلام


جوابهای دوستان کامل و جامع بود اما کسی اصل جواب رو نگفت !
برای پیدا کردن نام فایل اجرایی از Application.ExeName استفاده میشه :
خود Application.ExeName از (ParamStr(0 استفاده می کند.


function TApplication.GetExeName: string;
begin
Result := ParamStr(0);
end;

Hamid_PaK
شنبه 12 آبان 1386, 17:50 عصر
پیرو بحث ParamStr نیز از GetCommandLine استفاده می کند.

یا حق ...