گفتگو هایی در باب سی شارپ

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
سلام استاد علی
ممنون
System.Windows.Media.Effects.BlurEffect را فقط میشه به کنترل ها در wpf نسبت داد؟
به پروژه های ویندوز فرم نمیشه؟
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
ممنون
استاد علی ، من آدرس فایل کلاس های ShellLink (در فایلی بنام Microsoft.OneGet.Utility.dll) را هر چی میگردم پیدا نمیکنم :
ShellLink Class (Microsoft.OneGet.Utility.Platform)

همینطور آدرس کلاس زیررو :
WshShell Class
آدرس فایل شون کجان؟

بعد اینکه برای ترسیمات 3 بعدی در محیط win form ، از opengl باید استفاده کنیم؟ از کلاس های wpf (که از directx استفاده میکنن) هم میشه در ترسیمات 3 بعدی در win form استفاده کرد؟
بعد اینکه تفاوت رابط (مثل opengl و ...) با موتور رندر 3 بعدی چیه؟
 
آخرین ویرایش:

the_king

مدیرکل انجمن
ممنون
استاد علی ، من آدرس فایل کلاس های ShellLink (در فایلی بنام Microsoft.OneGet.Utility.dll) را هر چی میگردم پیدا نمیکنم :
ShellLink Class (Microsoft.OneGet.Utility.Platform)

همینطور آدرس کلاس زیررو :
WshShell Class
آدرس فایل شون کجان؟

کجا رو می گردید دنبالشون؟ مساله جایی است که دنبالشون می گردید. یک وقت هست که یک مجموعه ای رو دارید و میدونید باید داخلش موردی باشه ولی پیدا نمی کنید، یک وقت هست که اصلا موردی رو دانلود نکردید و ندارید، ولی داخل فایل های موجودتون دنبالش می گردید. بالاخره هر موردی یا از ابتدا در مجموعه ای هست و باید باشه یا موردی هست که باید دانلود کنید. مورد دانلودی هم یا فایل های مستقل ئه یا یک Package ئه که باید از طریق Package Manager اضافه بشه به پروژه تون که بعدا در فولدر packages اش بگردید دنبال فایل مورد نظر.
http://oneget.org/oneget.zip
MSBuild.Extension.Pack 1.9.1
بعد اینکه برای ترسیمات 3 بعدی در محیط win form ، از opengl باید استفاده کنیم؟ از کلاس های wpf (که از directx استفاده میکنن) هم میشه در ترسیمات 3 بعدی در win form استفاده کرد؟
از OpenGL و DirectX و هر موتور سه بعدی دیگری که سراغ دارید. WPF قابلیت سه بعدی قدرتمندی نداره اما برای استفاده از قابلیت های سه بعدی محدودش هم خودش که مستقیم در WinForms استفاده نمیشه، خروجی WPF تون رو بصورت کنترل ای در WinForms نمایش می دهید. فکر کنم قبلا هم در مورد WindowsFormsIntegration و ElementHost صحبت کردیم که یک کنترل WPF رو داخل WinForms نمایش بده.

بعد اینکه تفاوت رابط (مثل opengl و ...) با موتور رندر 3 بعدی چیه؟
سوالی نیست که مربوط به این تاپیک باشه.
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
کجا رو می گردید دنبالشون؟ مساله جایی است که دنبالشون می گردید. یک وقت هست که یک مجموعه ای رو دارید و میدونید باید داخلش موردی باشه ولی پیدا نمی کنید، یک وقت هست که اصلا موردی رو دانلود نکردید و ندارید، ولی داخل فایل های موجودتون دنبالش می گردید. بالاخره هر موردی یا از ابتدا در مجموعه ای هست و باید باشه یا موردی هست که باید دانلود کنید. مورد دانلودی هم یا فایل های مستقل ئه یا یک Package ئه که باید از طریق Package Manager اضافه بشه به پروژه تون که بعدا در فولدر packages اش بگردید دنبال فایل مورد نظر.
http://oneget.org/oneget.zip
MSBuild.Extension.Pack 1.9.1
ممنون استاد علی
از کجا متوجه شدید که فایل وجود نداره و باید دانلود کرد؟
کد زیر رو نوشتم :

