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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.04.2009, 12:32   #1
Nikolaeva
Пользователь
 
Регистрация: 23.05.2007
Сообщений: 30
По умолчанию Глобальная переменная в проектном файле.

Можно ли сделать глобальную переменную в проектном файле(.DPR)?
Если да, то в каком месте ее прописать? В unit что написать?
Как между формами переменными пользоваться умею, а вот здесь не получается. Мне надо анализировать пароль. Подскажите, пожалуйста.
Nikolaeva вне форума Ответить с цитированием
Старый 22.04.2009, 12:43   #2
ArtInt
Форумчанин
 
Аватар для ArtInt
 
Регистрация: 06.03.2009
Сообщений: 583
По умолчанию

Насколько я помню глобальными переменными называют переменные расположенные в var перед implementation. В чем проблема? Опишите поподробнее как Вы анализируте пароль.
Не стыдно чего-то не знать, стыдно не стремиться к знаниям.
ArtInt вне форума Ответить с цитированием
Старый 22.04.2009, 12:52   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

обьявить то можно, но формы ту переменную не увидят
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 22.04.2009, 13:05   #4
ArtInt
Форумчанин
 
Аватар для ArtInt
 
Регистрация: 06.03.2009
Сообщений: 583
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
обьявить то можно, но формы ту переменную не увидят
Как это не увидят? Если прописать глобальную переменную str: string в Form1, в другой форме Form2 (например) в uses Unit1; А потом обращаться как Unit1.str То все должно сработать, она ведь не локальная... Или я не так понял вопрос?
Не стыдно чего-то не знать, стыдно не стремиться к знаниям.
ArtInt вне форума Ответить с цитированием
Старый 22.04.2009, 13:11   #5
Nikolaeva
Пользователь
 
Регистрация: 23.05.2007
Сообщений: 30
По умолчанию

В *.dpr нет implementation.
А, что unit не видит, я вижу.
Пароль ввожу при помощи InputBox и сразу в проекте анализирую. Но пользователю надо дать возможность самим менять пароль. А это должен сделать администратор. Пароль администратора пишу в программе. И это просто переменная. Так вот, если я вошла с этим паролем, у меня будет возможность уже писать другой(в форме). А у пользовательского пароля(он в файле txt) не будет такой возможности.
Nikolaeva вне форума Ответить с цитированием
Старый 22.04.2009, 13:32   #6
ArtInt
Форумчанин
 
Аватар для ArtInt
 
Регистрация: 06.03.2009
Сообщений: 583
По умолчанию

Насколько я понял алгоритм действий может быть такой. Сначала вводим глобальную переменную admin: boolean;, потом при создании формы например:
Код:
 procedure TForm1.FormCreate(Sender: TObject);
begin
  InputString:= InputBox('Input Box', 'Prompt', 'Default string');
  if InputString<>'admin' then admin:=true else admin:=false;
end;
После когда идет запрос на изменение пароля проверять admin=true, если да то разрешать редактировать файлы с паролями, если нет то выводить сообщение Не обладаете достаточными правами.
Значит слово 'admin' можно заменить на переменную, которая будет получать свое значение для сравнения из зашифрованного файла.
Не стыдно чего-то не знать, стыдно не стремиться к знаниям.
ArtInt вне форума Ответить с цитированием
Старый 22.04.2009, 14:29   #7
Nikolaeva
Пользователь
 
Регистрация: 23.05.2007
Сообщений: 30
По умолчанию

Спасибо большое, ArtInt за участие. Подали мысль. Сделала проще. В форме, где можно менять пароль, еще раз поставила InputBox. А дальше понятно.
Nikolaeva вне форума Ответить с цитированием
Старый 22.04.2009, 14:39   #8
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от ArtInt Посмотреть сообщение
Как это не увидят? Если прописать глобальную переменную str: string в Form1, в другой форме Form2 (например) в uses Unit1; А потом обращаться как Unit1.str То все должно сработать, она ведь не локальная... Или я не так понял вопрос?
прочти внимательно вопрос.

топикстартер, ну если так нужно именно это то вот пример:
Код:
program Project1;

uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1};

var s:string;

{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.
но ни один юнит не увидет этой переменной
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 23.04.2009, 12:31   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Если быть до конца чесными то есть один способ решить задачу именно так как автор хочет:
Нужно обьявить переменку как экспортируемую, найти ее адрес в этом модуле и работать с ней как с родной:
Код:
program Project1;

uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1};
var s:integer;
{$R *.res}

 exports s;

begin
{$o-}
 s:=87;
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.
А вот форма:
Код:
procedure TForm1.FormCreate(Sender: TObject);
var i:^integer;
begin
i:=GetProcAddress(HInstance,'s');
caption:=inttostr(i^);
end;
Но это уж очень... Бзик короче

Цитата:
Опишите поподробнее как Вы анализируте пароль.
А либо пря м DPR либо в OnCreate главной формы, но тогда она отвечает за все присходящее, и переменки пароля не в проекте а в юните формы - это надежнее.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переменная и Memo ben95 Общие вопросы Delphi 2 18.04.2009 12:10
c# ссылочная переменная hizahazahub Общие вопросы .NET 1 16.04.2009 20:53
Глобальная проблема для запрещения доступа Rusl92 Безопасность, Шифрование 6 10.11.2008 22:37
Странная переменная. GreenDan Помощь студентам 6 25.08.2008 19:35
Общая переменная А.Брей Помощь студентам 2 20.05.2007 18:13