PDA

View Full Version : سوال: کمک در خصوص کار با فایل باینری



a.maleki
سه شنبه 26 آذر 1387, 15:09 عصر
دوستان سلام
من یه برنامه نوشتم (کار با فایلهای باینری )
به اینصورته که مشخصات اولیه یک فرد رو میگیره و در فایل ذخیره می کنه من این کار رو به صورت یک استراکچر انجام میدهم به اینصورت که 4تا متغیر کد و نام و نام خانوادگی و سال تولد رو در استراکچر می سازم که به صورت یک رکورد بشند و اطلاعات رو توش ذخیره می کنم
حال مشکل من اینه که چطوری اطلاعات رو به صورت ترتیبی تو اون ذخیره کنم یعنی اگر کدهامون به صورت 1,2,3,4,5,7,12,15,6 ذخیره کردیم پشت سرهم قرار بگیره یعنی بشه 1,2,3,4,5,6,7,12,15 و با دادن کد بتونم جستجو انجام بدم و رکوردهامو آپدیت کنم
البته حرکت به سمت جلو رو انجام میدهم ولی مرتب نیست
اگر دوستان راهی یا روشی یا ... دارند کمک کنند ممنون میشم
کد باز کردن فایل


FileOpen(1, "c:\file1.dat", OpenMode.Binary, OpenAccess.ReadWrite)

ایجاد رکوردهای فرضی


Structure info
Dim fname As String
Dim lname As String
Dim id As Integer
Dim bdate As Integer
End Structure


درج کردن




dim student as info
student.id=textbox1.text
student.fname=textbox2.text
student.lname=textbox3.text
student.bdate=textbox4.text

fileput(1,student)

a.maleki
شنبه 30 آذر 1387, 15:36 عصر
کسی چیزی باد نیست بگه

alicam
شنبه 30 آذر 1387, 16:09 عصر
فکر میکنم که شما باید از فایل های ترتیبی برای ذخیره کردن داده هاتون استفاده کنین تا به نتیجه برسین. چون داده هاتون رو به صورت تصادفی میدین اون وقت دسترسی هم به صورت تصادفی صورت میگیره ولی دسترسی ترتیبی همون طور که وارد کردین وارد میشه

a.maleki
یک شنبه 01 دی 1387, 21:42 عصر
دوست عزیز ممنون از جوابت ولی این جواب سوال من نبود

a.maleki
سه شنبه 08 بهمن 1387, 12:26 عصر
سلام
یه برنامه نوشتم تو این صفحه گذاشتم
http://barnamenevis.org/forum/showthread.php?t=144510

#target
سه شنبه 08 بهمن 1387, 19:52 عصر
با استفاده از یکی از روش های مرتب سازی میتونی اینکار رو کنی
مثلا اگر تعداد رکوردات تو فایل n باشه (اگر n رو نداری میتونی بدست بیاری . من تو نمونه کد زیر با حلقه n رو بدست آوردم)کد بصورت زیر هست . تغییرات لازم رو خودتون اعمال کنید
dim test1,test2 as info
While Not EOF (1)
Fileget(1,test,n)
n = n + 1
end while

for i = 1 to n
for j = 1 to n -1
fileget(1,test1,j)
fileget(1,test2,j + 1)
if test1.code > test2.code Then
fileput(1,test2,j)
fileput(1,test1,j+1
end if
next
next