کد:
            Microsoft.OneGet.Utility.Platform.ShellLink shellLink = new Microsoft.OneGet.Utility.Platform.ShellLink(@"E:\Project\Visual Studio\C#.Net\Saved Project\0 WPF Practice\WPF Practice\bin\Debug\WPF Practice.exe");
            shellLink.TargetPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
ولی ارور زیر رو میده :
System.Runtime.InteropServices.COMException: 'Error HRESULT E_FAIL has been returned from a call to a COM component.'
مشکل از کجاست؟ با شی ساختن هم مشکلی نداره (برای قضیه ی com)


از OpenGL و DirectX و هر موتور سه بعدی دیگری که سراغ دارید. WPF قابلیت سه بعدی قدرتمندی نداره اما برای استفاده از قابلیت های سه بعدی محدودش هم خودش که مستقیم در WinForms استفاده نمیشه، خروجی WPF تون رو بصورت کنترل ای در WinForms نمایش می دهید. فکر کنم قبلا هم در مورد WindowsFormsIntegration و ElementHost صحبت کردیم که یک کنترل WPF رو داخل WinForms نمایش بده.

بله گفتید
ممنون
 

the_king

مدیرکل انجمن
ممنون استاد علی
از کجا متوجه شدید که فایل وجود نداره و باید دانلود کرد؟

از اسمبلی و namespace هاشون دیگه. لازم هم نیست اسامی رو حفظ باشید. ویژوال استدیو Object Browser داره، می توانید لیست هر چی اسمبلی استاندارد هست رو در هر نسخه NET Framework. که خواستید داخلش ببینید. وقتی یک موردی مثل Microsoft.OneGet داخلش نیست پس یا جزو یک Package ئه یا یک کتابخونه که باید دانلود بشه. در گوگل سرچش بکنید هم بالاخره به یک منبع دانلود ختم میشه.
کد زیر رو نوشتم :
کد:
            Microsoft.OneGet.Utility.Platform.ShellLink shellLink = new Microsoft.OneGet.Utility.Platform.ShellLink(@"E:\Project\Visual Studio\C#.Net\Saved Project\0 WPF Practice\WPF Practice\bin\Debug\WPF Practice.exe");
            shellLink.TargetPath = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
ولی ارور زیر رو میده :
System.Runtime.InteropServices.COMException: 'Error HRESULT E_FAIL has been returned from a call to a COM component.'
مشکل از کجاست؟ با شی ساختن هم مشکلی نداره (برای قضیه ی com)
مشکل از اینجا است که شما مسیر یک فایل اجرایی رو دادید به ShellLink و گفتید این یک لینک (فایل lnk) ئه و فراخوانیش کن. خوب معلومه نمیتونه.
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
مشکل از اینجا است که شما مسیر یک فایل اجرایی رو دادید به ShellLink و گفتید این یک لینک (فایل lnk) ئه و فراخوانیش کن. خوب معلومه نمیتونه.

ممنون
من متوجه نشدم
خودش توی ورودی string ای میخواد تحت عنوان filename . پس یعنی مسیر کامل فایلی که میخوایم ازش میانبر درست کنیم رو بدیم دیگه؟ و توی TargetPath هم مسیر پوشه (یا مسیز کامل) ای که میخوایم اونجا میانبر درست کنیم دیگه؟
 

the_king

