Вопрос № 174096: Здравствуйте. Уважаемые эксперты у меня такая проблема. Надо создать модуль для обработки пароля. Вот, что получилось: procedure TPasswordDlg.OKBtnClick(Sender: TObject); var sub:string[40]; begin if Password.Text='1111'...
Вопрос № 174096:
Здравствуйте. Уважаемые эксперты у меня такая проблема. Надо создать модуль для обработки пароля. Вот, что получилось:
procedure TPasswordDlg.OKBtnClick(Sender: TObject); var sub:string[40]; begin if Password.Text='1111' then begin sub:=InputBox('Программа доступна', 'Ваш пароль', 'Правильный'); Form1:=TForm1.OnCreate; Form1.Show; end else begin sub:=InputBox('Неправильный пароль', 'Проверте
ввод пароля','Повторите'); end; end;
При запуске программы выходят следующие ошибки подскажите, пожалуйста в чем дело И как это можно исправить
[Error] Unit2.pas(38): Undeclared identifier: 'InputBox' [Error] Unit2.pas(39): Method identifier expected [Fatal Error] Unit1.pas(23): Could not compile used unit 'Unit2.pas'
Отвечает OlegD, 1-й класс :
Здравствуйте, Vlad9240.
Проверьте в списке USES текущего модуля должен быть указан юнит DIALOGS. Функций InputBox относиться к данному юниту. Если его нет в списке используемых юнитов, то выдается ошибка Undeclared identifier: 'InputBox'.
Также Вы неправильно создаете форму Form1. для ее создания необходимо изменить Вашу строчку этой:
Form1:=TForm1.Create(nil);
Ответ отправил: OlegD, 1-й класс
Ответ отправлен: 09.11.2009, 16:44
Оценка ответа: 5 Комментарий к оценке: Спасибо! Так и было:)
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 256323
на номер 1151 (Россия) |
Еще номера »
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Отвечает Victor Pyrlik, Модератор :
Здравствуйте, Vlad9240. Это делается не совсем так.. Файл проекта (Delphi 7) я прикрепил. А так: 1. делается форма ввода пароля 2. Определяется алгоритм проверки пароля.. Самый простой случай - это операция xor на примере простейшей функции 3. В главном модуле вызывается форма проверки пароля (в модуле проекта! ) и если все нормально, запускаем приложение, иначе просто выходим.
function TForm2.CheckPass(s,
pas: String; key: char): boolean; var i:integer; s2:String; begin for i:= 1 to Length(s) do begin s2 := s2+char(ord(s[i]) xor ord(key)); end; result := s2 = pas; end;
а проверка осуществляется так: procedure TForm2.BitBtn1Click(Sender: TObject); begin if CheckPass(Edit1.Text, 'PPPP','a') then ModalResult := mrOk else Messag
eBox(GetActiveWindow,'Пароль не верный!',PChar(Application.Title),MB_OK+MB_ICONQUESTION); end;
ну а вот и сам вызов: program Project1;
uses Forms, Controls, Unit1 in 'Unit1.pas' {Form1}, Unit2 in 'Unit2.pas' {Form2};
{$R *.res} var f:TForm2; begin Application.Initialize; f := TForm2.Create(nil); if f.ShowModal = mrOk then begin Application.CreateForm(TForm1, Form1); Application.Run;
end; end.
Все в проекте.
PS: да, пароль '1111' Прикрепленный файл:загрузить »
----- Жизнь игрушка – пока играешь сам..
Ответ отправил: Victor Pyrlik, Модератор
Ответ отправлен: 09.11.2009, 17:23 Россия, Екатеринбург Тел.: 89043822027 ICQ # 490191733 Абонент Skype: stells00
Оценка ответа: 5 Комментарий к оценке: Спасибо!
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 256325
на номер 1151 (Россия) |
Еще номера »
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Оценить выпуск »
Нам очень важно Ваше мнение об этом выпуске рассылки!
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.