Привет всем! Помогите пожалуйста сделать так, что бы при выборе пункта "ENTER INFO TO DB" (см. прикрепленный файл) можно было вводить информацию о рейсах в базу данных. В прикрепленном файле меню создавалось при помощи Turbo Professional. Назначение программы - продажа билетов на самолеты.
Заранее благодарен.
Вот, что у меня имеется:
type
TReys = record
NR:integer;
PO,PP:string[30];
DateO,DateP:string[10];
TimeO,TimeP:string[5];
KolM:byte;
CenaB:string[7];
end;
TFReys = file of TReys;
procedure VvodR (var R:TReys);
begin
write('Nomer reysa: '); readln(R.NR);
write('Punkt otpravlenija: '); readln(R.PO);
write('Date otpravlenija: '); readln(R.DateO);
write('Vremja otpravlenija: '); readln(R.TimeO);
write('Punkt pribitija: '); readln(R.PP);
write('Date pribitija: '); readln(R.DateP);
write('Vremja pribitija: '); readln(R.TimeP);
write('Kolichestvo mest (biletov): '); readln(R.KolM);
write('Cena bileta: '); readln(R.CenaB);
end;
procedure RReys;
var F:TFReys;
R:TReys;
begin
assign(F,'Reys.dat');
{$I-}
Reset(F);
if IOResult<>0 then
Rewrite(F);
{$I+}
VvodR®;
Seek(F,FileSize(F));
write(F,R);
Close(F);
end;
Что именно не получается? Подключить приведенный выше код с помощью
{$I имя файла}
к programma.pas, и изменить процедуру P1 вот так:
Procedure P1;
begin
RReys;
end;
Пасиб большое! Все работает!
Вот продолжаю модернизировать свою программку... В общем теперь при выборе пункта меню 3, а именно "BUY A TICKET" программа выдает из базы данных № рейса и конечный пункт. Так вот вывести на экран всю информацию, которую содержит запись в одну строчку врядли получится. Как можно сделать так, чтобы эти записи можно было пролистывать стрелочками "вверх"/"вниз"? Соответственно по нажатию "ENTER" на выбранной записи программа отображала бы полную информацию о данной записи. Просто нужно как-то это оформить в виде таблицы. Заранее благодарен. (текст программы в прикрепленном файле)
Прикрепленные файлы
programma1.PAS ( 2.07 килобайт )
Кол-во скачиваний: 275
Я бы делал что-то типа меню. То есть описывал бы вот такую структуру:
Type
menuRec = record
s: string;
offset: longint;
end;
while not Eof(F) do
begin
read(F, R);
Writeln(R.NR: 10, R.PP: 20); { <--- Вот это - краткая информация, так? }
end;
uses crt;
type
TStr = string[30];
PStrArray = ^TStrArray;
TStrArray = array[0 .. pred(maxint div sizeof(TStr))] of TStr;
var
menuArr: PStrArray;
const
{ здесь используй переменную, хранящую количество записей в файле }
SizeOfFile = 50;
{ Меню будет отображаться между 5-ой и 20-ой строками экрана }
WinStartY = 5;
WinFinishY = 20;
function IntToStr(n: integer): string;
var
S: string[11];
begin
Str(n, S);
IntToStr := S;
end;
function min(A, B: integer): integer;
begin
min := A;
if B < a then min := B;
end;
function menu(arr: PStrArray): integer;
var
scrolled, currMenu: integer;
ch: char;
selection: boolean;
procedure Refresh;
var i: integer;
begin
for i := 1 to min(WinFinishY - WinStartY, SizeOfFile) do begin
if selection then
if i = currmenu then textbackground(red) else textbackground(black)
else textbackground(black);
gotoxy(10, winstartY + i);
write('':2, arr^[Pred(scrolled + i)]:30, '':2);
end;
end;
procedure Show;
begin
selection := true;
refresh;
end;
procedure Hide;
begin
selection := false;
refresh;
end;
begin
scrolled := 0; currMenu := 1;
show;
repeat
ch := readkey;
case ch of
#0:
case readkey of
#72: { up }
begin
Hide;
if currMenu > 1 then dec(currMenu)
else if scrolled > 0 then dec(scrolled);
Show;
end;
#80: { dn }
begin
Hide;
if currmenu < WinFinishY - WinStartY then inc(currMenu)
else if currmenu + scrolled < sizeoffile then inc(scrolled);
Show;
end;
end;
#13: ;
end;
until ch = #13;
menu := pred(currMenu + scrolled);
end;
var
i, m: integer;
begin
GetMem(menuArr, sizeoffile * sizeof(tstr));
{
Вместо след. цикла можешь проходить по файлу,
читать данные и формировать из них
краткое описание (до 30 символов длиной)
}
for i := 0 to pred(sizeoffile) do begin
menuArr^[i] := 'string #' + inttostr(i + 1);
end;
m := menu(menuArr);
gotoxy(1, 23);
{
Ну, а здесь - соответсвенно "лезешь" в файл данных через Seek(f, m),
читаешь полную информацию и отображаешь там, где тебе удобно
}
writeln('show the record #', m:2, ' data');
FreeMem(menuArr, sizeoffile * sizeof(tstr));
end.