مدیرکل انجمن
ممنون
من متوجه نشدم
خودش توی ورودی string ای میخواد تحت عنوان filename . پس یعنی مسیر کامل فایلی که میخوایم ازش میانبر درست کنیم رو بدیم دیگه؟ و توی TargetPath هم مسیر پوشه (یا مسیز کامل) ای که میخوایم اونجا میانبر درست کنیم دیگه؟
حدسی که نباید برای خودتون کار متد رو تفسیر کنین، از روی چه مستنداتی اینطوری متوجه شدید که filename مسیر فایلی است که میخواهید برایش میانبر بسازید؟ اصلا این متد سازنده که اجرا می کنید برای ساختن میانبر ئه؟ مسیر فایل میانبر ئه. در ضمن همون Microsoft.OneGet.Utility.Platform.ShellLink مگه متد static ئه CreateShortcut نداره؟
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
حدسی که نباید برای خودتون کار متد رو تفسیر کنین، از روی چه مستنداتی اینطوری متوجه شدید که filename مسیر فایلی است که میخواهید برایش میانبر بسازید؟ اصلا این متد سازنده که اجرا می کنید برای ساختن میانبر ئه؟ مسیر فایل میانبر ئه. در ضمن همون Microsoft.OneGet.Utility.Platform.ShellLink مگه متد static ئه CreateShortcut نداره؟

ممنون
والا توی مستنداتش که چیزی را توضیح نداد :
ShellLink.CreateShortcut Method (Microsoft.OneGet.Utility.Platform)
بله متد استاتیک CreateShortcut داره ولی این هم همون ارور رو میده
بله . برای ساخت میانبر هه . میخوام یه میانبر از فایل exe را مثلا در دسکتاپ (یا هر جای دیگه) بذارم
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
آها اشتباه کردم :green:
پسوند فایل های میانبر که lnk هستن ، این کلمه مخفف link هه . بنابراین جایی که گفتش linkFileName یعنی مسیر فایل میانبر با پسوند lnk رو که میخوایم ایجاد کنیم رو بهش بدیم (مثلا در دسکتاپ و ...) و آرگومان دوم که targetFileName هست را باید مسیر فایلی که قصد میانبر ساختن ازش رو داریم بدیم (مثلا فایل exe و ...) .
description هم توضیح برای زمان tooltip هست
workingdirectory و argument رو نمیدونم برای چیه
 

the_king

مدیرکل انجمن
آها اشتباه کردم :green:
پسوند فایل های میانبر که lnk هستن ، این کلمه مخفف link هه . بنابراین جایی که گفتش linkFileName یعنی مسیر فایل میانبر با پسوند lnk رو که میخوایم ایجاد کنیم رو بهش بدیم (مثلا در دسکتاپ و ...) و آرگومان دوم که targetFileName هست را باید مسیر فایلی که قصد میانبر ساختن ازش رو داریم بدیم (مثلا فایل exe و ...) .
description هم توضیح برای زمان tooltip هست
workingdirectory و argument رو نمیدونم برای چیه
workingdirectory مسیری است که موقع شروع اجرا به عنوان مسیر فعلی بکار میره. یعنی ()System.IO.Directory.GetCurrentDirectory . وقتی در Command Prompt در یک مسیر فولدری قرار دارید و از اونجا برنامه ای در مسیر دیگری رو اجرا می کنید workingdirectory مسیری است که در اون قرار دارید، نه مسیری که فایل اجرایی در اون قرار داره.
argument هم که نیازی به توضیح نداره، سوئیچ ها و پارامتر های Command Line ای است که موقع اجرا باید به اون برنامه ارسال بشه.
 

the_king

