PDA

View Full Version : ساخت فایل از نوع رکوردی



شفیعی
شنبه 13 آبان 1385, 18:55 عصر
سلام
یک برنامه با بیسیک نوشته ایم که یکسری فایل با ساختار زیر می سازد می خواهیم برنامه بنویسیم که این فایلها را بخواند و اطلاعات آنها را نمایش دهد باید چکار کرد


Private Type MapFileStructure
StationName As String
Xutm As Double
Yutm As Double
Hutm As String
Dutm As String
GroupName As String
End Type

Open ActiveFileName.Caption For Random As #1
Get #1, , MapRecord
While Not EOF(1)
Get #1, , MapRecord
WEND

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

dkhatibi
شنبه 13 آبان 1385, 19:38 عصر
یک Record با همین محتوا ایجاد کنید.
سپس فایلی از نوع رکورد مذکور ایجاد کنید.
اطلاعات را بخوانید.البته امیدوارم نحوه ی ذخیره مناسب با دلفی باشد.
اگر قسمتی از فایل را Uplaod کنید شاید کمک بیشتری بشود کرد.

Mahyaa
شنبه 13 آبان 1385, 22:00 عصر
این String ها محدودیت ندارند ؟ (از نظر تعداد کاراکتر)

تا جایی که من میدونم از چنین رکوردی نمیتونید درست در فایل استفاده کنید .مگر اینکه مثلا اینطوری بنویسید :


StationNumber : String[50];
دلیلش هم فکر کنم مشخص باشه .

این نمونه ای برای فایلهای حاوی رکورد (File of Records) :
پ . ن : مربوط به برنامه کوچیکی بوده که در اون پردازشی انجام میشد و خطاهای اون در فایلی از رکوردها نگهداری میشد. مشابه همین در کتاب Delphi 5 Developer's Guide از انتشارات Sams هم اومده .

شفیعی
چهارشنبه 17 آبان 1385, 19:54 عصر
سلام
خیلی ممنون
از دوستان کسی می تواند کاملتر و راحتر راهنمائی کند

Mahyaa
چهارشنبه 17 آبان 1385, 21:59 عصر
سلام
خیلی ممنون
از دوستان کسی می تواند کاملتر و راحتر راهنمائی کند



کدام قسمت براتون مبهمه ؟ مشکل کجاست ؟

sql_qassem
یک شنبه 21 آبان 1385, 19:33 عصر
اول باید ساختار فایل رو در قالب یک رکورد تعریف کنی و فایلی از نوع آن ساختار در قسمت تعریف متغییر تعریف کنی و بعد هم در متن برنامه در روال مورد نظر خودت کد بازکردن فایل و نوشتن داخل اون رو به ترتیب بنویسی.
در قسمت تعریف نوع :‌


type

MapStructure = record

StationName :String;
Xutm : real;
Yutm : real;
Hutm : real;
Dutm : real;
GroupName :String;

end;
[/QUOTE]
در قسمت تعریف متغیر
[QUOTE]
var
f : file of MapFileStructure;

بعد هم باید تو روال یا همون procedure ی که داری کد توش می نویسی یه متغییر از نوع اون رکورد تعریف کنی و اول اون رکورد رو پر کنی و بعد رکورد رو توی فایل بریزی
برای خوندن این فایل بازهم به او متغییر نوع رکورد نیاز داری.
البته قبلش باید فایلت رو آماده کنی و باز کنی . اینجاش به راحتی vb نیست . اما خیلی اصولیه.


procedure ......
var Record1:MapStructure;
begin

Record1.Year := 1904;
Record1.Month := Jun;
Record1.Day := 16;

Or use a with statement:

with Record1 do

begin
Year := 1904;
Month := Jun;
Day := 16;
end;


end;
توی هلپ هم بگرد :‌
F1\help\index : FileOpen,example

شفیعی
سه شنبه 23 آبان 1385, 18:38 عصر
سلام
خسته نباشید
اگر ممکن کد زیر را کامل تر کنید


procedure TForm1.GPS1Click(Sender: TObject);
type
MapStructure = record
NAME : STRING[10];
XUTM : REAL;
YUTM : Real;
GROUP : STRING[10];
end;
MAP = File Of MapStructure;
var
MFIELD : MapStructure;
iFileHandle: Integer;
iFileLength: Integer;
iBytesRead: Integer;
begin
OpenDialog1.Filter:='ATLAS(*.GPS)|*.GPS';
if OpenDialog1.Execute then
begin
iFileHandle := FileOpen(OpenDialog1.FileName, fmOpenRead);
iFileLength := FileSeek(iFileHandle,0,SizeOf(MFIELD));
iBytesRead:=0;
MEMO1.Clear;
repeat
FileSeek(iFileHandle,iBytesRead,1);
iBytesRead := FileRead(iFileHandle,MFIELD, iFileLength);
Memo1.Lines.Add(MFIELD.NAME);
until iBytesRead <> 0;
FileClose(iFileHandle);
end;
END;