Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.03.2009, 15:44   #1
Doublefaced
Форумчанин
 
Регистрация: 01.03.2009
Сообщений: 100
По умолчанию Типизированные файлы(Denlphi Console Application)

Здравствуйте! Прошу помощи.
Необходимо написать программу под Delphi(Console Application)

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

Имеется вариант, но он не работает, что ReadKey делать не знаю.
Собственно вот
Цитата:
uses crt;
type
TPerson = record {Запись о пассажире}
Fname:string[20]; {Имя пассажира}
Ffam:string[20]; {Фамилия пассажира}
kol:integer; {Колличество вещей}
ves:integer; {Общий вес багажа}
end;

var f:file of TPerson; {Типизированный файл}




{=========================Добавлени е Записи============================= ====}
Procedure Add; {Процедура Добавления Записи}
var Zapis:Tperson;
begin
clrscr;
{$I-}

reset(f); {Открытие файла}
seek(f,filesize(f)); {Устанавливаем указатель на конец файла}
if IoResult<>0 then {Если файл не существует}
rewrite(f); {Создаем новый файл}
{$I+}
write('Введите Имя пассажира: ');
readln(zapis.Fname);
write('Введите Фамилию пассажира: ');
readln(zapis.Ffam);
write('Введите Колличество Вещей: ');
readln(zapis.kol);
write('Введите общий вес багажа: ');
readln(zapis.ves);
write(f,zapis);
clrscr;
close(f);
write('Запись сохранена!');
end;

{================================== =================================== ======}




{================================== =Поиск============================= ======}
Procedure Poisk;
var Passajir:TPerson;
n:integer;
k:integer; {Счетчик записей}
begin
clrscr;
k:=0;
{$I-}