مدیرکل انجمن
ممنون
والا توی مستنداتش که چیزی را توضیح نداد :
ShellLink.CreateShortcut Method (Microsoft.OneGet.Utility.Platform)
بله متد استاتیک CreateShortcut داره ولی این هم همون ارور رو میده
بله . برای ساخت میانبر هه . میخوام یه میانبر از فایل exe را مثلا در دسکتاپ (یا هر جای دیگه) بذارم
مستنداتش اون نیست البته. مستنداتش اون MSBuild Extension Pack Help.chm ای است که در فولدر کنار MSBuild.ExtensionPack.dll قرار داره.
در ضمن شما رفتید سراغ یک پک جانبی MSBuild که خودش قراره در ویژوال استدیو در توسعه پروژه بکار بره. برای استفاده خود ویژوال استدیو است بیشتر، نه شما. یک Wrapper عمومی و متعارف سیستم نیست.
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
ممنون استاد علی
میگم اگه اشتباه نکنم ، قبلا گفتین wrapper به زبان ساده ، همون کد سی شارپی هه (ما با کد سی شارپ اش کار داریم) که درون خودش با کدهای unmanaged کار میکنه و فراخونی شون میکنه . درسته؟
اگه آره ، پس خیلی از کلاس های دات نت (حالا با یک یا چند واسطه) ، باید همون wrapper باشن در حقیقت . درسته؟
چون کلاس ویندوز فرم هم که در نظر بگیریم ، باز خودش داره توابع winapi را صدا میزنه برای ساخت ویندوز و فرم
 

the_king

مدیرکل انجمن
ممنون استاد علی
میگم اگه اشتباه نکنم ، قبلا گفتین wrapper به زبان ساده ، همون کد سی شارپی هه (ما با کد سی شارپ اش کار داریم) که درون خودش با کدهای unmanaged کار میکنه و فراخونی شون میکنه . درسته؟
اگه آره ، پس خیلی از کلاس های دات نت (حالا با یک یا چند واسطه) ، باید همون wrapper باشن در حقیقت . درسته؟
چون کلاس ویندوز فرم هم که در نظر بگیریم ، باز خودش داره توابع winapi را صدا میزنه برای ساخت ویندوز و فرم
شما از Wrapper استفاده می کنید ولی نه با کد #C اش کاری دارید و نه لازمه کد #C اش رو داشته باشید. اینکه کتابخانه یا کلاسی هم بصورت گسترده از API استفاده کنه برای اینکه Wrapper محسوب بشه کافی نیست، Wrapper همیشه یک نمونه میخواد که برای اون Wrapper باشه و تا حد امکان ساختار و تعاریف نمونه اصلی رو حفظ می کنه، نه قابلیت خاصی بهش اضافه می کنه و نه بجز موارد ضروری تغییراتی میده. اغلب توابع API ساختارشون ساخت یافته است و بر پایه کد زبان C ئه که اصلا شیء گرایی نداره و کلاس نداشتند که حالا براشون Wrapper ای ایجاد بشه. وقتی یک مجموعه از متد های مرتبط تحت عنوان یک کلاس در NET. وجود داره به ندرت نمونه Unmanaged ای داشته که برای اون Wrapper ای باشه، یک ساختار جدید ئه، کاملا متکی به API هم باشه باز هم Wrapper محسوب نمیشه.
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
استاد علی ، وقتی بخوام ستاپ بسازم ، dll هایی مثل Microsoft.OneGet.Utility.dll یا Microsoft.Win32.TaskScheduler.dll را باید توی رجیستری ثبت کنم؟
یعنی اینا الان کمپوننت هستن که باید ثبت بشن یا نه؟
کلا از کجا باید تشخیص بدم کدوم dll باید ثبت شه؟
برای ثبت یه کمپوننت در رجیستری هم در نرم افزار Advanced Installer ، باید در تصویر زیر ، دومین گزینه را انتخاب کنم دیگه (register assembly) ؟ درسته؟ :

1.JPG

بعد اینکه گزینه ی سوم برای چیه؟
بعد اینکه میشه نرم افزارهای دات نت رو جوری ستاپ اش را ساخت که مثل خروجی اتوپلی ، نیازی به ستاپ نداشته باشن و مثل پروژه ی عادی ، با یه کلیک اجرا بشه؟

-----------------

بعد اینکه خروجی پروپرتی Application.ExecutablePath ، بصورت زیر هست :

