View Full Version : ساخت فایل از نوع رکوردی
  
شفیعی
شنبه 13 آبان 1385, 19: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, 20:38 عصر
یک Record با همین محتوا ایجاد کنید.
سپس فایلی از نوع رکورد مذکور ایجاد کنید.
اطلاعات را بخوانید.البته امیدوارم نحوه ی ذخیره مناسب با دلفی باشد.
اگر قسمتی از فایل را Uplaod کنید شاید کمک بیشتری بشود کرد.
Mahyaa
شنبه 13 آبان 1385, 23:00 عصر
این String ها محدودیت ندارند ؟ (از نظر تعداد کاراکتر)
تا جایی که من میدونم از چنین رکوردی نمیتونید درست در فایل استفاده کنید .مگر اینکه مثلا اینطوری بنویسید :
 StationNumber : String[50]; 
دلیلش هم فکر کنم مشخص باشه .
این نمونه ای برای فایلهای حاوی رکورد (File of Records) :
پ . ن : مربوط به برنامه کوچیکی بوده که در اون پردازشی انجام میشد و خطاهای اون در فایلی از رکوردها نگهداری میشد. مشابه همین در کتاب Delphi 5 Developer's Guide از انتشارات Sams هم اومده .
شفیعی
چهارشنبه 17 آبان 1385, 20:54 عصر
سلام 
خیلی ممنون
از دوستان کسی می تواند کاملتر و راحتر راهنمائی کند
Mahyaa
چهارشنبه 17 آبان 1385, 22:59 عصر
سلام 
خیلی ممنون
از دوستان کسی می تواند کاملتر و راحتر راهنمائی کند
کدام قسمت براتون مبهمه ؟ مشکل کجاست ؟
sql_qassem
یک شنبه 21 آبان 1385, 20: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, 19: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;
 
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.