Код
Uses Crt;
LABEL 1;
Var
FileTown,FileSumm:text;
ch:char;
i,Summ:longint;
Town,s:string;
Summ1:array [1..10] of longint;
Town1:array [1..10] of string;
Begin
1: ClrScr;
Assign(FileTown,'town.dat');
Reset(FileTown);
Write('Введите город => ');
Readln(Town);
While ((not EOF(FileTown))and(pos(Town,s)<>1)) do begin
Readln(FileTown,s);
If pos(Town,s)<>0 then begin
end;end;
Close(FileTown);
Assign(FileTown,'town.dat');
Reset(FileTown);
Assign(FileSumm,'summ.dat');
Reset(FileSumm);
For i:=1 To 10 Do Begin
Readln(FileTown,Town1[i]);
Readln(FileSumm,Summ1[i]);
if s=Town1[i] then begin
Write(Town1[i],' => ');
Writeln(Summ1[i]);
Write('Введите новую сумму => ');
Readln(Summ1[i]);
end;end;
Close(FileSumm);
Close(FileTown);
Assign(FileSumm,'summ.dat');
Rewrite(FileSumm);
For i:=1 To 10 Do Begin
Writeln(FileSumm,Summ1[i]);
end;
Close(FileSumm);
Write('Нажмите <Enter>');
repeat
ch:=ReadKey;if ch=chr(13) then begin Goto 1;end;
if ch=chr(27) then until ch=chr(27);
End.
Вот прога, которая практически выполняет эту задачу, но слишком она и сама сложная. Поиск с файла "города", запись городов с этого же файла в массив, так же и суммы. Работа через массив. Когда то очень давно, лет так 6 назад. Я делал эту задачу при помощи функции Seek (var имя_файла;номер_компоненты:LongInt) - передвигает текущую позицию файла в заданную компоненту. Причем поиск "города" из файла и считывания суммы пренадлежащей заданному городу искались с помощью этой функции. А вот, как это сделать с головы вылетело, годы... Ведь функция Seek не работает с текстовыми файлами.
И ещё, готовые результаты новых сумм записывались не заново, т.е. не командой Rewrite, а командой Append. Хотя функция Append используется только в текстовых файлах, а Seek нет. Что очень странно! Может процедуру надо написать. Короче, кто знает как это сделать, прошу откликнуться. А вот использовался массив или нет не помню, но одно точно знаю в файле с городами, было около 10000 городов. Выдержал ли бы массив такого или нет?
???
Я наверное уже достал всех своей проблемой, но больше ни кто не поможет!
Заранее благодарен,
Алексей.