PDA

View Full Version : خواندن bit های یک فایل



meisamphp
چهارشنبه 04 آذر 1388, 09:00 صبح
سلام .. همتون با هم خسته نباشین

من میخوام یه برنامه بنویسم که یه فایل رو از روی هارد Select میکنم .. تمام بیتهای اون فایل رو به صورت صفر و یک بهم نشون بده ..

اگه خواستم یه بیت رو تغییر بدم دوباره روی هارد زخیرش کنم ..

ممنون میشم اگه کمکم کنید .. مرسی از همگیتون

موفق باشین .. یا علی

vcldeveloper
چهارشنبه 04 آذر 1388, 10:09 صبح
خب، الان دقیقا مشکلتان کجا ست؟ یک فایل را می تونید چه با استفاده از توابع استاندارد پاسکال، مثل write و read بخوانید یا در آن بنویسید؛ یا از stream برای خواندن یا تغییر آن استفاده کنید (مثلا TFileStream)، یا مستقیما از توابع API ویندوز استفاده کنید.

meisamphp
یک شنبه 08 آذر 1388, 11:09 صبح
سلام ..

دوست عزیز من میخوام تمامی صفر و یک های یه فایل رو بخونم ( کد باینری هر فایل که به صورت صفر و یک توی هارد زخیره میشه ) دقیقا مثل برنامه ++NotePad که یه فایل رو توش باز میکنیم فایل رو به صورت صفر و یک نشون میده ..

ممنون میشم اگه راهنماییم کنید ..

مرسی از همگیتون .. یا علی

alinikaein
یک شنبه 08 آذر 1388, 20:32 عصر
سلام دوست عزيز؛

من مطمئن نيستم حرفي كه مي‌زنم درست باشه، ولي احتمالاً Notpad++ اول فايل را مي‌خونه و بعد به ازاي هر بايتي كه مي‌خونه، (كاراكتر) عدد اسكي معادل اون را از جدول استخراج و به صورت باينري نمايش مي‌ده.
البته قاعدتاً كار سختي نيست كه به صورت مستقيم اطلاعات را باينري بخونه.
فكر كنم براي اين كار، مي‌تونيد از دستور Read به صورت زير استفاده كنيد:

Read(MyFile, OneChar)


بعد كاراكتر خونده شده را به صورت باينري نمايش بديد.


يا علي... موفق باشيد...

vcldeveloper
یک شنبه 08 آذر 1388, 21:26 عصر
دوست عزیز من میخوام تمامی صفر و یک های یه فایل رو بخونم ( کد باینری هر فایل که به صورت صفر و یک توی هارد زخیره میشه ) دقیقا مثل برنامه ++NotePad که یه فایل رو توش باز میکنیم فایل رو به صورت صفر و یک نشون میده ..
همه فایل ها بصورت صفر و یک ذخیره میشند، وقتی شما فایل را با همون روش های مطرح شده در پست شماره 2 تاپیک می خوانید، چیزی جز یک سری صفر و یک به دست نمیارید. حالا برای اینکه اون مقادیر صفر و یک قابل نمایش به کاربر باشند، می تونید آنها را بایت به بایت به معادل هگزا (مبنای 16) آنها تبدیل کنید، و عدد هگزای به دست آمده برای هر بایت را به کاربر نمایش بدید. این کاری هست که برنامه های Hex Viewer، یا پلاگین Hex Editor مربوط به ++NotePad انجام میدند.

meisamphp
دوشنبه 09 آذر 1388, 09:09 صبح
سلام .. واقعا مرسی از اینکه جوابمو میدین

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

حالا چی کار باید بکنم ؟؟ از چه دستوری باید استفاده کنم

موفق باشین .. یا علی

vcldeveloper
دوشنبه 09 آذر 1388, 18:16 عصر
خوب حالا شما میگین من تو دلفی چی کار کنم که بتونم فایل رو به صورت صفر و یک بخونم .. آخه من میخوام روی صفر و یکها یه تغییری بدم بعد مجدد زخیرش کنم ..

با TFileStream فایل رو باز کنید و با متدهای Read و Write آن، داده های فایل را بخوانید یا ویرایش کنید.

meisamphp
شنبه 14 آذر 1388, 13:22 عصر
سلام .. تور و خدا شرمنده که زحمتتون میدم ..

میشه Code مربوط به این کار رو که میگین واسم بنویسین ؟؟

یعنی اینکه .. تو دلفی با متدی که میگین ،،

فایل رو نسبت بدم ..
فایل رو بخونم ..
صفر و یک فایل خونده شده رو بریزم تو یه فایل Text ..

مرسی از همگیتون

موفق باشین .. یا علی

meisamphp
سه شنبه 17 آذر 1388, 12:10 عصر
سلام .. میشه یه لطفی بکنین کمکم کنید ؟؟

ممنون میشم ..

موفق باشین .. یا علی

meisamphp
چهارشنبه 18 آذر 1388, 08:33 صبح
سلام .. من این کد رو نوشتم ..

اما اونی که می خوام نیست .. تو editbox من سه تا کارکتر ناخوانا نشون میده ..




var
fs:TFileStream;
n:string;
begin
fs:=TFileStream.Create('c:\1.GIF',fmOpenRead);
fs.Read(n,3265);
setLength(n,3265
Edit1.Text:=n;
fs.Free;



میشه حالا کمکم کنید که چه طوری کل صفر و یک های یه فایل رو بخونم ؟؟

موفق باشین .. یاعلی

vcldeveloper
پنج شنبه 19 آذر 1388, 00:35 صبح
تو editbox من سه تا کارکتر ناخوانا نشون میده ..
به خاطر اینکه شما دارید سعی می کنید بایت ها را همانطوری به صورت string نمایش بدید، طبیعی هست که در این حالت فقط بایت هایی که مقدار آنها در محدوده کارکترهای قابل نمایش باشند بصورت حروف قابل نمایش، نمایش داده میشند. شما اگر می خواید محتویات را بصورت صفر و یک نمایش بدید، باید محتویات هر بایت را که با استفاده از Read دریافت کردید، و بصورت یک عدد در مبنای 10 از صفر تا 255 هست، خودتان به مبنای 2 تبدیل کنید، و رشته تبدیل شده را به کاربر نمایش بدید.