Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.04.2012, 22:35   #1
Verax1
Пользователь
 
Регистрация: 08.04.2012
Сообщений: 23
По умолчанию Оператор AssignFile не могу разобраться

Здравствуйте. вообще учили вроде как записывать

AssignFile(F1,'D:\temp\FF1.dat');
Rewrite(F1);

Щас нужно другую прогу писать, разбираю код похожей, а там соотвествие записано вот так

AssignFile(CurrentFile, F1FileName);
Rewrite(CurrentFile);

F1FileName выше записан как String

Я не понимаю как так записано, где находиться сам файл и т.п?
Verax1 вне форума Ответить с цитированием
Старый 08.04.2012, 22:41   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
где находиться сам файл и т.п?
В надо по коду смотреть что присваивается в F1FileName
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.04.2012, 22:54   #3
Verax1
Пользователь
 
Регистрация: 08.04.2012
Сообщений: 23
По умолчанию

Файлообменник вот вообще сама прога. Вот допустим на 107 строке соответсвие устанавливаеться, а все равно не понимаю как. Прослушал наверно на паре
Verax1 вне форума Ответить с цитированием
Старый 08.04.2012, 22:57   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Кидай код сюда. У меня этот файлообменник доверия не вызывает.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.04.2012, 23:00   #5
Verax1
Пользователь
 
Регистрация: 08.04.2012
Сообщений: 23
По умолчанию

Код:
var
  MainForm: TMainForm;

implementation

{$R *.dfm}

type
  TStudent = record
    N:integer;
    Group:string[6];
    Name:string[20];
    Age:byte;
  end;
  TFileOfStudent = file of TStudent;

const MAXSTUDENTS = 6;
var

  F1FileName, F2FileName: string;

  CurrentStudent:TStudent;
  StudArr: array [1..MAXSTUDENTS] of TStudent =
  (
    (N:1; Group:'ИУ2-22'; Name:'Ноль'; Age:17),
    (N:2; Group:'ИУ2-21'; Name:'Раз'; Age:18),
    (N:3; Group:'ИУ2-22'; Name:'Два'; Age:20),
    (N:4; Group:'ИУ2-21'; Name:'Три'; Age:19),
    (N:5; Group:'ИУ2-22'; Name:'Четыре'; Age:17),
    (N:6; Group:'ИУ2-21'; Name:'Пять'; Age:18)
  );

procedure FormatTable(state:byte);
begin
  case state of
  1:
    begin
      with MainForm.StringGrid1 do
      begin
        ColCount := 4;
        RowCount := MAXSTUDENTS + 1;

        Cells[0, 0] := '№';
        Cells[1, 0] := 'Группа';
        ColWidths[2] := 120;
        Cells[2, 0] := 'Фамилия';
        Cells[3, 0] := 'Возраст';
      end;
    end;
  end;
end;

procedure ClearTable();
var
  i, j: integer;
begin
  with MainForm.StringGrid1 do
  begin
    for i := 1 to RowCount do
      for j := 0 to ColCount do
        Cells[j, i] := '';
  end;
end;

procedure TMainForm.F11Click(Sender: TObject);
var
  CurrentFile:TFileOfStudent;
  i: integer;
begin
  // Create F1
  AssignFile(CurrentFile, F1FileName);
  Rewrite(CurrentFile);

  for i := 1 to MAXSTUDENTS do
  begin
    CurrentStudent.N := StudArr[i].N;
    CurrentStudent.Group := StudArr[i].Group;
    CurrentStudent.Name := StudArr[i].Name;
    CurrentStudent.Age := StudArr[i].Age;
    write(CurrentFile, CurrentStudent);
  end;
  CloseFile(CurrentFile);
end;

procedure TMainForm.F12Click(Sender: TObject);
var
  SourceFile:TfileOfStudent;
  i: integer;
begin
  // Open F1
  AssignFile(SourceFile, F1FileName);
  Reset(SourceFile);

  ClearTable();

  for i := 1 to FileSize(SourceFile) do
  begin
    Read(SourceFile, CurrentStudent);

    with MainForm.StringGrid1 do
    begin
      Cells[0, i] := IntToStr(CurrentStudent.N);
      Cells[1, i] := CurrentStudent.Group;
      Cells[2, i] := CurrentStudent.Name;
      Cells[3, i] := IntToStr(CurrentStudent.Age);
    end;
  end;
  CloseFile(SourceFile);
end;

procedure TMainForm.F13Click(Sender: TObject);
  var
  Student1, Student2: TStudent;
  IOFile: TFileOfStudent;
  i, j: integer;
