Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #16  
Старый 14.12.2010, 15:06
Аватар для BoRoV
BoRoV BoRoV вне форума
Начинающий
 
Регистрация: 08.09.2008
Сообщения: 193
Репутация: 12694
По умолчанию

Сам спросил и сам ответил.
__________________
Меня греют ваши плюсы к моей репутации...
Ответить с цитированием
  #17  
Старый 14.12.2010, 15:19
Yreng Yreng вне форума
Прохожий
 
Регистрация: 13.12.2010
Сообщения: 8
Репутация: 10
По умолчанию

Тогда, как я понимаю надо результирующий файл делать txt, но когда у меня до этого файлы типизированные, с записями, то из них в txt не пишется(ошибка вылетает, проверил, сейчас код выложу). Вобщем изменил, чтобы не вся запись писалась, а по частям, но всёравно ошибка в программе.
Код:
program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;

type
  Stud = record
    Year: Integer;
    Name: String[20];
  end;  
var
  f: file of Stud;
  i, j, n, k: integer;
  a1, a2: array of Stud;
  t: Stud;
  res: char;
  R: TextFile;

begin
  AssignFile(f, 'C:\file1.dat');
  Rewrite(F);
  Reset(F);
  repeat
    Write('Name: ');
    ReadLn(t.Name);
    Write('Year: ');
    ReadLn(t.Year);
    Write('res: ');
    Write(F, T);
    ReadLn(Res);
  until (res = 'n');
  Closefile(F);

   AssignFile(f, 'C:\file2.dat');
   Rewrite(F);
  Reset(F);
  repeat
    Write('Name: ');
    ReadLn(t.Name);
    Write('Year: ');
    ReadLn(t.Year);
    Write('res: ');
    Write(F, T);
    ReadLn(Res);
  until (res = 'n');
  CloseFile(F);

  AssignFile(f, 'C:\file1.dat');
  Reset(f);
  i := 0;
  while not eof(f) do
  begin
    SetLength(a1, i + 1);
    Read(f, a1[i]);
    inc(i);
  end;
  CloseFile(f);

  AssignFile(f, 'C:\file2.dat');
  Reset(f);
  n := 0;
  while not eof(f) do
  begin
    SetLength(a2, n + 1);
    Read(f, a2[n]);
    inc(n);
  end;
  CloseFile(f);

  j := i;
  dec(n);
  while n >= 0 do
  begin
    k := i - 1;
    while k >= 0 do
    begin
      if (a1[k].Name = a2[n].Name) and (a1[k].Year = a2[n].Year) then
        break;
      dec(k);
    end;
    if k = -1 then
    begin
      SetLength(a1, j + 1);
      a1[j].Year := a2[n].Year;
      a1[j].Name := a2[n].Name;
      inc(j);
    end;
    dec(n);
  end;

  // Sorting
  for i := 0 to j - 2 do
  begin
    for n := i + 1 to j - 1 do
      if (a1[i].Year > a1[n].Year) then
      begin
        t.Year := a1[i].Year;
        t.Name := a1[i].Name;

        a1[i].Year := a1[n].Year;
        a1[i].Name := a1[n].Name;

        a1[n].Year := t.Year;
        a1[n].Name := t.Name;
      end;
  end;



  AssignFile(R, 'C:\file.txt');
  Rewrite(R);
  Reset(R);
  for i := 0 to j - 1 do
  begin
    Write(R, a1[i].Year);
    Write(R, a1[i].Name);
    Writeln(a1[i].Year, ' ', a1[i].Name);
  end;
  CloseFile(R);
  Writeln('Ready');
  Readln;
end.

Последний раз редактировалось Yreng, 14.12.2010 в 15:23.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 01:36.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025