Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Разное - паскаль задача с меню и открытием файла нужна помощь

Ответить
Настройки темы
Разное - паскаль задача с меню и открытием файла нужна помощь

Новый участник


Сообщения: 23
Благодарности: 0


Конфигурация

Профиль | Отправить PM | Цитировать


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

Код: Выделить весь код
uses crt;
type mas = array [1..9] of string[20];
const stor: mas = ('1','2','3','4','5','6','7','8','9' );
var i,k: byte;
kod: char;
begin
clrscr;
writeln(' название программы');
Kod:=' ';
while kod<>#27 do
begin
for i:=1 to 9 do begin
if I=K then begin
textbackground(1);
textcolor(0);
end
else begin
textbackground(0);
textcolor(15)
end;
gotoxy(1,i+1);
write(stor[i]);
end;

kod:=readkey;
if kod=#0 then
begin
kod:=readkey;
if kod=#72 then
if k>1 then k:=k-1 else k:=9;
if kod=#0 then
end;
end;
end.
c:=readkey;
if c=#80 then
begin
gotoXY(10,whereY-1);
write(s);
end;
if c=#72 then
begin
gotoXY(10,whereY+1);
write(s);
end;

нужно связать это меню с текстовыми файлами,хотябы помогите чтобы прога реагировала на нажатие клавиши enter при выборе строчки

Отправлено: 17:03, 11-11-2009

 

Аватара для lxa85

Необычный


Contributor


Сообщения: 4463
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


DiGer911. Я тут вашему коду некую читаемость придал.
Расставьте пожалуйста комментарии к программе.
В частности - какой end; что закрывает.
Какой скан код, к какой кнопке относится.
Напишите логику ее работы.
Код: Выделить весь код
uses crt;
type 
	mas = array [1..9] of string[20];
const 
	stor: mas = ('1','2','3','4','5','6','7','8','9' );
var 
	i,k: byte;
	kod: char;
begin
	clrscr;
	writeln(' название программы');
	Kod:=' ';
	while kod<>#27 do 
	begin
		for i:=1 to 9 do 
		begin
			if I=K then 
			begin
				textbackground(1);
				textcolor(0);
			end
		else 
		begin
			textbackground(0);
			textcolor(15)
		end;
		gotoxy(1,i+1);
		write(stor[i]);
	end;

	kod:=readkey;
	if kod=#0 then
	begin
		kod:=readkey;
		if kod=#72 then
			if k>1 then 
			k:=k-1 
				else 
			k:=9;
	if kod=#0 then
	end;
	
	end;
end.


c:=readkey;
if c=#80 then
begin
gotoXY(10,whereY-1);
write(s);
end;
if c=#72 then
begin
gotoXY(10,whereY+1);
write(s);
end;
Вместо множественных if _ then используйте конструкцию case _ of.

-------
- Я не разрешаю тебе быть плохой! Потому что плохие люди совершают плохие поступки. А это нехорошо!
(Из наставлений 5 летней девочки своей младшей сестре)


Отправлено: 17:58, 11-11-2009 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Новый участник


Сообщения: 23
Благодарности: 0

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
type mas = array [1..9] of string[20];
const stor: mas = ('1','2','3','4','5','6','7','8','9' );
       var
       i,k: byte;
       n,kod: char;
    begin
        clrscr;
        writeln('   название   ');
        Kod:=' ';
        while kod<>#27 do
           begin
               for i:=1 to 9 do 
                                   begin
                                if I=K then begin
                                              textbackground(5);
                                              textcolor(0);
                                   end
                                   else 
                                   begin
                                               textbackground(0);
                                               textcolor(15)
                                   end;
                                gotoxy(1,i+1);
                                write(stor[i]);
           end;

kod:=readkey;{передвижение клавишей вверх}
if kod=#0 then
          begin
              kod:=readkey;
              if kod=#72 then
              if k>1 then k:=k-1 else k:=9;
              if kod=#27 then
          end;
kod:=readkey;
if kod=#0 then
          begin
                   kod:=readkey;{передвижение клавишей вниз}
                   if kod=#80 then
                   if k>1 then k:=k+1 else k:=k-1;
                   if kod=#27 then
          end;
    end;
end.
вот обновил немного код,пока что работает только перемещение,т.е перемещение для выбора нужной строчки,но тоже с проблемами,только снизу вверх и нужно нажимать 2раза на клавишу вверх или вниз.проверьте в паскале сами поймете что к чему.
я сам с трудом понимаю как работает,т.к взял половину изходника из другой задачи,но решить както это надо!нам это ничего непреподавали а сделать надо!вот и хожу по форумам
помогите чем можете пожалуста

Отправлено: 18:43, 11-11-2009 | #3


Аватара для lxa85

Необычный


Contributor


Сообщения: 4463
Благодарности: 994

Профиль | Сайт | Отправить PM | Цитировать


сейчас оттрассировать не успею. В воскресенье в лучшем случае.

Отправлено: 18:58, 11-11-2009 | #4


Новый участник


Сообщения: 23
Благодарности: 0

Профиль | Отправить PM | Цитировать