کد:
E:\Project\Visual Studio\C#.Net/Saved Project/Windows Update Disabler/Windows Update Disabler/bin/Debug/Windows Update Disabler.exe

به عملگر اسلش و بک اسلش دقت کنید . قبل از پوشه ی C#.Net عملگر \ و بعدش عملگر / داره . ولی اشکالی ایجاد نمیشه و درست کار میکنه . اما چرا این اتفاق افتاد؟ اولین باره میبینم
 
آخرین ویرایش:

the_king

مدیرکل انجمن
استاد علی ، وقتی بخوام ستاپ بسازم ، dll هایی مثل Microsoft.OneGet.Utility.dll یا Microsoft.Win32.TaskScheduler.dll را باید توی رجیستری ثبت کنم؟
یعنی اینا الان کمپوننت هستن که باید ثبت بشن یا نه؟
کلا از کجا باید تشخیص بدم کدوم dll باید ثبت شه؟
برای ثبت یه کمپوننت در رجیستری هم در نرم افزار Advanced Installer ، باید در تصویر زیر ، دومین گزینه را انتخاب کنم دیگه (register assembly) ؟ درسته؟ :

مشاهده پیوست 112100
بعد اینکه گزینه ی سوم برای چیه؟
کلا رجیستر شدن مختص کتابخانه های COM ئه، همون ActiveX ها که Interop دارند، DLL های Native که ActiveX نیستند یا DLL هایی که NET. میسازه مثل COM نیستند که GUID و مشخصاتشون ثبت بشه، چیزی برای رجیستر شدن در بخش COM ندارند. مشخصات اسمبلی های NET. میتونه در GAC ثبت بشه ولی جهت استفاده اشتراکی و مدیریت نسخه، نه الزاما برای اینکه بتونه اجرا بشه.
وقتی یک کتابخانه NET. رو برای استفاده اختصاصی پروژه خودتون بکار بردید که در فولدر برنامه خودتونه دلیلی برای قرار گرفتن در GAC نداره، چون اولا همراه برنامه تون Uninstall شدنی ئه و ثانیا چون استفاده اشتراکی نداره، اما یک اسمبلی که تعداد زیادی برنامه مشترکا بکار می برند، دیگه در فولدر برنامه شما نباید باشه، در مسیر مشترک اسمبلی ها در سیستم قرار میگیره و ثبت میشه تا هر ارتقاء ای که براش انجام بشه برای همه برنامه ها مشترکا باشه.
بعد اینکه میشه نرم افزارهای دات نت رو جوری ستاپ اش را ساخت که مثل خروجی اتوپلی ، نیازی به ستاپ نداشته باشن و مثل پروژه ی عادی ، با یه کلیک اجرا بشه؟
هیچ تضمینی نیست که خروجی اتوپلی با یک کلیک اجرا بشه و بخاطر رجیستر نبودن یک موردی کرش نکنه. برنامه تحت NET. ای هم ممکنه داخلش انواع کتابخانه ها بکار برده باشه که نیاز به نصب شدن داشته باشند یا نداشته باشند. قبلا هم در این مورد صبحت کردید و پاسخ مفصل دادم. بهتره بجای گفتگوی دوباره مطالب قبلی رو مرور کنید.
بعد اینکه خروجی پروپرتی Application.ExecutablePath ، بصورت زیر هست :

کد:
E:\Project\Visual Studio\C#.Net/Saved Project/Windows Update Disabler/Windows Update Disabler/bin/Debug/Windows Update Disabler.exe

به عملگر اسلش و بک اسلش دقت کنید . قبل از پوشه ی C#.Net عملگر \ و بعدش عملگر / داره . ولی اشکالی ایجاد نمیشه و درست کار میکنه . اما چرا این اتفاق افتاد؟ اولین باره میبینم

تا آنجایی که به سیستم عامل ویندوز مربوطه هم \ و هم / به عنوان جداکننده مسیر معتبره. اما اینکه چرا URI رو به عنوان مسیر فایل اینطوری ایجاد کرده اطلاعی ندارم.
 

