Форум по 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 число

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


Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
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,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

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

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


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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