люди,переделал прогу!теперь проблема в том что неоткрывает файл!никаких ошибок невыдает!а содержимое непоказывает!
текстовый файл создал но хз в чем проблема!помогите блин завтра надо сдать
Код: Выделить весь код
Uses CRT;
Const MaxMenuItem = 4;
Var Ret : Byte;
  f: text;
  s: string;

Function MainMenu(R_Select:Byte):Byte;
Type TMenu = record
         X,Y : Byte;
           S : String[20];
     End;
Var
    Menu : Array [0..MaxMenuItem] Of TMenu;
    Run : Boolean; {ўлЎа** Їг*Єв ¬Ґ*о}
    Sel : Byte;
    TC, TB : Byte; {color}
    Procedure DrawMenu;
    Var I : Byte;
    Begin
         For I := 0 To MaxMenuItem Do
         Begin
              GotoXY(Menu[i].X, Menu[i].Y);
              Write(Menu[i].S);
         End;
    End;
Procedure Select (I:Byte);
    Begin
         TextBackground(TC); TextColor(TB);
         GotoXY(Menu[i].X, Menu[i].Y);
         Write(Menu[i].S);
         TextBackground(TB); TextColor(TC);
    End;
    Procedure DeSelect (I:Byte);
    Begin
    GotoXY(Menu[i].X, Menu[i].Y);
         Write(Menu[i].S);
            End;
Begin
     Menu[0].S := 'item 0'; Menu[0].X := 5; Menu[0].Y :=  4;
     Menu[1].S := 'item 1'; Menu[1].X := 5; Menu[1].Y :=  5;
     Menu[2].S := 'item 2'; Menu[2].X := 5; Menu[2].Y :=  6;
     Menu[3].S := 'item 3'; Menu[3].X := 5; Menu[3].Y :=  7;
     Menu[4].S := ' exit '; Menu[4].X := 5; Menu[4].Y :=  8;
     ClrScr;
     TC := TextAttr mod 16;
     TB := TextAttr div 16;
     DrawMenu;
     Sel := R_Select;
     Select(Sel);
     Run := False;
     While Not Run Do Begin
           Case ReadKey Of
                #13 : Run := True;
                #27 : Begin
                           Run := True;
                           Sel := MaxMenuItem;
                      End;
                #0 : Case ReadKey Of
                           #72 : Begin
                                      DeSelect(Sel);
                                      If Sel = 0
                                      Then Sel := MaxMenuItem
                                      Else Sel := Sel - 1;
                                      Select(Sel);
                                 End;
                           #80 : Begin
                                      DeSelect(Sel);
                                      If Sel = MaxMenuItem
                                      Then Sel := 0
                                      Else Sel := Sel + 1;
                                      Select(Sel);
                                 End;
                      End;
           End;
     End;
     MainMenu := Sel;
     ClrScr;
End;
Begin
     ClrScr;
     Ret := 0;
     Repeat
          Ret := MainMenu(Ret);
          Case Ret Of
              0: Begin
               WriteLn('‚лЎа** Їг*Єв: ', Ret);
                  assign(f,'c:\A.txt');
                  reset(f);
                  close(f);
                  ReadLn;
                  End;
               1: Begin
                       WriteLn('‚лЎа** Їг*Єв: ', Ret);
                       ReadLn;
                  End;
               2: Begin
                       WriteLn('‚лЎа** Їг*Єв: ', Ret);
                       ReadLn;
                  End;
               3: Begin
                       WriteLn('‚лЎа** Їг*Єв: ', Ret);
                       ReadLn;
                  End;
               Else Begin
                       WriteLn('‚л室 Ё§ Їа®Ја*¬¬л');
                       ReadLn;
                    End;
          End; {case Ret}
     Until Ret = MaxMenuItem;
End.
var
  f: text;
  s: string;
begin
  assign(f,'filename');
  reset(f);
  readln(f,s);
  close(f);
end;

Отправлено: 20:14, 11-11-2009 | #5


Аватара для Alan85

Забанен


Сообщения: 463
Благодарности: 91

Профиль | Цитировать


Цитата DiGer911:
assign(f,'c:\A.txt'); reset(f); close(f); »
а почему он должен что-то показать - ты его открываешь и тут же закрываешь ничего не сделав.

Отправлено: 20:49, 11-11-2009 | #6


Новый участник


Сообщения: 23
Благодарности: 0

Профиль | Отправить PM | Цитировать


Alan85,
да,я уже понял в чем ошибкаступил я

Отправлено: 21:45, 11-11-2009 | #7



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Разное - паскаль задача с меню и открытием файла нужна помощь

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Разное - [решено] нужна помощь в решении проги Паскаль(по методу Функции) eXPertVL Программирование и базы данных 2 29-11-2009 22:48
Проблема с открытием файла JPG icom756 Цифровое изображение 1 23-06-2009 17:24
Нужна помощь по настройкам файла ответов и его срабатыванию при установке Wu-Tang Хочу все знать 97 28-05-2008 18:53
Нужна помощь Новое меню завершения работы Derus Наборы обновлений для Windows XP/2003/Windows 7 7 27-01-2008 01:55
Нужна помощь!!! enotkin Непонятные проблемы с Железом 15 06-12-2005 07:36




 
Переход