PDA

View Full Version : خواندن فایل باینری



hasty_f
چهارشنبه 25 مرداد 1385, 09:26 صبح
با سلام
من یک فایل دارم که بصورت باینری می خوانم ولی در یک فایل دیگر بصورت text می نویسم
مشکلم این است زمانی که رکورد اول را از این فایل باینری میخوانم از کرکتر دوم خوانده می شود .
من می خواهم دقیقا از کرکتر اول خوانده شود.
ممنون از راهنمایی شما
؟؟؟؟؟؟؟؟؟؟؟؟؟

vcldeveloper
پنج شنبه 26 مرداد 1385, 09:59 صبح
کدی که باهاش فایل را می خوانید را بنویسید

hasty_f
یک شنبه 29 مرداد 1385, 06:40 صبح
این فایل را در دلفی می خوانم و از نوع باینری تعریف کرده ام . سوالتون را متوجه نمی شم .
می تونم فایل هم براتون بفرستم.
ممنون از پاسختون

vcldeveloper
یک شنبه 29 مرداد 1385, 07:58 صبح
کدی که باهاش فایل را می خوانید را بنویسید

یعنی اون بخشی از سور کد را که بوسیله آن اطلاعات را از فایل باینری می خوانید، اینجا بنویسید تا با بررسی آن مشخص شود چرا کاراکتر اول خوانده نمی شود.

hasty_f
یک شنبه 29 مرداد 1385, 11:30 صبح
procedure TfMain.Button1Click(Sender: TObject);
type
rec=record
c1:string[10];
c2:string[6];
c3:string[3];
c4:string[2];
c5:string[30];
c6:string[2];
c7:string[5];
c8:string[50];
c9:string[6];
c10:string[11];
c11:string[7];
c12:string[15];
c13:string[6];
c14:string[18];
c15:string[5];
c16:string[1];
c17:string[8];
c18:string[10];
c19:string[7];
end;
fp=file of rec;
var fp1:fp;
fpw:textfile;
m1:rec;
begin
assignfile(fp1,'C:\TEST\TEST1');
assignfile(fpw,'C:\TEST\test.txt');
reset(fp1);
rewrite(fpw);
read(fp1,m1);

vcldeveloper
سه شنبه 31 مرداد 1385, 23:16 عصر
کد بالا مشکلی نداره، مشکل باید از کدی باشه که برای ذخیره مقادیر رکورد m1 در فایل متنی استفاده می کنید.

hasty_f
چهارشنبه 01 شهریور 1385, 08:01 صبح
مشکل دقیقا در خواندن است نه ذخیره زمان خواندن فایل چک کرده ام رکوردی را که می خواند یک کرکتر جلوتر است یعنی فیلد اول را که 10 تایی است از کرکتر دوم 10 تا می خواند
فیلد دوم را از کرکتر 12 برای خواندن هر فیلد از یک کرکتر جلوتر شروع به خواندن می کند
و اطلاعات بهم می ریزد.
ممنون

Mahyaa
چهارشنبه 01 شهریور 1385, 11:42 صبح
ایا این فایل رو که میخونید ، با همین روش هم نوشتید ؟
یعنی فایل ورودی رو دستی نوشتید یا با همین رکورد توش Data نوشتید !

اگه میخواهید به File of record فایل رو باز کنید ، فکر کنم باید به همین شکل هم تو فایل نوشته باشید !

hasty_f
پنج شنبه 02 شهریور 1385, 07:02 صبح
خیر با این روش نوشته نشده یک فایلی هست که تهیه شده نمی دونم به چه روشی ولی من از نوع باینری می خونمش
با تشکر

vcldeveloper
پنج شنبه 02 شهریور 1385, 09:37 صبح
همونطور که قبلا هم گفتم کد بالا مشکلی نداره و به درستی رکورد مورد نظر را می خواند (در صورتی که رکورد ذخیره شده هم دقیقا همان رکورد rec باشه). اگه مشکلی وجود داره، پس یا مشکل از ساختار رکورد هست (یعنی ساختارش با این چیزی که اینجا نوشتید مقداری فرق داره) یا مشکل در زمانی هست که می خواید داده ها را به فایل متنی منتقل کنید.
اگر خودتون فایل باینری را با استفاده از رکورد بالا ایجاد کنید و بخوانید، متوجه میشید که به خوبی جواب میده.

hasty_f
پنج شنبه 02 شهریور 1385, 10:21 صبح
من این فایل را ایجاد نکرده ام این یک فایلی است که از main frame به دست من رسیده و من آن را فقط می خواهم بخوانم و در جایی بنویسم ولی مشکل همانطور که قبلا گفتم از خواندن است
با تشکر

ghabil
پنج شنبه 02 شهریور 1385, 13:27 عصر
بالای یونیتی که این دستورات توش هست زیر نام یونیت این دایرکتیو رو بزار {$-A}