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

نام تاپیک: مشکل با متغییر رشته ...

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

    مشکل با متغییر رشته ...

    با سلام : شرمنده دیگه نمی دوستم باید چی سرچ کنم که پیدا بشه ...
    من دارم یک برنامه می نویسم که باید در یک جای یک فایل یکسری رشته ذخیره کنم ولی به یک مشکلی برخوردم !!!
    نوع ذخیره سازی نوشته ها در این رشته باید به گونه ای باشه که بین تمامی حروف یک حرف وجود داره که اون کاراکتر 0 هست !!!
    وقتی در یک متغییری رشته ای بعد از یک کاراکتر 0 باشه تصور می شود رشته پایان یافته ...
    حالا چطوری باید رشته رو پر کرد که در هنگام نوشتن در فایل باینری بین حروف کاراکتر 0 قرار بگیره و تمام رشته نیز نوشته شود ؟؟؟

    [f.a.r.s.i] = [#$66#$00#$61#$00#$72#$00#$73#$00#$69]
    آیا متغییر خاصی این قابلیت رو دارد ؟؟؟

    با تشکر ، یا حق ...

  2. #2
    ShortString نباید با Null مشکلی داشته باشه، اما طولش محدود به 255 کاراکتر هست.

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

    str_tmp: array[0..10] of char;
    ..
    FileWrite( var_file, str_tmp, SizeOf(str_tmp) );

    نمی دونم چطوری پرش کنم که از این روش مسخره استفاده نکنم ؟؟؟

    str_tmp[0] := #50;
    str_tmp[1] := #0;
    str_tmp[2] := #60;
    ...
    str_tmp[10] := #90;


    یا حق ...

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

    procedure set_doted_name(name: String; var out_name: array of Char; count: Integer);
    var
    i: Integer;
    begin
    for i := 0 to (count)-1 do begin
    if i mod 2 = 0 then begin
    out_name[i] := name[(i div 2)+1];
    end else begin
    out_name[i] := #0;
    end;
    end;
    end;

    set_doted_name( 'test2', str_tmp, SizeOf(str_tmp) );
    // str_tmp => #$74#$00#$65#$00#$73#$00#$74#$00#$32


    یا حق ...

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

    با تشکر ، یا حق ...

  6. #6
    نیاز به تابع نداره که خود دلفی برات این کار رو انجام میده یعنی اگر مقدار String رو بریزی توی یک wideString کامپیلر خودش این کار رو میکنه و همینطور برعکس اما در برعکس دلفی با توجه به Locale سیستمی که روش هست عمل تایپکست رو انجام میده ، که ممکنه باعث از دست دادن دیتا بشه (در زبانهای غیر انگلیسی).

  7. #7
    کاربر دائمی آواتار Hamid_PaK
    تاریخ عضویت
    تیر 1384
    محل زندگی
    تهران
    پست
    1,125
    اگر مقدار String رو بریزی توی یک wideString کامپیلر خودش این کار رو میکن
    متغییر من از نوع PWideChar هست !!!
    و همین طوری با مقدار دهی کار نکرد ، تست کردم این عمل با روال StringToWideChar بدرستی صورت می گیرد ...

    با تشکر ، یا حق ...

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

  1. تغییر ارتفاع lineبا تغییر ارتفاع Textbox در گزارش
    نوشته شده توسط payam59 در بخش Access
    پاسخ: 22
    آخرین پست: یک شنبه 03 شهریور 1387, 15:41 عصر
  2. تغییر اندازه ارتفاع QRShape با تغییر ارتفاع DetailBand
    نوشته شده توسط mojtaba_z در بخش برنامه نویسی در Delphi
    پاسخ: 3
    آخرین پست: پنج شنبه 07 تیر 1386, 07:49 صبح
  3. تغییر Toolbar با تغییر Thems ویندوز XP
    نوشته شده توسط na3er-faraji در بخش VB.NET
    پاسخ: 2
    آخرین پست: پنج شنبه 06 مهر 1385, 12:08 عصر
  4. غیر قابل تغییر کردن فرم about تغییر desktop تو vb
    نوشته شده توسط Payman62 در بخش برنامه نویسی در 6 VB
    پاسخ: 8
    آخرین پست: یک شنبه 31 اردیبهشت 1385, 11:12 صبح
  5. تغییر در PHPbb (تغییرات خیلی کلی)
    نوشته شده توسط nasr در بخش PHP
    پاسخ: 4
    آخرین پست: جمعه 05 فروردین 1384, 12:06 عصر

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

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