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

نام تاپیک: چگونگی کار با فایلها در دلفی

  1. #1

    چگونگی کار با فایلها در دلفی

    سلام دوستان
    عید همگی مبارک امیدوارم سال خوب و خوشی در انتظار شما باشد
    :flower: :flower: :flower: :flower: :flower: :flower: :flower: :flower: :flower:
    سوال:
    نحوه کار کردن فایلها در دلفی را می خواستم بدانم چجوری است؟ البته فایلهای از نوع text بخصوص ویرایش چنین فایلهایی من فایل متنی رو ایجاد کرده ام باز کردم متنی را به ان اضافه کردم و توانستم محتوای انرا بخوانم ولی برای ویرایش آن نمی دانم چه دستوری رو باید استفاده کنم
    حالا اگر کسی از دوستان جواب سوال من رو می دونه از جوابش کمال تشکر رو دارم
    :flower: :flower: :flower: :flower:

  2. #2
    من فایل متنی رو ایجاد کرده ام باز کردم متنی را به ان اضافه کردم و توانستم محتوای انرا بخوانم ولی برای ویرایش آن نمی دانم چه دستوری رو باید استفاده کنم
    از چه روشی استفاده کردید؟ TFileStream یا روشهای کلاسیک؟

  3. #3
    از چه روشی استفاده کردید؟ TFileStream یا روشهای کلاسیک؟
    فکر کنم از روش کلاسیک باشه همون دستوراتی که توی پاسکال هست از اونها باید استفاده کنم

  4. #4
    از هلپ دلفی:
    If you do specify a file when calling one of the input or output routines that work on text files, the file must be associated with an external file using AssignFile, and opened using Reset, Rewrite, or Append. An exception is raised if you pass a file that was opened with Reset to an output-oriented procedure or function. An exception is also raised if you pass a file that was opened with Rewrite or Append to an input-oriented procedure or function.

    ولی برای ویرایش آن نمی دانم چه دستوری رو باید استفاده کنم
    با توجه به آنچه نقل شد فکر می کنم بهتر باشه به جای اینکه فایل مورد نظرتون رو به صورت متنی باز کنید، بهتر باشه اونرو به صورت مثلا byte یا اساسا بدون نوع مانند زیر باز کنید:
    var
    SomeFile:File;

    به هر حال همواره استفاده از راه حلهای جدید، بهتر و موثرتر خواهد بود.

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

    یه سوال دیگه هم داشتم:
    می شود یه فایل را همزمان هم برای ورودی و هم برای خروجی باز کرد اگر میشه به چه صورت؟ژ

    باز هم ممنون از راهنماییتان

  6. #6
    دوستان اگه لطفی کنید و سوال من رو جواب بدید یک دنیا ممنون می شم چون کار فوری و ضروری است و توی هلپ دلفی هم چیزی پیدا نکردم

  7. #7
    از این کد ایده بگیرید:


    procedure SaveFile(const FileName: TFileName;
    const content: string);
    var
    Stream: TFileStream;
    begin
    Stream := TFileStream.Create(FileName, fmCreate);
    try
    Stream.Write(Pointer(content)^, Length(content));
    except
    Stream.Free;
    raise;
    end;
    Stream.Free;
    end;

    Sample call:

    SaveFile('test.txt', 'ABC'); // Stores "ABC" in the file "test.txt"

  8. #8
    دوست عزیز اگر ممکنه بیشتر راهنمایی کنید

  9. #9
    اساس کار من روی رکوردهاست یک رکورد با پنج فیلد از نوع رشته تعریف کرده ام
    وقتی از روش سنتی پاسکال برای کار با فایلها استفاده می کنید، نباید از فیلدهایی با نوع string در رکورد فایل استفاده کنید. چون نوع string در دلفی نوع خاصی هست و با نوع string در پاسکال فرق داره.
    برای رفع این مشکل می تونید یکی از راههای زیر رو انتخاب کنید:
    1- استفاده از نوع shortstring (همون نوعی که پاسکال هم ازش استفاده می کرد) بجای string برای فیلدها.
    2- استفاده از TFileStream بجای روش قدیمی پاسکال.

    در ضمن اگر هنگام مشاده خطا یکبار F1 رو میزدید، کارتون راحتتر میشد:
    دوستان اگه لطفی کنید و سوال من رو جواب بدید یک دنیا ممنون می شم چون کار فوری و ضروری است و توی هلپ دلفی هم چیزی پیدا نکردم
    از راهنمای دلفی:

    Certain types are treated specially by the compiler on an internal basis in that they must be correctly finalized to release any resources that they might currently own. Because the compiler cannot determine what type is actually stored in a record's variant section at runtime, it is not possible to guarantee that these special data types are correctly finalized.

    program Produce;

    type
    Data = record
    name : string;
    end;

    var
    inFile : file of Data;

    begin
    end.

    String is one of those data types which need finalization, and as such they cannot be stored in a File type.

    program Solve;

    type
    Data = record
    name : array [1..25] of Char;
    end;

    var
    inFile : file of Data;

    begin
    end.

    One simple solution, for the case of String, is to redeclare the type as an array of characters. For other cases which require finalization, it becomes increasingly difficult to maintain a binary file structure with standard Pascal features, such as 'file of'. In these situations, it is probably easier to write specialized file I/O routines.

    :موفق:


    وَ سَيَعْلَمُ الَّذِينَ ظَلَمُوا [آل محمد حقهم] أَيَّ مُنْقَلَبٍ يَنْقَلِبُونَ - الشعراء (227)
    و ظالمین [حق آل محمد (ص) ] به زودی خواهند دانست که به کدام بازگشتگاه بازخواهند گشت.

  10. #10
    سلام
    چگونه می توان در رکورد متغیر از نوع عددی تعریف کرد مثلا DOUBEL
    با چه دستوری می توان اطلاعات عددی را از فایل خواند و در داخل این متغیر قرار داد

  11. #11
    کاربر دائمی آواتار babak869
    تاریخ عضویت
    اسفند 1383
    محل زندگی
    کرمانشاه
    پست
    1,251
    نقل قول نوشته شده توسط شفیعی
    سلام
    چگونه می توان در رکورد متغیر از نوع عددی تعریف کرد مثلا DOUBEL
    با چه دستوری می توان اطلاعات عددی را از فایل خواند و در داخل این متغیر قرار داد
    بستگی داره که بانک اطلاعاتی شمااز چه نوعیه ولی قاعده کلی اینه که شما هنگام تعریف دیتابیس و تنظیم نوع فیلد ها نوع فیلد مورد نظر رو عددی تعریف میکنی و نوع فیلد عددی رو انتخاب میکنی مثلا Double یا BigInt یا Integer
    آخرین ویرایش به وسیله babak869 : دوشنبه 15 خرداد 1385 در 21:30 عصر دلیل: این پست به دلیل تکراری بودن بطور خودکار ادغام شده است.

  12. #12
    سلام
    من یک برنامه با VB دارم که فایلی با ساختار زیر می سازد حالا می خواهم در دلفی برنامه بنویسم که این فایل را بخواند و اطلاعات آن را در یک STRINGRID نمایش دهم


    Private Type MapFileStructure
    StationName As String
    Xutm As Double
    Yutm As Double
    Hutm As String
    Dutm As String
    GroupName As String
    End Type

  13. #13
    کاربر دائمی آواتار Hamid_PaK
    تاریخ عضویت
    تیر 1384
    محل زندگی
    تهران
    پست
    1,125
    بسیار ساده است روش کار همان است که علی جان گفتند ...

    type
    TmiRecord = record
    signature: array[0..2] of Char;
    version: double;
    end;

    var
    head_data: TmiRecord;
    begin
    ..
    file_stream.Position = ??? // your start head information position
    file_stream.Read(Pointer(head_data), SizeOf(head_data));
    ShowMessage( FloatToStr( head_data.version ));
    ..
    end;


    یا حق ...

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

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