SajjadKhati

کاربر فعال <A href="http://forum.majidonline.com/f
ممنون استاد علی
درباره ی ساخت نسخه ی پرتابل ، اگه این سئوالی که میپرسم تکراری هه ، نمیخواد جواب بدین (چون چند صفحه ی آخر رو دیدم ، فعلا چیزی پیدا نکردم تا کامل مبتحث رو مرور کنم . البته میدونم در این باره قبلا پرسیدم ولی شاید همین سئوال نباشه) :
نسخه ی پرتابل و ایناها ، قابلیت ساخت اش با نرم افزارهای ستاپ ساز (advanced installer) هست؟
وقتی که کسی ویروس مینویسه و بخواد ویروس اش را توی فایلی ادغام کنه ، باز هم با همین نرم افزارهای ستاپ ساز انجام میده . درسته؟ (البته فقط برای اطلاعات عمومی میخوام بدونم)
-----------------------------------
سئوال مهمی که قبلا پرسیده بودم ولی به نتیجه ی خاصی نرسیدم و میخوام ببینم این بار به نتیجه میرسم یا نه ، اینکه واقعا هیچ راهی نداره که windows form ای (یا هر کنترل دات نت دیگه ای) که میسازیم رو در کدهای unmanaged (مثل اتوپلی) استفاده کنیم (توسط کدهای unmanaged ، این فرم را جابجا و هر عمل دیگه ای روش انجام بدیم)؟ البته با تابع setparant در api میشه یه کارهای ولیه باهاش کرد ولی خیلی ساده هست .
یعنی مثلا این object پلاگین هایی (پلاگین های شامل کنترل های بصری) که برای اتوپلی نوشته شد رو فقط با زیان های native مینویسن و هیچ object پلاگین ای رو نمیشه از سی شارپ برای اتوپلی نوشت؟
یعنی این windows form یا کنترل های های بصری دات نت را نمیشه اول به عنوان کنترل activex تبدیل کرد و این کنترل activex رو بعد در اتوپلی استفاده کرد؟
البته یه کم مقالات در این باره پیدا کردم :
WinFormIntegration Sample: Shows How to Host a Windows Forms User Control in an MFC Application
و
Windows Forms and Unmanaged Applications
و
Windows Forms and Unmanaged Applications Overview

ممنون
 

the_king

مدیرکل انجمن
ممنون استاد علی
درباره ی ساخت نسخه ی پرتابل ، اگه این سئوالی که میپرسم تکراری هه ، نمیخواد جواب بدین (چون چند صفحه ی آخر رو دیدم ، فعلا چیزی پیدا نکردم تا کامل مبتحث رو مرور کنم . البته میدونم در این باره قبلا پرسیدم ولی شاید همین سئوال نباشه) :
نسخه ی پرتابل و ایناها ، قابلیت ساخت اش با نرم افزارهای ستاپ ساز (advanced installer) هست؟

