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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.12.2016, 17:54   #1
Smile189
Пользователь
 
Регистрация: 01.10.2016
Сообщений: 25
По умолчанию Исправить ошибки

Как сделать так, что бы user имел доступ к нескольким программам записанным в файле(в файле они записаны без пробелов, например, 123 . и нам нужно запустить 2 программу или любую другую ) Проблема в том , что сейчас программа читает только 1 число

Я знаю, что нужно сделать User[i].whichprogr массивом, но у меня выходят ошибки

Код:

program Project1;

{$APPTYPE CONSOLE}



uses
  windows,
  SysUtils,
  Laba1 in 'Laba1.pas',
  laba2 in 'laba2.pas',
  Laba3 in 'Laba3.pas',
  Laba4 in 'Laba4.pas',
  Laba5 in 'Laba5.pas',
  Laba6 in 'Laba6.pas',
  Laba7 in 'Laba7.pas';

type
Tuser=record    
typeofuser:string;
login,pass:string;
whichprogr:string;
end;
type
   Tsort = record     
     login:  string[20];
     password: string [20];
   end;
  var  User:array[0..100] of Tuser;
  us:array[0..100] of Tsort;

  index:integer;

.......................


while not Eof(t1) do          //?·?????*???¬ ???*???? ???§ ???*?©?«?*
begin
Readln(t1,User[index].login);
Readln(t1,User[index].pass);
Us[index].login:=User[index].login;
Us[index].password:=User[index].pass;
Readln(t1,User[index].typeofuser);
i := 0;
while User[index].whichprogr[i-1] <> '' do //
begin
inc(i);
setlength(User[index].whichprogr, i);
Readln(t1,User[index].whichprogr[i-1]);
end;
Readln(t1);
Inc(index);
end;
CloseFile(t1); 

...........



if User[i].typeofuser='user' then
begin
write('Запустить лабу: ': ');
readln(whatcando);
if User[i].whichprogr='1' then  RunLaba1;
if User[i].whichprogr='2' then  RunLaba2;
if User[i].whichprogr='3' then  RunLaba3;
if User[i].whichprogr='4' then  RunLaba4;
if User[i].whichprogr='5' then  RunLaba5;
if User[i].whichprogr='6' then  RunLaba6;
if User[i].whichprogr='7' then  RunLaba7;
Break;
end;
end;


В файле информация записана так:
name2-логин
1111-пароль
user- тип пользователя
6-номер лабы, вот тут может быть написано вместо одной цифры несколько, например, 123 и при вызове 3 лабы она должна запуститься

Последний раз редактировалось Smile189; 17.12.2016 в 18:04.
Smile189 вне форума Ответить с цитированием
Старый 17.12.2016, 18:30   #2
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

Попробуй так
Код:

if User[i].typeofuser='user' then
begin
write('Запустить лабу: ': ');
readln(whatcando);
if Pos('1', User[i].whichprogr) <> 0 then  RunLaba1;
if Pos('2', User[i].whichprogr) <> 0 then  RunLaba2;
if Pos('3', User[i].whichprogr) <> 0 then  RunLaba3;
if Pos('4', User[i].whichprogr) <> 0 then  RunLaba4;
if Pos('5', User[i].whichprogr) <> 0 then  RunLaba5;
// И так далее
Break;
end;
end;

Последний раз редактировалось Aliens_wolfs; 17.12.2016 в 18:44.
Aliens_wolfs вне форума Ответить с цитированием
Старый 18.12.2016, 00:16   #3
Smile189
Пользователь
 
Регистрация: 01.10.2016
Сообщений: 25
По умолчанию

Теперь программа после ввода имени файлы прекращает работать , до этого все нормально было
Можете посмотреть код ?

Последний раз редактировалось Smile189; 18.12.2016 в 09:54.
Smile189 вне форума Ответить с цитированием
Старый 18.12.2016, 00:58   #4
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

Цитата:
Теперь программа после ввода имени файлы прекращает работать , до этого все нормально было
Ну до этого она у тебя не запускала нужные процедуры RunLaba, видимо есть ошибка в каком то Laba.pas, проверь по отдельности каждую RunLaba тогда выявишь из за чего вылетает программа. и еще попробуй убрать break он у тебя походу весь цикл останавливает.
Код:
write('запустить лабу: ');
readln(whatcando);
if Pos('1', User[i].whichprogr) <> 0 then  RunLaba1;
if Pos('2', User[i].whichprogr) <> 0 then  RunLaba2;
if Pos('3', User[i].whichprogr) <> 0 then  RunLaba3;
if Pos('4', User[i].whichprogr) <> 0 then  RunLaba4;
if Pos('5', User[i].whichprogr) <> 0 then  RunLaba5;
if Pos('6', User[i].whichprogr) <> 0 then  RunLaba6;
if Pos('7', User[i].whichprogr) <> 0 then  RunLaba7;
Break; // Попробуй убрать
end;
Да кстати зачем у тебя 2 раза подряд файл закрывается, достаточно одного.
Код:
end;
CloseFile(t1);
CloseFile(t1); //закрываем файл
Sort;

Последний раз редактировалось Aliens_wolfs; 18.12.2016 в 12:25.
Aliens_wolfs вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
исправить ошибки ччч1 Помощь студентам 1 12.05.2013 21:14
исправить ошибки Vetal_1715 Помощь студентам 0 23.05.2012 12:39
исправить ошибки Seferus Паскаль, Turbo Pascal, PascalABC.NET 3 06.10.2011 17:54
исправить ошибки admiral121 Паскаль, Turbo Pascal, PascalABC.NET 7 13.12.2010 12:25
исправить ошибки dragun4ik Помощь студентам 6 30.01.2010 16:34