Возможно невнимательно искал на форуме - но про удаление Record из файла ничего не нашел. Возможно есть в паскаля какая-либо функция, схожая unset() в php? Задание - удалить Record из файла по её номеру. Подскажите и\или покажите что и где прочитать.
Прошу прощения за глупый вопрос, но что значит pred(filesize(f))?
klem4
9.04.2007 1:06
Цитата
pred(filesize(f))?
Возвращает значение на единицу меньшее чем количество записей в типизированном файле f.
iSlayter
9.04.2007 2:12
Извините за мою наглость, не сумел разобраться, что в том коде значит переменная X и откуда она вообще берется. Мне необходимо написать процедуру удаления записи типа record из файла, по её номеру.
program swimmers; uses crt; const n = 2; type
TRec = record name : string [31]; number : integer; time : real; part : integer; end;
TBase = array [1..n] of TRec;
TFile = file of TBase; procedure Delete(var b : TBase; var f : TFile; var x : integer); {dopolnit'} begin end; procedure ShowInfo(var b : TBase; var f : TFile; var x : integer); begin with b[x] do begin 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 := 0 to 2 do with b[i] do begin if time <= min then mini := i; end; for i := 0 to 2 do with b[i] do begin if 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); begin with b[x] do begin if time <> 0 then 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 := 1 to n do with b[i] do begin 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 = 0 then part := 0 else part := 1; writeln; end; write(f, b); end;
procedure Print(var b : TBase; var f : TFile); var i,j : byte; begin read(f, b); writeln('information about students : '); for i := 1 to n do with b[i] do begin writeln('Sportsmen N ',i); writeln('Name : ' , name); writeln('Start number : ' , number); writeln('Time : ' , time:6:3); if part = 1 then 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 = 1 then begin write('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 = 1 then begin write('Vvedite nomer sportsmena : '); readLn(sportsmenNumber); ShowInfo(base, baseFile, sportsmenNumber) end; temp := 0; writeln('Vy hotite udalit kakuu libo zapis?'); readln(temp); if temp = 1 then begin write('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
9.04.2007 3:06
это параметр через который отсылается переменная из главной программы в подпрограмму, её можно назвать как хочешь (практически), за исключением зарезервированных языком обозначений
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.