به نظر خودتون سوال مربوط به گفتگو هایی در باب سی شارپ ئه؟
وقتی که کسی ویروس مینویسه و بخواد ویروس اش را توی فایلی ادغام کنه ، باز هم با همین نرم افزارهای ستاپ ساز انجام میده . درسته؟ (البته فقط برای اطلاعات عمومی میخوام بدونم)
ویروس کامپیوتری یک تعریف و قابلیت مشخصی داره، ویروس ذاتا قابلیت آلوده کردن سایر فایل ها رو داره، بنا بر این برای آلوده کردن یک فایل اجرایی یا بقول شما ادغام شدنش نیازی به یک نرم افزار Setup ساز نداره.
سئوال مهمی که قبلا پرسیده بودم ولی به نتیجه ی خاصی نرسیدم و میخوام ببینم این بار به نتیجه میرسم یا نه ، اینکه واقعا هیچ راهی نداره که windows form ای (یا هر کنترل دات نت دیگه ای) که میسازیم رو در کدهای unmanaged (مثل اتوپلی) استفاده کنیم (توسط کدهای unmanaged ، این فرم را جابجا و هر عمل دیگه ای روش انجام بدیم)؟ البته با تابع setparant در api میشه یه کارهای ولیه باهاش کرد ولی خیلی ساده هست .
یعنی مثلا این object پلاگین هایی (پلاگین های شامل کنترل های بصری) که برای اتوپلی نوشته شد رو فقط با زیان های native مینویسن و هیچ object پلاگین ای رو نمیشه از سی شارپ برای اتوپلی نوشت؟
یعنی این windows form یا کنترل های های بصری دات نت را نمیشه اول به عنوان کنترل activex تبدیل کرد و این کنترل activex رو بعد در اتوپلی استفاده کرد؟
البته یه کم مقالات در این باره پیدا کردم :
WinFormIntegration Sample: Shows How to Host a Windows Forms User Control in an MFC Application
و
Windows Forms and Unmanaged Applications
و
Windows Forms and Unmanaged Applications Overview

ممنون
شما مشکلات و محدودیت های اتوپلی رو نمی توانید بدون پلاگین نویسی دور بزنید، اتوپلی به هیچ وجه بدون استفاده از پلاگین هاش نمی تونه با یک شیء خارجی ارتباط برقرار کنه، شما با یک جستجوی ساده می توانید هزاران کنترل ActiveX در اینترنت یا مواردی در کامپیوتر خودتون پیدا کنید که حتی در ویژوال بیسیک 6 هم قابل استفاده باشند، ولی اتوپلی بدون پلاگین مناسب و خاص اون کنترل نمی تونه ازش استفاده کنه. این که ربطی به Managed و Unmanaged و #C و ActiveX و COM نداره، محدودیت خود اتوپلی ئه. محیط برنامه نویسی که نیست، باید در حد توانایی های خودش انتظار داشته باشید. بحث محدودیت های اتوپلی رو بیخودی قاطی #C نکنید، شما پلاگینی نساختید که هم حالا سر ارتباطش با #C راهنمایی بخواهید. ارتباط بین اتوپلی و یک کنترل ActiveX مثل کنترل Windows Media Player یک ارتباط مستقیم که نیست، با پلاگین خودش ارتباط برقرار می کنه. بدون اون پلاگین که با ActiveX ارتباطی نداره.

فرم یک پنجره استاندارد ویندوز ئه، مدیریت اش توابع مشخصی در API داره و کمبودی هم در این مورد نداره. "هر عمل دیگه ای" هم محدوده و توصیف مشخصی نداره، همانطور که نمی توانید کاری کنید که در #C پنجره فرم تون 25 درجه به سمت چپ دوران پیدا کنه در API ویندوز هم همچین تابعی پیش بینی نشده. اینکه به نظرتون توابع اولیه خیلی ساده است یک توصیف فنی نیست، به نظرتون باید با پنجره چیکار می شد کرد؟ پنجره آب میوه که نمی گیره، یا جابجا میشه یا تغییر ابعاد میده، عنوانش تغییر می کنه و ...
 

SU-57

Active Member
سلام استاد علی و با تاخیر زیاد سال جدید رو به شما تبریک میگم
یه کتاب آموزش الگوریتم هست به نام clrs. می خوام بدونم خوندن این کتاب رو توصیه می کنید نه صرفا در شروع راه بلکه برای مراحل پیشرفته.
غیر از این کتاب اگه کتاب یا کتاب های آموزش الگوریتمی می شناسید که برای پیشرفت در برنامه نویسی سی شارپ موثر هستن رو لطفا نام ببرید. همچنین کتاب های مرتبطی که من مبتدی آگاهی ندارم.
 

the_king

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

جدیدترین ارسال ها

بالا