PDA

View Full Version : خطا در استفاده از رشته ها



JalaliMehr
چهارشنبه 23 تیر 1389, 09:39 صبح
سلام دوستان.
علت اينكه هر جور رشته تعريف مي كنم خطا مي گيره.من مي خام MessageBox("my string") رو نشون بده ولي خطا ميده.

error C2664: 'CWnd::SetWindowTextW' : cannot convert parameter 1 from 'char [100]' to 'LPCTSTR'

Nima_NF
چهارشنبه 23 تیر 1389, 15:35 عصر
علت این هست که شما FAQ بخش را مطالعه نکردید:
تغییرات بین VC++‎‎‎6 و نسخه های جدید مانند 2008 / موضوعات تکراری بخش (دسته بندی FAQ) (http://barnamenevis.org/forum/%D8%AA%D8%BA%DB%8C%DB%8C%D8%B1%D8%A7%D8%AA%20%D8%A 8%DB%8C%D9%86%20VC++%E2%80%8E%E2%80%8E%E2%80%8E6%2 0%D9%88%20%D9%86%D8%B3%D8%AE%D9%87%20%D9%87%D8%A7% DB%8C%20%D8%AC%D8%AF%DB%8C%D8%AF%20%D9%85%D8%A7%D9 %86%D9%86%D8%AF%202008%20/%20%D9%85%D9%88%D8%B6%D9%88%D8%B9%D8%A7%D8%AA%20%D 8%AA%DA%A9%D8%B1%D8%A7%D8%B1%DB%8C%20%D8%A8%D8%AE% D8%B4%20%28%D8%AF%D8%B3%D8%AA%D9%87%20%D8%A8%D9%86 %D8%AF%DB%8C%20FAQ%29)

پاسخ FAQ شماره 6 و 7 می باشد

TeacherMath
پنج شنبه 24 تیر 1389, 00:45 صبح
سلام.شما باید از casting استفاده کنید.میتونید.از help استفاده کنید.

محمد فدوی
جمعه 25 تیر 1389, 09:51 صبح
شما برای حل این مشکل چند راه دارید.
مثلاً می تونید از حرف L قبل از مقادیر ثابت استفاده کنید:


MessageBox(L"MyString",L"MyTitle");

البته سه ماکرو هم برای همین کار وجود داره که کاملاً مشابه عملکرد حرف L می باشد و باز هم برای مقادیر ثابت به کار می ره:


TEXT("MyString");

_T("MyString");

__T("MyString");

و با یه کم دقت می تونید بفهمید که به ترتیب از بالا به پایین از روی هم نوشته شده اند و ماکروی آخر هم از روی همان حرف L :لبخند:
ولی راه دیگه تبدیل نوع داده ی شما به داده ی مورد نظر تابع هست. مثلا تابع MessageBox از نوع LPCTSTR استفاده می کنه و به راحتی می تونید مقادیر مورد نظر رو به اون تبدیل کنید.
و راه آخر همونطور که دوستان گفتن استفاده از کلاس CString هستش که خیلی هم انعطاف پذیره.
امیدوارم تونسته باشم جواب کاملی ارائه بدم.:خجالت: