Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 18.12.2016, 17:55
Smile188 Smile188 вне форума
Прохожий
 
Регистрация: 02.10.2016
Сообщения: 18
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Исправить программу

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

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


Код:
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;
   .....


procedure free;    //очищаем массив
var
  I: Integer;
begin
for I := 0 to index-1 do
begin
us[i].login:='';
us[i].password:='';
end;
end;
var
file_name:string;
login,pass:string;
t1,t2:Textfile;
i,j,k:Integer;
a:Boolean=False;
log,password:String;
whatcando:integer;
logforchange:string;
whatchange:integer;
changelog,changepass,changetype,changeprogr:string;
newlog,newpass,newtype,whatcanexe:string;
exe:Integer;
quite:Integer;
str:array[0..100] of string[20];
s:string[20];
str1:array[0..100] of string[20];
str2,str3:string;
s1:string[20];
f1,f2,f3,f4:string;
begin
SetConsoleCP(1251);
SetConsoleOutputCP(1251);

write('Имя файла: ');
readln(file_name);
  repeat
if FileExists(file_name+'.txt') then
begin
AssignFile(t1,file_name+'.txt');
Reset(t1);
end;

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); //закрываем файл
Sort;
for i := 1 to index do
if (Us[i].login=us[i+1].login) or (Us[i].password=us[i+1].password) then  //если повторяются лог или пароли то
Writeln('Есть одинаковые логины или пароли!');
write('Введите логин-');
Readln(login);
write('Введите пароль-');
Readln(pass);
for I := 0 to index-1 do
if (login=User[i].login) and (pass=User[i].pass)then  //если найден польз
begin
if User[i].typeofuser='superuser' then  //если суперпольз
begin
.............
end
else
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;
if Pos('6', User[i].whichprogr) <> 0 then  RunLaba6;
if Pos('7', User[i].whichprogr) <> 0 then  RunLaba7;

//Break; 
end;
end;

write('1-Выйти из сеанса,2-завершить работу:');
readln(quite);
free;
index:=0;
 until quite=2;



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

Последний раз редактировалось Smile188, 18.12.2016 в 19:07.
Ответить с цитированием
  #2  
Старый 21.12.2016, 23:55
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,036
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Я не знаю что пытались править, но представленный код абсолютно не читабельный и править тут можно что-то только наугад.
Давай постановку задачи - будем посмотреть что тут можно сделать...

Последний раз редактировалось lmikle, 22.12.2016 в 02:01.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 23:46.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter