извините за задержу, вот мой код(нерабочий)
основные проблемы:
1. при считывании из файла, последняя строка обрезается до1 буквы, а после идут крякозабры и иероглифы.
2. два файла не считывает, а считывает лишь один.
сижу над прогой несколько дней, и теперь она помоему ещё хуже стала работать.(в начале считывался из двух только 1 файл в конце с крякозабрами, а теперь вобще ничего не считывает)
Код:
program example;
{$APPTYPE CONSOLE}
uses
SysUtils;
type
Stud = record
Name: String[20];
Year: Integer;
end;
StFile = file of Stud;
procedure OutputFile(var FileToWrite: StFile);
var
TempRecord: Stud;
begin
Reset(FileToWrite);
while not EOF(FileToWrite) do
begin
Read(FileToWrite, TempRecord);
with TempRecord do
Write(Name);
Writeln;
end;
end;
procedure SortFile(var FileToSort: StFile);
var
I, J: Integer;
MaximumYear: Integer;
TempRecord: stud;
IndexOfMaxRecord: Integer;
RecordNumberI: stud;
MinRecord: stud;
begin
for I := 0 to FileSize(FileToSort) - 2 do
begin
Seek(FileToSort, I);
Read(FileToSort, RecordNumberI);
MaximumYear := RecordNumberI.Year;
IndexOfMaxRecord := I;
for J := I + 1 to FileSize(FileToSort) - 1 do
begin
Read(FileToSort, TempRecord);
if TempRecord.Year > MaximumYear then
begin
MaximumYear := TempRecord.Year;
IndexOfMaxRecord := J;
end;
end;
Seek(FileToSort, IndexOfMaxRecord);
Read(FileToSort, MinRecord);
Seek(FileToSort, IndexOfMaxRecord);
Write(FileToSort, RecordNumberI);
Seek(FileToSort, I);
Write(FileToSort, MinRecord);
end;
end;
procedure Input(var F, G: Stfile; out J: TextFile);
var
Temp: Stud;
begin
Reset(F);
Rewrite(J);
Reset(J);
while not Eof(F) do
begin
Read(F, Temp);
Write(J, Temp.Name);
end;
Reset(G);
while not Eof(G) do
begin
Read(G, Temp);
Write(J, Temp.Name);
end;
end;
var
F: StFile;
A: StFile;
J: Textfile;
begin
Assign(F, 'C:\file1.dat');
Reset(F);
Assign(A, 'C:\file1.dat');
Reset(A);
Writeln('Исходный файл:');
OutputFile(F);
Writeln;
Writeln('Исходный файл №2:');
OutputFile(A);
Writeln;
Assign(J, 'result.txt');
Rewrite(J);
Input(F, A, J);
SortFile(F);
Writeln;
Writeln('Отсортированный исходный файл:');
OutputFile(F);
CloseFile(F);
CloseFile(A);
Readln;
end.