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

نام تاپیک: تبدیل اطلاعات یک فایل متنی (txt) و وارد کردن آنها به بانک اطلاعاتی

  1. #1
    کاربر دائمی آواتار hamid-nic
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    اصفهان
    پست
    813

    Question تبدیل اطلاعات یک فایل متنی (txt) و وارد کردن آنها به بانک اطلاعاتی

    سلام دوستان ، وقتتان بخیر
    یک فایل متنی با پسوند txt داریم با این فرمت :
    فیلد1(6) $ فیلد2(7) $ فیلد3(30) $ فیلد4(30) $ فیلد5(15) $ فیلد6(3) $ فیلد7(2) $ فیلد8(10) $ فیلد9(40)
    (اعداد داخل پرانتز تعداد کاراکتر های فیلد را مشخص می کند )

    به طور مثال :
    174023$1034235$علیزاده $حسین $علی $مرد$63$123 $Hoseinu@yahoo.com
    $8613451$316432عسگری $احمد $هاشم $مرد$65$1335 $ Ha4323@gmail.com
    $7874564$126765حلوایی $نرگس $غلام $زن $66$5432789654$Nar-ha@yahoo.com
    .
    .
    .
    می خواهم این اطلاعات را تبدیل کرده و وارد بانک اطلاعاتی کنم . (یعنی کاربر خودش فایل متنی را انتخاب کنه و برنامه اون را تبدیل کنه) تعداد سطر های این فایل متنی متغیر بوده هر بار بین 100 تا 400 خط است .
    به نظر شما از چه روشی و چگونه این کار را انجام بدم که هم سرعت خوبی و هم دقت خوبی برای این کار داشته باشه .
    فایل نمونه متنی را پیوست می کنم . (فایل را که باز کردید یک بار Ctrl+Shift راست صفحه کلید را بزنید تا متن درست نمایش داده شود)
    باتشکر از این که راهنمایی می کنید .
    فایل های ضمیمه فایل های ضمیمه

  2. #2

    نقل قول: تبدیل اطلاعات یک فایل متنی (txt) و وارد کردن آنها به بانک اطلاعاتی

    400 خط متن چیزی نیست که نگران سرعت پردازشش باشید ، فرمت فایلی هم که دادید چندان پیچیده نیست ، توسط یک TStringList و توابع Copy و PosEX تو یک حلقه متن رو Parse کنید و داخل همون حلقه هر خطی رو که پردازش کردید داخل بانکتون درجش کنید .

  3. #3
    کاربر دائمی آواتار hamid-nic
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    اصفهان
    پست
    813

    نقل قول: تبدیل اطلاعات یک فایل متنی (txt) و وارد کردن آنها به بانک اطلاعاتی

    آقا مجتبی عزیز ممنون از راهنمایی تون .
    میشه یک نمونه بزارید تا بتونم از اون الگو بگیرم و برنامه را پیاده سازی کنم .
    ممنون.

  4. #4

    نقل قول: تبدیل اطلاعات یک فایل متنی (txt) و وارد کردن آنها به بانک اطلاعاتی

    می تونید از خاصیت Delimiter شیء ای مثل StringList استفاده کنید ، یک نمونه ضمیمه کردم ، موفق باشید ...
    فایل های ضمیمه فایل های ضمیمه
    آخرین ویرایش به وسیله Mahmood_M : پنج شنبه 04 آذر 1389 در 20:39 عصر

  5. #5
    کاربر دائمی آواتار hamid-nic
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    اصفهان
    پست
    813

    نقل قول: تبدیل اطلاعات یک فایل متنی (txt) و وارد کردن آنها به بانک اطلاعاتی

    ممنون Mahmood_N جان
    با کدام ورژن نوشته شده من با ورژن 7 باز کردم اما مثل اینکه کامل باز نشد .

  6. #6

    نقل قول: تبدیل اطلاعات یک فایل متنی (txt) و وارد کردن آنها به بانک اطلاعاتی

    با ورژن 2010 ، چیز خاصی داخلش نیست ، چه مشکلی پیش اومد ؟

  7. #7
    کاربر دائمی آواتار hamid-nic
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    اصفهان
    پست
    813

    نقل قول: تبدیل اطلاعات یک فایل متنی (txt) و وارد کردن آنها به بانک اطلاعاتی

    موقع باز کردن خطاهای زیر را داد :
    Error Reading form
    OpenBtn.DoubleBuffered
    OpenBtn.parentDoubleBuffered
    Bitbtn1.DoubleBuffered
    Bitbtn1.parentDoubleBuffered

    موقع اجرا هم به این خط ایراد گرفت :
    Application.MainFormOnTaskbar := True;
    که البته اون خط را حذف کردم و برنامه اجرا شد اما با همون فایلی که در پست اول ضمیمه کردم تست کردم خطای زیر را می دهد
    'ï»؟174023' is not a valid integer value.
    من فکر کنم درست اون Section ها را جدا نمی کنه . نظر شما چیه ؟

  8. #8
    کاربر دائمی آواتار hamid-nic
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    اصفهان
    پست
    813

    نقل قول: تبدیل اطلاعات یک فایل متنی (txt) و وارد کردن آنها به بانک اطلاعاتی

    درحالت عادی وقتی اون فایل متنی که در پست اول ضمیمه کردم را اجرا کنم باید یک بار Ctrl+Shift سمت راست صفحه کلید را یک بار بزنیم تا اطلاعات درست نمایش داده شود فکر کنم وقتی متن را درونStringList لود می کنیم اولا همین مشکل را دارد و بعد هم متن های فارسی بصورت ؟ لود میشه این مشکل ها را چطوری حل کنیم ؟

  9. #9
    کاربر دائمی آواتار hamid-nic
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    اصفهان
    پست
    813

    نقل قول: تبدیل اطلاعات یک فایل متنی (txt) و وارد کردن آنها به بانک اطلاعاتی

    آقا محمود مشکل حل شد .
    Encoding فایل متنی را از UTF8 به Ansi تغییر دادم .
    حالا چطوری باید تشخیص داد که Encoding فایل متنی چیه و اون را به Ansi تبدیل کرد ؟

  10. #10
    کاربر دائمی آواتار hamid-nic
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    اصفهان
    پست
    813

    نقل قول: تبدیل اطلاعات یک فایل متنی (txt) و وارد کردن آنها به بانک اطلاعاتی

    سلام
    دو تا مشکل بوجود اومده :
    1- متن های فارسی وقتی چند قسمتی باشه هر کدام توی یک فیلد میشینه . یعنی مثلا یه نام خانوادگی مثل یوسف علی پور مردانی زاده ، نام یوسف درست در فیلد مربوطه قرار می گیره اما فامیلش توی چهار تا فیلد مختلف قرار می گیره در صورتی که باید علی پور مردانی زاده توی یک فیلد قرار بگیره .
    2- حلقه ی درست اجرا نمیشه یعنی پس از اینکه آخرین فیلد از خط اول را خواند به جای اینکه به خط بعدی بره خطای زیر را میده :
    ---------------------------
    Project1
    ---------------------------
    List index out of bounds (52)
    ---------------------------
    OK
    ---------------------------
    لازم به ذکر است که 52 فیلد در یک خط قرار دادم و تعداد خط ها هم تقریبا 200 خط میشه .
    به نظر شما مشکل کجاست ؟

  11. #11
    کاربر دائمی آواتار hamid-nic
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    اصفهان
    پست
    813

    نقل قول: تبدیل اطلاعات یک فایل متنی (txt) و وارد کردن آنها به بانک اطلاعاتی

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

  12. #12
    کاربر دائمی آواتار hamid-nic
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    اصفهان
    پست
    813

    نقل قول: تبدیل اطلاعات یک فایل متنی (txt) و وارد کردن آنها به بانک اطلاعاتی

    عبارت جدا کننده (Delimiter) درست عمل می کنه . عبارت های جدا شده (DelimitedText) درست تشخیص داده میشه اما تکه عبارت های جدا شده را بصورت واحد فرض نمی کنه یعنی وقتی یک فاصله بین دو کلمه در یک قسمت وجود داشته باشه هر کدام را یک قسمت جدا تشخیص می دهد مشکل اینجاست
    بطور مثال :
    12009$999999$هاشم $رفیعی زاده اراکی $مرد
    در این جا رفیعی را یک قسمت ، زاده را یک قسمت و اراکی را یک قسمت دیگر در نظر می گیره در صورتی که باید باهم باشند .
    این مشکل را چطوری حل کنم ؟

  13. #13

    نقل قول: تبدیل اطلاعات یک فایل متنی (txt) و وارد کردن آنها به بانک اطلاعاتی

    نقل قول نوشته شده توسط hamid-nic مشاهده تاپیک
    عبارت جدا کننده (Delimiter) درست عمل می کنه . عبارت های جدا شده (DelimitedText) درست تشخیص داده میشه اما تکه عبارت های جدا شده را بصورت واحد فرض نمی کنه یعنی وقتی یک فاصله بین دو کلمه در یک قسمت وجود داشته باشه هر کدام را یک قسمت جدا تشخیص می دهد مشکل اینجاست
    بطور مثال :
    12009$999999$هاشم $رفیعی زاده اراکی $مرد
    در این جا رفیعی را یک قسمت ، زاده را یک قسمت و اراکی را یک قسمت دیگر در نظر می گیره در صورتی که باید باهم باشند .
    این مشکل را چطوری حل کنم ؟
    StrictDelimiter شیئی رو که از TStringList مشتق کردید با True مقدار دهی کنید ، مثلا :
    var
    Str: TStringList;
    begin
    Str:= TStringList.Create;
    try
    Str.Delimiter:= '$';
    Str.StrictDelimiter:= True;
    Str.DelimitedText:= '$Sample Text $Man $+9891244566 $www.barnamenevis.org';
    ShowMessage(Str.Text);
    finally
    Str.Free;
    end;
    end;

  14. #14
    کاربر دائمی آواتار hamid-nic
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    اصفهان
    پست
    813

    نقل قول: تبدیل اطلاعات یک فایل متنی (txt) و وارد کردن آنها به بانک اطلاعاتی

    ممنون آقامجتبي الان پشت سيستمم نيستم . امتحان كرده و نتيجه را اعلام مي كنم .

  15. #15
    کاربر دائمی آواتار hamid-nic
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    اصفهان
    پست
    813

    نقل قول: تبدیل اطلاعات یک فایل متنی (txt) و وارد کردن آنها به بانک اطلاعاتی

    آقای تاجیک من از دلفی 7 استفاده می کنم و این خصیصه در دلفی 7 نیست . چه راهی پیشنهاد می کنید تا به نتیجه برسم ؟

  16. #16
    کاربر دائمی آواتار hamid-nic
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    اصفهان
    پست
    813

    نقل قول: تبدیل اطلاعات یک فایل متنی (txt) و وارد کردن آنها به بانک اطلاعاتی

    به جای اون از تکه کد زیر استفاده کردم :
    s2.DelimitedText := '"' + StringReplace(S1.Strings[I], s2.Delimiter, '"' + s2.Delimiter + '"', [rfReplaceAll]) + '"';

    جواب داد به نظرتون مشکلی داره ؟

برچسب های این تاپیک

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

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