نمایش نتایج 1 تا 12 از 12

نام تاپیک: کار بافایل

  1. #1
    محروم شده
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    کرج
    پست
    129

    کار بافایل

    با سلام و تبریک سال نو خدمت همه دوستان

    من می خوام درباره کار با فایل اطلاعات به دست بیارم

    جستجو هم کردم ولی واقعا هیچ مطلب مفیدی پیدا نشد برای نمونه چند تا از لینک ها رو
    میزارم که با دیدنش حتما شما هم به درستی حرفم پی می برید

    https://barnamenevis.org/showth...A7%DB%8C%D9%84
    https://barnamenevis.org/showth...A7%DB%8C%D9%84
    https://barnamenevis.org/showth...A7%DB%8C%D9%84

    لطفا اگه pdf ی یا مطلب مفیدی دارید به ما تازه وارد ها هم بگید

    ممنون

  2. #2
    این پست که مثال خوبی بود چرا می گید چیز بدرد بخوری پیدا نکردم.

  3. #3

    basic file operations
    #include <iostream>
    #include <fstream>
    using namespace std;
    int main () {
    ofstream myfile;
    myfile.open ("example.txt");
    myfile << "Writing this to a file.\n";
    myfile.close();
    return 0;
    }



  4. #4
    کاربر دائمی آواتار ICEMAN
    تاریخ عضویت
    تیر 1383
    محل زندگی
    Hyper-V
    پست
    476
    کتاب C++‎ How to program رو بخون تا کام روا بشی !
    chm ش رو میتونی راحت پیدا کنی

  5. #5
    محروم شده
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    کرج
    پست
    129
    سلام از راهنمایی هر دو دوست عزیز تشکر می کنم

    ولی بازم مشکلم حل نشده

    ببینید من می خوام با فایل یه برنامه دیکشنری بنویسم

    این کدهای بالایی رو هم امتحان کردم ولی مشکلم حل نشده

    به این دلیل که می خوام محتویات فایل مثل access مرتب باشه که من راحت بتونم یه لغت رو جستجوکنم

    ممنون

  6. #6
    دوست عزیز من
    کاری که میخوای بکنی کاریه که من سال پیش میخواستم بکنم. باید تصمیم بگیری که میخوای کارتو ساده انجام بدی یا خوب. اگه اولی رو انتخاب کردی بهتره از یه فایل متنی استفاده کنی که کار باهاش شبیه کار با console هستش و ایجاد و دستکاری اون واقعا سادست. اگه دومی رو انتخاب کردی باید از یه فایل باینری استفاده کنی که فرمت اون رو خودت درست میکنی و انحصاری برنامه ی خودته. یا میتونی از فرمتهای استاندارد که وجود دارند پیروی کنی که خودت یکیشو گفتی که احتمالا مجبور میشی بری دنبال فرمتها و باید کاملا بفهمیشون. من در مورد جزییات مورد آخر اطلاعاتی ندارم. فقط باید بگم که بعضی شرکتهای تا حدودی باز این اطلاعات رو در مورد فرمتهاشون در اختیار برنامه نویسایی مثل تو میذارن.
    در نهایت توصیه ی من یه فرمت ساده و بهینست یا استفاده از hash table که سرعت جستجوتو به order 1 کاهش میده و البته حجم فایلاتو افزایش میده. فرمت خود ساخته ی خودت هم میتونه ایندکس گذاری بشه و کارتو ساده کنه.
    به هر حال استفاده از فایل باینری خودساز دردسر داره که یکی از اونا محدودیت تو سایز رکوردها و سربار اضافیه که تو باید تحملش کنی که در نهایت کارت بدون عیب از آب در میاد.
    هر روشی که انتخاب کردی بگو تا شاید کمکی از من یا سایرین بر بیاد.
    موفق باشی.

  7. #7
    ببینید شما از نوشتن دیکشنری یا باید هدفتون آموزش باشه یا باید هدفتون در آوردن یه چیز خوب باشه:
    اگه هدف اول مد نظرتونه همون فایل باینری به نظرم بهتر باشه و atilla snowman درست میگن انتخاب فرمت ذخیره با خودتونه.
    ولی اگه هدفتون دومیه C++‎ گزینه خوبی واسه این کار نیست.الان دیگه واسه بانک های اطلاعاتی از برنامه های خیلی قویتر و آماده ای استفاده می شه.

  8. #8
    محروم شده
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    کرج
    پست
    129
    سلام

    با این تفاسیر فکر میکنم بهتره از فایل باینری فرمت خود ساخته استفاده کنم

    اگه اطلاعات بیشتری بدید ممنون میشم.

  9. #9
    مثلا برای خوندن اطلاعات از یه فایل باینری:

    #include <iostream>
    #include <fstream>
    using namespace std;
    ifstream::pos_type size;
    char * memblock;
    int main () {
    ifstream file ("example.txt", ios::in|ios::binary|ios::ate);
    if (file.is_open())
    {
    size = file.tellg();
    memblock = new char [size];
    file.seekg (0, ios::beg);
    file.read (memblock, size);
    file.close();
    cout << "the complete file content is in memory";
    delete[] memblock;
    }
    else cout << "Unable to open file";
    return 0;
    }



    برای نوشتن هم:

    file.write (memblock, size);

    memory_block همون اشاره گر کاراکتری قبلیه.

    ios::ate مکان نمای ورود رو به انتهای فایل می فرسته تا با tellg() سایزشو بدست بیاریم.متغیر size‌رو از نوع ifstream::pos_type تعریف کرده بودیم.البته می شد از این کد هم برای این کار استفاده کرد:

    int size;
    size = (int) file.tellg();

    بعد بافر رو به اندازه کل فایل در نظر رفتیم تا جا کم نیاریم برای کار شما باید دید یه کلمه تو دیکشنری چقدر میتونه طویل باشه.

  10. #10
    کاربر دائمی آواتار sasan_vm
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    زاهدان
    پست
    494
    سلام

    با این تفاسیر فکر میکنم بهتره از فایل باینری فرمت خود ساخته استفاده کنم
    پکیجی که در این تاپیک معرفی شده https://barnamenevis.org/showthread.php?t=24701 می تونه ایده خوبی برای طراحی بانک اطلاعاتی توسط برنامه نویس باشه (خود کد هم قابل استفاده و کامل هست).
    ولی پیشنهاد بهتر استفاده از یکی از RDBMS ها است (SQL-Server, MySql,...) در صورتی که در برنامه استفاده از RDBMS ممکن نیست پیشنهاد دوم dbisam است این هم سایتش:
    http://www.elevatesoft.com/dbisam_prodinfo.htm

    موفق باشید.

  11. #11
    محروم شده
    تاریخ عضویت
    بهمن 1386
    محل زندگی
    کرج
    پست
    129
    از دوستان ممنون

    فکر میکنم برای شروع یه آشنایی رو به دست آوردم

    اگر به مشکل برخوردم حتما از اطلاعات دوستان توی همین تاپیک استفاده می کنم

  12. #12
    با سلام مجدد.
    امیدوارم که با فرمت خودت مشکل پیدا نکنی.
    منظورم از فرمت این بود که باید بایت به بایت فایلتو با دقت بنویسی و بدونی که مثلا ایندکست یا تعداد مدخلهات دقیقا کجا (کدوم بایت) کجا ذخیره کردی. سادگی توی بازیابی اطلاعاتت خیلی مهمه. به علاوه کار اصلیت به نظر من اینه که باید اطلاعاتی که از تو فایلت به صورت یه رشته (احتمالا آرایه کاراکتریت) خوندی بتونی به نوع داده ی مورد نظرت تبدیل کنی. در واقع استفاده از فایلهای مناسب برای cast هات سرعتت رو بالا میبره. نمیدونم این توابع رو میشه چطوری میشه پیدا کرد. من یه بار یه تعدادی نوشتم که اگه نتونستی مسالتو با cast ها حل کنی واسط میفرستم.

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •