Возможно невнимательно искал на форуме - но про удаление Record из файла ничего не нашел. Возможно есть в паскаля какая-либо функция, схожая unset() в php? Задание - удалить Record из файла по её номеру. Подскажите и\или покажите что и где прочитать.
Прошу прощения за глупый вопрос, но что значит pred(filesize(f))?
klem4
8.04.2007 21:06
Цитата
pred(filesize(f))?
Возвращает значение на единицу меньшее чем количество записей в типизированном файле f.
iSlayter
8.04.2007 22:12
Извините за мою наглость, не сумел разобраться, что в том коде значит переменная X и откуда она вообще берется. Мне необходимо написать процедуру удаления записи типа record из файла, по её номеру.
program swimmers;
uses crt;
const
n = 2;
type
TRec = recordname : string [31];
number : integer;
time : real;
part : integer;
end;
TBase = array [1..n] of TRec;
TFile = fileof TBase;
procedure Delete(var b : TBase; var f : TFile; var x : integer);
{dopolnit'}beginend;
procedure ShowInfo(var b : TBase; var f : TFile; var x : integer);
beginwith b[x] dobegin
writeln('Sportsmen N ',x);
writeln('Name : ' , name);
writeln('Start number : ' , number);
writeln('Time : ' , time:6:3);
end;
end;
procedure ShowTop (var b : TBase; var f : TFile);
var
i,maxi,mini : integer;
max, min : real;
begin
min := b[1].time;
max := b[1].time;
for i := 0to2dowith b[i] dobeginif time <= min then
mini := i;
end;
for i := 0to2dowith b[i] dobeginif time >= max then
maxi := i;
end;
writeln ('Sportsmen zanyavshyi pervoe mesto: ', b[mini].name , ' vremya ' , b[mini].time:6:3 ,'');
writeln ('Sportsmen zanyavshyi poslednee mesto: ', b[maxi].name , ' vremya ' , b[maxi].time:6:3 ,'');
end;
procedure CheckPart(var b : TBase; var f : TFile; var x : integer);
beginwith b[x] dobeginif time <> 0then
writeln('sportsmen uchastvoval v sorevnovaniyah!')
else
writeln('sportsmen ne uchastvoval v sorevnovaniyah')
end;
end;
procedure Input(var b : TBase; var f : TFile);
var
i,j : byte;
begin
writeln('Vvod bazy dannyx. ');
for i := 1to n dowith b[i] dobegin
time := 0;
writeln('Sportsmen N ',i);
write('Name : '); readln(name);
write('Start number : '); readln(number);
write('Time (if blank doesnt take part in the competitions) : '); readln(time);
if time = 0then part := 0else part := 1;
writeln;
end;
write(f, b);
end;
procedure Print(var b : TBase; var f : TFile);
var
i,j : byte;
beginread(f, b);
writeln('information about students : ');
for i := 1to n dowith b[i] dobegin
writeln('Sportsmen N ',i);
writeln('Name : ' , name);
writeln('Start number : ' , number);
writeln('Time : ' , time:6:3);
if part = 1then writeln('This sportsmen take part in competitions.')
else writeln('Doesnt take part in compet.');
writeln;
end;
end;
var
base : TBase;
baseFile : TFile;
sportsmenNumber : integer;
temp : integer;
begin
CLRSCR;
assign(baseFile, 'c:\students.db');
rewrite(baseFile);
Input(base, baseFile);
writeLn('Press any key ...'); ReadKey; CLRSCR;
reset(baseFile);
Print(base, baseFile);
writeln('Proverit u4astvoval li sportsmen v sorevnovaniyah? 1 - yes, 0 - no');
readln(temp);
if temp = 1thenbeginwrite('Vvedite nomer sportsmena : ');
readln(sportsmenNumber);
CheckPart(base, baseFile, sportsmenNumber)
end;
temp := 0;
writeln('Vyvesti li eshe raz informaciu o kakom-libo sportsmene? 1 - yes, 0 - no');
readln(temp);
if temp = 1thenbeginwrite('Vvedite nomer sportsmena : ');
readLn(sportsmenNumber);
ShowInfo(base, baseFile, sportsmenNumber)
end;
temp := 0;
writeln('Vy hotite udalit kakuu libo zapis?');
readln(temp);
if temp = 1thenbeginwrite('Vvedite nomer sportsmena: ');
readln(sportsmenNumber);
Delete(base, baseFile, sportsmenNumber);
end;
close(baseFile);
ShowTop(base, baseFile);
writeln('');
writeln('Press any button for exit ...');
ReadKey
end.
Tan
8.04.2007 23:06
это параметр через который отсылается переменная из главной программы в подпрограмму, её можно назвать как хочешь (практически), за исключением зарезервированных языком обозначений
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.