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

نام تاپیک: چطور یه عدد رو در فایل جایگزین یک عدد دیگه بکنم؟

  1. #1
    کاربر دائمی آواتار mbshareat
    تاریخ عضویت
    آبان 1387
    محل زندگی
    شهر مقدس قم-چهارمردان-کوچه 37
    پست
    962

    چطور یه عدد رو در فایل جایگزین یک عدد دیگه بکنم؟

    Procedure FileChangeFirstWord(FileName:String;W1,W2:Word);
    var
    fs: TFileStream;
    I:LongWord;
    W:Word;
    begin
    fs := TFileStream.Create(FileName, fmOpenReadWrite or fmShareDenyNone);
    try
    For I:=0 To (fs.Size Div 2)-1 Do
    Begin
    //fs.Seek(I, soFromBeginning);
    fs.Position:=I;
    fs.ReadBuffer(W,2);
    If W=W1 then
    Begin
    fs.Position:=I;
    fs.WriteBuffer(W2,2);
    Exit;
    End;
    End;
    finally
    fs.free;
    end;
    end;



    سلام
    چرا برنامه به خط TFileStream.Create گیر میده.
    آیا استفاده از fs.Position به جای seek اشکال داره؟
    و وقتی Exit اجرا میشه فایل بسته خواهد شد؟

    کسی میتونه کد درست رو برام بذاره؟

  2. #2
    کاربر دائمی آواتار golbafan
    تاریخ عضویت
    اردیبهشت 1388
    محل زندگی
    در قلب دوستان
    پست
    2,018

    نقل قول: چطور یه عدد رو در فایل جایگزین یک عدد دیگه بکنم؟

    شما وقتی بافر رو میخونی خود به خود پوینتر 2 واحد میره جلو و برای همین روی پوزیشن خطا میخوره
    در ضمن شما دو بایت میخونی باز میری روی I ؟؟

  3. #3
    کاربر دائمی آواتار mbshareat
    تاریخ عضویت
    آبان 1387
    محل زندگی
    شهر مقدس قم-چهارمردان-کوچه 37
    پست
    962

    نقل قول: چطور یه عدد رو در فایل جایگزین یک عدد دیگه بکنم؟

    بله متوجه شدم که نباید دو تا دو تا بخونم.اما سوال اصلیم این نبود.برنامه به سطر ایجاد فایل گیر میده. نمی دونم کدی که قبل از این پروسیجر اجرا میشه ایراد داشته یا نه؟(باید این پروسیجر رو مستقل اجرا کنم)
    Function FileHasWord(FileName:String;W:Word):Boolean;
    var
    fs: TFileStream;
    I:LongWord;
    W2:Word;
    begin
    Result:=False;
    fs := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
    try
    For I:=0 To (fs.Size Div 2)-1 Do
    Begin
    //fs.Seek(I, soFromBeginning);
    fs.Position:=I;
    fs.ReadBuffer(W2,2);
    If W2=W then
    Begin
    Result:=True;
    Exit;
    End;
    End;
    finally
    fs.free;
    end;
    end;



    اینکه می پرم جای قبلی به خاطر جایگزنینه.
    میتونم ابتدای پروسیجر بالا رو اینطور تغییر بدم
      fs := TFileStream.Create(FileName, fmOpenReadWrite);
    try
    For I:=0 To fs.Size-1 Do


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

  4. #4
    کاربر دائمی آواتار mbshareat
    تاریخ عضویت
    آبان 1387
    محل زندگی
    شهر مقدس قم-چهارمردان-کوچه 37
    پست
    962

    نقل قول: چطور یه عدد رو در فایل جایگزین یک عدد دیگه بکنم؟

    کسی راهنمایی نمی کنه؟
    چطور یک عدد رو در فایل پیدا کنیم و با یک عدد دیگه جایگزین کنیم؟

  5. #5
    کاربر دائمی آواتار golbafan
    تاریخ عضویت
    اردیبهشت 1388
    محل زندگی
    در قلب دوستان
    پست
    2,018

    نقل قول: چطور یه عدد رو در فایل جایگزین یک عدد دیگه بکنم؟

    این کد نحوه باز کردن فایل و نمایش بایت ها بصورت HEX هست
    امیدوارم کمک کنه

    procedure TForm1.FileViewHex(FileName: string);
    const
    MaxLineLength = 16 * 3; // each byte displayed with 2 characters plus a space
    BufferSize = 4096;
    var
    DataFile: File;
    Buffer: array[1..BufferSize] of byte;
    BytesRead, I: integer;
    HexByte, Line: string;
    begin
    AssignFile(DataFile, FileName);
    Reset(DataFile, 1);
    Memo1.Clear;
    while not Eof(DataFile) do begin
    BlockRead(DataFile, Buffer, BufferSize, BytesRead);
    Line := '';
    for I := 1 to BytesRead do begin
    HexByte := IntToHex(Buffer[I], 1); // convert a byte to hexadecimal
    // Add leading 0 if result is shorter than 2, easier to read...
    if Length(HexByte) < 2 then HexByte := '0' + HexByte;
    Line := Line + HexByte + ' ';
    if Length(Line) >= MaxLineLength then begin
    Memo1.Lines.Add(Line);
    Line := '';
    end;
    end;
    end;
    // If not already added, add last line to TMemo
    if Length(Line) > 0 then Memo1.Lines.Add(Line);
    CloseFile(DataFile);
    end;

  6. #6
    کاربر دائمی آواتار mbshareat
    تاریخ عضویت
    آبان 1387
    محل زندگی
    شهر مقدس قم-چهارمردان-کوچه 37
    پست
    962

    نقل قول: چطور یه عدد رو در فایل جایگزین یک عدد دیگه بکنم؟

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

  7. #7

    نقل قول: چطور یه عدد رو در فایل جایگزین یک عدد دیگه بکنم؟

    سلام. غیر ممکن چی؟
    دقیقا مشکلت در کدوم قسمته؟ طول عددت رو از قبل می دونی یا نه؟
    توابع تبدیل تاریخ با دقت 5000 سال
    پذیرش پروژه، کامپوننت، آموزش برنامه نویسی (دلفی، اس کیو ال، ..) -> 09123780840

    دوستای گلم حمایت کنید : https://cafebazaar.ir/app/com.nikanmehr.marmarxword/


    نرم افزار پخش مویرگی

  8. #8

    نقل قول: چطور یه عدد رو در فایل جایگزین یک عدد دیگه بکنم؟

    درود
    اول باید باید ساختار فایل رو بدونید.ساختار فایل متنی هستش یا باینری؟
    اگر متنی بود مثلا خط به خط یا کلمه به کلمه میخونید . بعد که عدد مورد نظر پیدا شد ، جایگزینش میکنید .
    اگر باینری بود باید توجه کرد به چه فرمتی ذخیره شده .

تاپیک های مشابه

  1. پاسخ: 7
    آخرین پست: شنبه 26 مرداد 1392, 00:34 صبح
  2. پاسخ: 4
    آخرین پست: سه شنبه 14 شهریور 1391, 16:39 عصر
  3. پاسخ: 0
    آخرین پست: دوشنبه 02 مرداد 1391, 04:44 صبح
  4. پاسخ: 4
    آخرین پست: سه شنبه 17 اسفند 1389, 07:16 صبح
  5. پاسخ: 3
    آخرین پست: پنج شنبه 04 تیر 1388, 21:35 عصر

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

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