begin
  // Sort F1
  AssignFile(IOFile, F1FileName);
  Reset(IOFile);

  for i := 1 to FileSize(IOFile) - 1 do
    for j := 0 to FileSize(IOFile) - 2 do
    begin
      Seek(IOFile, j);
      Read(IOFile, Student1, Student2);
      if (Student1.Age > Student2.Age) then
      begin
        Seek(IOFile, j);
        Write(IOFile, Student2, Student1);
      end;
    end;
    CloseFile(IOFile);
end;

procedure TMainForm.F21Click(Sender: TObject);
var
  AvAge, SumAge:real;
  SourceFile, DestFile:TFileOfStudent;
  i, n: Integer;

begin
  // Create F2
  // Положим, что требуется записать всех, чей возраст
  // меньше среднего
  AssignFile(SourceFile, F1FileName);
  AssignFile(DestFile, F2FileName);

  Reset(SourceFile);
  Rewrite(DestFile);

  SumAge := 0;
  n := 0;
  for i := 1 to FileSize(SourceFile) do
  begin
    Read(SourceFile, CurrentStudent);
    inc(n);
    SumAge := SumAge + CurrentStudent.Age;
  end;
  AvAge := SumAge/n;

  Seek(SourceFile, 0);
  for i := 1 to FileSize(SourceFile) do
  begin
    Read(SourceFile, CurrentStudent);
    if CurrentStudent.Age < AvAge then
      Write(DestFile, CurrentStudent);
  end;
  CloseFile(SourceFile);
  CloseFile(DestFile);
end;

procedure TMainForm.F22Click(Sender: TObject);
var
  SourceFile:TFileOfStudent;
  i: Integer;
begin
  // Open F2
  AssignFile(SourceFile, F2FileName);
  Reset(SourceFile);

  ClearTable();

  for i := 1 to FileSize(SourceFile) do
  begin
    Read(SourceFile, CurrentStudent);

    with MainForm.StringGrid1 do
    begin
      Cells[0, i] := IntToStr(CurrentStudent.N);
      Cells[1, i] := CurrentStudent.Group;
      Cells[2, i] := CurrentStudent.Name;
      Cells[3, i] := IntToStr(CurrentStudent.Age);
    end;
  end;
  CloseFile(SourceFile);
end;

procedure TMainForm.FormCreate(Sender: TObject);
begin
  // FormCreate
  FormatTable(1);

  F1FileName := GetCurrentDir() + '\Data\F1.dat';
  F2FileName := GetCurrentDir() + '\Data\F2.dat';
end;

procedure TMainForm.N3Click(Sender: TObject);
begin
  // Clear
  ClearTable();
end;

procedure TMainForm.N4Click(Sender: TObject);
begin
  // Quit
  Close();
end;

end.



___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 09.04.2012 в 11:37.
Verax1 вне форума Ответить с цитированием
Старый 08.04.2012, 23:03   #6
Verax1
Пользователь
 
Регистрация: 08.04.2012
Сообщений: 23
По умолчанию

А вот в FormCreate описано :

F1FileName := GetCurrentDir() + '\Data\F1.dat';
F2FileName := GetCurrentDir() + '\Data\F2.dat';
end;

ну где находиться теперь понятно, а вот допустим там меняеться CurrentFile, SourseFile, IOFile на что это будет влиять?
Verax1 вне форума Ответить с цитированием
Старый 08.04.2012, 23:16   #7
Verax1
Пользователь
 
Регистрация: 08.04.2012
Сообщений: 23
По умолчанию

Просто смотрю и не могу понять. Они меняются вроде как просто так для удобства ориентирования(ну можно было же впринципе везде написать F1 и все.
Verax1 вне форума Ответить с цитированием
Старый 09.04.2012, 08:19   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
а вот допустим там меняеться CurrentFile, SourseFile, IOFile на что это будет влиять?
Меняться оно будет только в одном случае: Смотря из какой директории запускать программу.
GetCurrentDir опасня штука, и вот почему. Она дает путь, который был по умолчанию при запуске программы, но она не дает четкого пути к программе. К примеру, если файлы лежат рядом с экзешником, а ты запускаешь через ярлык, или перед этим через OpenDialog даже твоей Делфи успел перейти в другую папку на диске, эта функция покажет неверный путь.

F1FileName := ExtractFilePath(ParamStr(0)) + '\Data\F1.dat';
Отакот понадежнее будет.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
не могу разобраться feesta Помощь студентам 0 10.04.2011 20:19
Не могу разобраться Xoksik Общие вопросы по Java, Java SE, Kotlin 4 27.03.2011 23:36
Не могу разобраться!!! Яна Сафронова Помощь студентам 11 12.05.2010 17:56
НЕ МОГУ РАЗОБРАТЬСЯ... GSV84 HTML и CSS 0 03.02.2010 01:38