reset(f);
if IoResult<>0 then {Если файла нет}
begin
Write('Ошибка! Файл не найден!'+ #10#13+ 'Возможно файл не был создан.');
readln;
exit;
end;

Write('Введите ограничение веса: ');
Readln(n);

while not EOF(f) do {Пока нет конца файла}
begin
read(f,Passajir); {Читаем записи в файле}
if (Passajir.kol =1) and (Passajir.ves< n )then
begin
k:=k+1;
writeln('====================',k,'= =================');
writeln('Фамилия: ',Passajir.Ffam);
writeln('Имя: ',Passajir.Fname);
writeln('Кол-во вещей: ',Passajir.kol);
writeln('Вес Багажа: ',Passajir.ves);
writeln;
end;
end; {while}

if k=0 then
writeln('Не найдено!');

readln;
end;
{================================== =================================== =======}




begin
Assign(f,'C:\1.dat'); {Связываем текстовую переменную с файлом на диске}

while true do
begin
clrscr;
writeln('Выберите действие: '+ #10#13 + '1-Добавить новую запись в файл'+#10#13+
'2-Поиск пассажира'+ #10#13 +'3-Покинуть программу');
case readKey of
'1':Add;
'2':Poisk;
'3':exit;
end;

end;
end.
Doublefaced вне форума Ответить с цитированием
Старый 01.03.2009, 16:34   #2
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Цитата:
Имеется вариант, но он не работает, что ReadKey делать не знаю.
А Вы вообще запускали программу? Что-то я сильно сомневаюсь, ибо до readkey Вы бы и не добрались, Вам бы пришлось сначала убрать uses crt и все clrscr;
Не нужно бездумно сдирать чужие прораммы, тем боле написанные в Паскале. Консоль Делфи хоть и похожа на Паскаль, все таки это не Паскаль.
puporev вне форума Ответить с цитированием
Старый 01.03.2009, 16:45   #3
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Вот, убрал лишнее, заменил readkey на символ и все работает. Кстати писать в тексте программы по русски, не советую, консоль их не понимает.
Код:
program Project2;

{$APPTYPE CONSOLE}

uses
  SysUtils;

type
TPerson = record {Запись о пассажире}
          Fname:string[20]; {Имя пассажира}
          Ffam:string[20]; {Фамилия пассажира}
          kol:integer; {Колличество вещей}
          ves:integer; {Общий вес багажа}
          end;
var f:file of TPerson; {Типизированный файл}
    sim:char;
{=========================Добавление Записи=================================}
Procedure Add; {Процедура Добавления Записи}
var Zapis:Tperson;
begin
{$I-}
reset(f); {Открытие файла}
seek(f,filesize(f)); {Устанавливаем указатель на конец файла}
if IoResult<>0 then {Если файл не существует}
rewrite(f); {Создаем новый файл}
{$I+}
write('Vvedite imya passazira: ');
readln(zapis.Fname);
write('Vvedite familiyu passazira: ');
readln(zapis.Ffam);
write('Vvedite kolichestvo veshhej: ');
readln(zapis.kol);
write('V vedite obshhij ves bagaza: ');
readln(zapis.ves);
write(f,zapis);
close(f);
write('Zapis sohranena!');
end;
 {================================================= ==========================}
 {===================================Поиск========= ==========================}
Procedure Poisk;
var Passajir:TPerson;
n:integer;
k:integer; {Счетчик записей}
begin
k:=0;
{$I-}
reset(f);
if IoResult<>0 then {Если файла нет}
begin
Write('Oshibka! Fail ne najden!'+ #10#13+ 'Vozmozno fail ne byl sozdan.');
readln;
exit;
end;
Write('Vvedite ogranichenie vesa: ');
Readln(n);
while not EOF(f) do {Пока нет конца файла}
begin
read(f,Passajir); {Читаем записи в файле}
if (Passajir.kol =1) and (Passajir.ves< n )then
begin
k:=k+1;
writeln('====================',k,'================ ==');
writeln('Familia: ',Passajir.Ffam);
writeln('Imya: ',Passajir.Fname);
writeln('Kolichestvo veshhej: ',Passajir.kol);
writeln('Ves bagaza: ',Passajir.ves);
writeln;
end;
end; {while}

if k=0 then
writeln('Ne najdeno!');
closefile(f);
readln;
end;
{================================================= ===========================}
begin
Assign(f,'C:\1.dat'); {Связываем текстовую переменную с файлом на диске}
while true do
begin
writeln('Vyberite dejstvie: '+ #10#13 + '1-Dobavit zapis'+#10#13+
'2-Poisk'+ #10#13 +'3-Vyhod');
readln(sim);
case sim of
'1':Add;
'2':Poisk;
'3':exit;
end;

end;
end.
puporev вне форума Ответить с цитированием
Старый 01.03.2009, 16:46   #4
Doublefaced
Форумчанин
 
Регистрация: 01.03.2009
Сообщений: 100
По умолчанию

Да запускал. clrscr и uses crt убрал. Но Readkey не работает без crt.
Делфи же требует модуль для работы crt.
Doublefaced вне форума Ответить с цитированием
Старый 01.03.2009, 16:48   #5
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Да где же Вы убрали? Тогда зачем выложили код с clrscr? А модуля Crt в Делфи нет.
puporev вне форума Ответить с цитированием
Старый 01.03.2009, 16:51   #6
Doublefaced
Форумчанин
 
Регистрация: 01.03.2009
Сообщений: 100
По умолчанию

Цитата:
Сообщение от puporev Посмотреть сообщение
Да где же Вы убрали? Тогда зачем выложили код с clrscr? А модуля Crt в Делфи нет.
Я оставил, чтобы было ясно, что программу изначально писали для Паскаля, а не для Обджект Паскаля.
Doublefaced вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Типизированные файлы Xeon332 Помощь студентам 8 27.02.2009 20:15
типизированные файлы MyQwErTy Паскаль, Turbo Pascal, PascalABC.NET 7 11.11.2008 20:54
Типизированные файлы.Паскаль.help! ромка) Паскаль, Turbo Pascal, PascalABC.NET 1 17.05.2008 07:59
Типизированные файлы в C++ Builder Amateur Помощь студентам 3 12.11.2007 20:42