تبلیغات :
ماهان سرور
آکوستیک ، فوم شانه تخم مرغی ، پنل صداگیر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




نمايش نتايج 1 به 9 از 9

نام تاپيک: مشکلی در باز کردن فایل در ویژوال سی :

  1. #1
    داره خودمونی میشه cpplover's Avatar
    تاريخ عضويت
    Dec 2007
    محل سكونت
    esfarayen
    پست ها
    127

    14 مشکلی در باز کردن فایل در ویژوال سی :

    در ویژوال 2005 هروقت از CFile استفاده می کنم با یک خطا مواجه میشم ممکنه لطفا راهنمایی بدید؟
    مثلا فرض کنید من کد زیر رو در تابع مربوط به یک دکمه نوشتم :
    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

    در خطی که Bold شده خطای زیر ایجاد میشه :
    error C2664: 'CFile::Open' : cannot convert parameter 1 from 'const char [10]' to 'LPCTSTR'

    این کدها در ویژوال 6 به راحتی جواب می داد اما باز هم باید با مشکلات ویژوال جدید دست و پنجه نرم کنم!
    با تشکر

  2. #2
    حـــــرفـه ای
    تاريخ عضويت
    Aug 2006
    پست ها
    793

    پيش فرض

    در کد باید از T_ استفاده کنین :

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

  3. #3
    داره خودمونی میشه cpplover's Avatar
    تاريخ عضويت
    Dec 2007
    محل سكونت
    esfarayen
    پست ها
    127

    پيش فرض

    خیلی عالی بود من رو از این مشکل هم مثل همیشه نجات دادید!!!
    دو تا سوال دیگه هم دارم :

    اول اینکه می خوام بدونم وقتی که در فایل دارم چیزی می نویسم چطور می تونم به مکان نما دستور بدم که به خط بعد بره ؟
    چون من مجبورم اطلاعاتی رو از یک edit text وارد یک فایل کنم اما میخوام هر چیزی که می نویسم وارد یک خط جداگانه از فایل بشه .
    دستور SeekToEnd هم فکر نکنم بتونم کمکی کنه

    و دوم اینکه چطور میشه از فایل اطلاعات رو به صورت خطی خوند ؟مثلا اگه من بخوام کل خط سی ام فایلی رو بخونم باید چکار کنم ؟

    از شما مثل همیشه تشکر می کنم

  4. #4
    حـــــرفـه ای
    تاريخ عضويت
    Aug 2006
    پست ها
    793

    پيش فرض

    برای اینکه به خط بعد برین کافیه r\n\ رو در Buffer مربوطه بنویسین.

    مثلا به این شکل :

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

    بنابراین کافیه بعد از هر ورود رشته اون رو با r\n\ جمع کنین.
    برای دستیابی به خط مورد نظر هم کافیه تعداد r\n\ رو در فایل مورد نظر بگیردین.

  5. #5
    داره خودمونی میشه cpplover's Avatar
    تاريخ عضويت
    Dec 2007
    محل سكونت
    esfarayen
    پست ها
    127

    پيش فرض

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

    من یک دکمه و یک edit text دارم حالا من میخوام با یک بار فشردن دکمه متن داخل edit به خط اول فایل منتقل بشه و مثلا اگه من 10 بار دکمه رو فشردم (فرض کنید edit خالی باشه) 10 خط مکان نما در فایل پایین بره (حالا فرض کنید در edit چیزی بنویسیم ) و حالا در با فشردن دکمه در خط یازدهم ، رشته موجود در edit نوشته بشه . من کد شما رو به این صورت نوشتم :

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید


    مد create رو به خاطر حذف نشدن اطلاعات فایل اولیه پاک کردم و فایل رو دستی ایجاد کردم .m همان string مربوط به edit می باشد این خط ها رو در تابع دکمه گذاشتم


    با تشکر

  6. #6
    حـــــرفـه ای
    تاريخ عضويت
    Aug 2006
    پست ها
    793

    پيش فرض

    دوباره سلام!

    برنامه چند تا اشکال داشت :

    1- شما در هر بار استفاده از این کد ، فایل text رو دوباره رو نویسی میکنین.
    یکی از راه حل ها اینکه که file رو به صورت private تعریف کنین و از Open در OnInitDialog استفاده کنین:

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    و در تابع OnInitDialog

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

    اشکال دیگه این بود که شما نباید مستقیم r\n\ رو به ar بفرستین.
    به همین دلیل من از CString استفاده کردم. همین طور میتونین از typecast استفاده کنین
    که در کد زیر استفاده شده.
    در Event کلیک یک Button هم کد زیر رو قرار بدین :

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید

    و در آخر قبل از بسته شدن فرم file رو ببندین. (WM_CLOSE)

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    موفق باشین.

  7. #7
    داره خودمونی میشه cpplover's Avatar
    تاريخ عضويت
    Dec 2007
    محل سكونت
    esfarayen
    پست ها
    127

    پيش فرض

    متشکر از جواب شما :

    روش جالبی بود فقط میخوام بدونم تعداد خطوط در یک فایل رو چطور میشه تشخیص داد؟
    چون من مجبورم اطلاعاتی رو که در فایل می نویسم خط به خط وارد listbox کنم به همین خاطر میخوام در یک حلقه for اطلاعات رو خط به خط از فایل بخونم اما خوب مسلما باید بدونم چند خط دارم تا اینکه به همون تعداد بار عمل خوندن رو تکرار کنم .

    اما یه چیز دیگه : در نرم افزارهای مختلف مثلا یه cheek box ممکنه واسه یک دیالوگ وجود داشته باشه با این عنوان : don’t show this message again میخواستم بدونم در این حالت اطلاعات در فایل ذخیره میشه یا نه ؟
    یعنی زمانی که ما اون رو تیک میزنیم اطلاعات در فایل ذخیره میشه ؟
    با تشکر

  8. #8
    حـــــرفـه ای
    تاريخ عضويت
    Aug 2006
    پست ها
    793

    پيش فرض

    میتونین از کد زیر استفاده کنین :

    کد:
    برای مشاهده محتوا ، لطفا وارد شوید یا ثبت نام کنید
    فکر نمیکنم نیاز به توضیحی داشته باشه. فقط من از CArchive استفاده نکردم.



    اما در مورد سوال دومتون:

    بله ، میشه به این روش هم عمل کرد. اما زیاد توصیه نمی کنم.
    بهترین روش برای اینکار ذخیره این اطلاعات در یک Registry Key هست که قبلا M3rz4d عزیز در مورد
    اون توضیح دادن.

  9. #9
    داره خودمونی میشه cpplover's Avatar
    تاريخ عضويت
    Dec 2007
    محل سكونت
    esfarayen
    پست ها
    127

    پيش فرض

    فکر نمیکنم نیاز به توضیحی داشته باشه


    البته من فکر می کنم باشه !!!

    someone عزیز واقعیتش اینه که حکایت من ویادگیری visual دقیقا مثل کسیه که توی یک شهر بزرگ گم شده باشه !!
    هر چند من با مطالعه و کمک شما خیلی چیزا رو تجربه میکنم اما هر روز به چیزهایی برخورد می کنم که اصلا واسم آشنا نیستند و گاهی اوقات احساس می کنم از msdn هم نمی تونم استفاده کنم.

    مثلا از خطوطی که در بالا آوردید من درفهم و یادگیری کدها دچار اشکال شدم
    WCHAR Buffer[ 2048 ];
    ::ZeroMemory(Buffer , sizeof(Buffer));

    مثلا در مورد zeromemory در msdn اینطوری اومده بود:
    The ZeroMemory macro fills a block of memory with zeros.

    میشه بگید پر شدن بلوک های حافظه با صفر چه ربطی به اینجا داره و اصلا علامت :: اول اون چه چیزی رو میرسونه ؟ و میشه راهنمایی بدید چطور میشه ویژوال رو به بهترین شکل (مثل شما ) یاد گرفت ؟

    ممنون میشم منو راهنمایی بدید

Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •