PDA

View Full Version : نوشتن Structure در فایل باینری



ealireza
شنبه 23 تیر 1386, 13:50 عصر
سلام
من یک استراکچر دارم بصورت زیر هست

public struct a1
{
public string name;
public string family;
public DateTime publishdate;
}
public struct a1
{
public a1 mm;
public a1 gg;
public string adress;
}

به چه صورت میتونم محتویات داخل این فایل رو در یک فایل باینری قرار دهم بصورتی که یونی کد رو بتونه بخونه و مشکلی با اون نداشته باشه .
هر کاری کردم نتونستم String ها رو بنویسم

در یک جا نوشته بود از Marshal باید استفاده کرد
لطفا راهنمایی کنید

مرسی

ARA
شنبه 23 تیر 1386, 16:27 عصر
فکر کنم مارشالینگ همون serialize کردنه

خودت میتونی بنویسی از این هم میتونی استفاده کنی System.Runtime.Serialization.Formatters.Binary

خودت بنویسی تو انتقالات بهتر عمل میکنه ولی اگه sizesh برات فرق نمیکنه از این کلاس استفاده کن

راستی برای اینکه unicode بهم نخوره از همچین چیزی میتونی استفاده کنی رکورد ها رو یکی یکی بخون سک جدا کننده بین رکورد ها و یک جدا کننده بین فیلدهات کافیه تا کل stracture رو بنویسی


byte[] buffer = newbyte[1000];
buffer=Encoding.UTF8.GetBytes(reshte);

مثل این بخون وتک تک تو فایل ذخیره کن

اینهم یک مثال از serialize کردن binary
http://www.c-sharpcorner.com/UploadFile/bipinjoshi/serializingObjectsinCS11102005234746PM/serializingObjectsinCS.aspx

ealireza
شنبه 23 تیر 1386, 17:41 عصر
تست کردم ولی باز جوابی نداد .
مساله مهم برام اینه که کاربر نتونه محتویات فایل رو عوض کنه .
از Hash هم نمیتونم استفاده کنم (حجم سنگین میشه)

این بایت رو تست کردم موقع ذخیره سازی حجم تغییر نمیکنه فقط 8 بایت ذخیره میکنه
موقع خواند هم

Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
و یک سری اررور دیگه
راح حل چیست ؟

ARA
شنبه 23 تیر 1386, 19:26 عصر
من دقیقا نفهمیدم چی کار میخوای بکنی دقیق تر بگو تا بچه ها هم بتونن کمک کنند

اگه میخوای کاربر نتونه دستکاری کنه encrypt کن کلاسهاشم که تو دات نت هستش
ج.ن با فرض اینکه باینری ذخیره کنی با برنامه ای مثل UltraEdit براحتی دیده میشه

ealireza
یک شنبه 24 تیر 1386, 00:11 صبح
در serialize کردن
وقتی که فایل بصورت باینری ساخته میشه همچین چیزی اولش نوشته میشه
SerializationTest.Form1+mmx
که فقط روی همون برنامه قابل خوادن هست .
آیا میشه کاری کرد که بر روی برنامه های دیگری هم که مینویسیم هم جواب بده ؟
در حالت XML همچین محدودیتی وجود نداره
من میخوام به عنوان بانک اطلاعاتی ازش استفاده کنم
لطفا راهنمایی کنید

مرسی

Amir Oveisi
پنج شنبه 28 تیر 1386, 17:47 عصر
اگه یه object روserialize بکنی تو فایل حالا همیشه و همه جا میتونی به عنوان همون object که تو فایله deserialize بکنیش