PDA

View Full Version : ویژگی های برنامه نویسی ویندوز ویستا



جواد ملاولی
جمعه 13 شهریور 1388, 08:00 صبح
سلام. من در برنامه از کامپوننت AlphaControls استفاده می کنم. از طرفی برای فارسی کردن پیغامهای برنامه یونیت Consts رو در پوشه پروژه قرار دادم. این برنامه در ویندوز xp به درستی کار می کنه. اما در ویندوز ویستا، دلفی 2009 خطا میده و میگه که یونیت sConsts -که از یونیت های کامپوننت Alphacontrols است- رو نمی تونه کامپایل کنه.
سوالم اینه که کدوم ویژگی ویندوز ویستا باعث این خطا میشه-که در xp نیست- و راه حلش چیه؟

vcldeveloper
جمعه 13 شهریور 1388, 08:15 صبح
یونیتی که باید کامپایل بشه، در چه آدرسی قرار داره؟
پیغام خطایی که دریافت می کنید چی هست؟ منظورم خودِ پیغام خطا هست، نه مفهوم آن.

جواد ملاولی
جمعه 13 شهریور 1388, 16:46 عصر
یونیتی که باید کامپایل بشه، در چه آدرسی قرار داره؟
پیغام خطایی که دریافت می کنید چی هست؟ منظورم خودِ پیغام خطا هست، نه مفهوم آن.
سلام آقای کشاورز. مشکل حل شد. ایراد اینجا بود که علاوه بر فایلهای dcu ، به صورت اشتباهی فایلهای pas رو هم در پوشه lib دلفی کپی کرده بودم؛ برداشتمشون و برنامه کامپایل شد. ولی این دفه یه مشکل دیگه پیش اومد و اون همون مشکل راست به چپ کردن پیغام هاست که در یه تاپیک دیگه مطرح کرده بودم. یعنی بدون این کامپوننت برنامه کاملا درسته ولی وقتی از این کامپوننت استفاده می کنم پیغامها راست به چپ نمی شن. برای توضیح بیشتر از هر دو حالت عکس گرفتم. لطفا ببینین.
راستش دارم از ویندوز ویستا خسته می شم. چرا اینقدر اذیت می کنه؟ شاید هم مشکل از ویستا نیست. نمی دونم!:گیج::گیج:

vcldeveloper
جمعه 13 شهریور 1388, 17:56 عصر
مشکل اول بخاطر این بود که دلفی سعی می کرد فایل pas موجود را کامپایل کنه، و چون فایل dcu تولیدی در همان مسیر فایل pas ایجاد میشد، و مسیر فایل پس هم پوشه Lib دلفی بود، و پوشه Lib دلفی هم بطور پیش فرض در Program Files قرار داره، Vista مانع این کار میشد.
در ویستا برنامه ها بطور عادی حق ایجاد/ حذف یا تغییر دادن فایل در پوشه Program Files را ندارند.

مشکل دوم هم به اون کامپوننت مربوط میشه، نه به ویستا.

جواد ملاولی
جمعه 13 شهریور 1388, 19:33 عصر
در ویستا برنامه ها بطور عادی حق ایجاد/ حذف یا تغییر دادن فایل در پوشه Program Files را ندارند.
منظورتون از بطور عادی چیه؟ یعنی راهی برای رفعش وجود داره یا اینکه مجبوریم اولا دلفی رو در یه آدرس دیگه نصب کنیم و ثانیا در فایل Setup که برای برنامه مون میسازیم، به کاربر اجازه ندیم برنامه رو تو این پوشه نصب کنه؟

vcldeveloper
شنبه 14 شهریور 1388, 03:39 صبح
منظورتون از بطور عادی چیه؟
یعنی برنامه باید صراحتا با مجوز Admin اجرا بشه. وقتی برنامه ایی بطور عادی در ویستا اجرا میشه، حتی اگر کاربر مربوطه هم Admin باشه، ویستا بهش مجوزهای Standard User را میده. اگر برنامه ایی نیاز داره که حتما کار خاصی انجام بده که نیاز به مجوز Admin داره، باید به ویستا اعلام کنه. در اون صورت، اگر برنامه بخواد کاری انجام بده که نیاز به مجوز Admin داره، ویستا یک پیغام به کاربر نمایش میده، و اگر کاربر Admin باشه، ازش می خواد که کار برنامه را تایید کنه، و اگر Admin نباشه، ازش میخواد که با حساب Admin لاگین کنه.

جواد ملاولی
شنبه 14 شهریور 1388, 10:51 صبح
یعنی برنامه باید صراحتا با مجوز Admin اجرا بشه.
این صراحتا رو درست نفهمیدم!


اگر برنامه ایی نیاز داره که حتما کار خاصی انجام بده که نیاز به مجوز Admin داره، باید به ویستا اعلام کنه.
چه جوری؟ با کد نویسی میشه این کار رو کرد؟

babakmomeni
شنبه 14 شهریور 1388, 18:27 عصر
با سلام خدمت دوست عزیز آقای ملاولی و کسب اجازه از اساتید
شما برای رفع مشکلات زمان کامپایل دلفی سه راه دارین:
1- از اول دلفی رو توی درایو ویندوز یا سی نصب نفرمایین
2- زمان اجرای دلفی shortcut مربوطه رو با راست کلیک و سپس دستور Run as Administrator اجرا بفرمایین
3- با راست کلیک روی ایکن مربوطه و مسیر : propertiies---compatibility---run this program as administrator باعث بشین که دلفی همیشه با مجوز ادمین اجرا بشه و در زمان کامپایل شدن یونیت ها برای نوشته شدن فایلهای نتیجه در مکانهای ممنوعه ویندوز (البته برای یوزرهای با دسترسی محدود) دچار مشکل نشین.
امیدوارم داستان رو درست متوجه شده باشم و جواب معقولی هم داده باشم

vcldeveloper
شنبه 14 شهریور 1388, 18:59 عصر
این صراحتا رو درست نفهمیدم!
یعنی برنامه باید به سیستم عامل بفهمونه که برای فلان کار نیاز به دسترسی Admin داره. اگر این کار را نکنه، و همینطوری برای خودش اون کار را انجام بده، خطا دریافت میکنه.


چه جوری؟ با کد نویسی میشه این کار رو کرد؟
بله میشه. می تونید درباره برنامه نویسی در ویستا و چگونگی تعامل با UAC در برنامه تحقیق کنید.