مشکل در فایل تصادفی در بیسیک !

sh_sepehr

Member
من یه مشکل داشتمدر فایلهای تصادفی !!!!!
وقتی اجرا میکنم این خطا رو میده ! :
run time error 59
Bad Record Lengh !
خوب من اینجوری عمل کردم ببینید کجاش اشتباه ! :
اول تو جنرال این رو تعریف کردم :
کد:
Private Type Record
a As String
b As String
End Type
و بعد در یک دکمه :
کد:
Dim rec As Record
n = FreeFile
Open "C:\Documents and Settings\sepehr\Desktop\a.txt" For Random As #n Len = Len(rec)
For i = 1 To 2
rec.a = Text1.Text
rec.b = Text2.Text
Put #n, i, rec
Next
Close #n
کجاش مشکل داره ؟!!!!

در ضمن میخواستم اگر امکان داشته باشه در مورد مرتب کردنشم هم یه توضیح کوچیک بدید !!!!
 

SuB

Member
مشکل اینجاست که همه رکوردها باید طول یکسانی داشته باشه. وقتی شما ساختار رو معرفی می کنید و توی اون فیلدها رو عددی انتخاب می کنید، اون عدد طول ثابتی داره ولی وقتی از رشته استفاده می کنید و طول رشته رو تعیین نمی کنید، اون وقت طول رکوردها متغیر میشه و اون وقت اشکال پیش میاد. در واقع همین ثابت بودن طول رکوردها سبب دسترسی به هر رکورد به صورت تصادفی میشه. پس شما باید در تعریف ساختار از رشته با طول ثابت استفاده کنید و به جای a as string از a as string*MAXSTRINGLEN استفاده کنی که MKAXSTRINGLEN یک عدد صحیح مثبت هست.
منظورتون از مرتب کردن رو درست نفهمیدم. اگه منظورتون مرتب کردن رکوردها بر اساس یه فیلد خاص باشه از روشهای متعددی می تونی استفاده کنی یکی از روشهای مرتب کردن، مرتب کردن به روش حبابی هست که خیلی راحته. فرض کنید شما می خواید فایلتون رو بر اساس فیلد name مرتب کنید. مقدار فیلد name اولین رکورد از فایل رو با بقیه رکوردها مقایسه می کنید و اگه اولین رکورد از لحاظ الفبایی پایین تر از یکی از رکوردهای زیرینش باش، جای این دو رو عوض می کنیم و تا آخرین رکورد همین کار رو انجام میدیم. بعد به سراغ رکورد دوم میریم و همین کار رو براش انجام میدیم و همین طور تا آخرین رکورد. بدین صورت تمام رکورد ها بر اساس این فیلد مرتب می شند.
با مقایسه رشته ها به راحتی می تونی رشته ها رو از لحاظ الفبایی با هم مقایسه کنی. اگه هم بین کوچکی و بزرگی حروف تفاوتی وجود نداره باید توی مقایسه از توابع تبدیل به حروف بزرگ یا تبدیل به حروف کوچک استفاده کنی.
 

جدیدترین ارسال ها

بالا