Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.07.18;
Скачать: CL | DM;

Вниз

ComboBox и Objects   Найти похожие ветки 

 
alexeis ©   (2005-07-01 09:14) [0]

Помогите разобраться плз.
Делаю формочку авторизации для запуска программы. На ней Combobox
и Edit. Создание списка Combobox делаю таким образом:
while not dm.dsHeald.Eof do
begin
if dm.dsHeald.FieldByName("isauser").AsInteger = 1 then
 cbName.Items.AddObject(dm.dsHeald.FieldByName("Fam").AsString,
          TObject(dm.dsHeald.FieldByName("pass").AsString));
dm.dsHeald.Next
end;
Потом проверяю на клик на кнопке:
if ePass.Text = PChar(cbName.Items.Objects[cbName.ItemIndex]) then
 ModalResult:=mrOK
else
 ModalResult := mrCancel;  
Смущают выделенные фрагменты. Можно ли так делать? Дело в том, что не работает. Причем интересный момент-если количестов символов в Едите совпадает с кол-вом символов объекта, связанного с листом, то считается, что условие выполняется.Как?


 
begin...end ©   (2005-07-01 09:17) [1]

> alexeis ©   (01.07.05 9:14)
> Можно ли так делать?

Так делать нельзя.


 
Digitman ©   (2005-07-01 09:21) [2]


> Можно ли так делать?


нельзя


> Дело в том, что не работает


понятное дело ... поэтому и не работает, что так делать нельзя

макс.длина пароля ограничена ?


 
alexeis ©   (2005-07-01 09:39) [3]

>>Digitman
Нет, не ограничена. А как тогда проще? Не хочется создавать рекорды из одной записи-пароля


 
begin...end ©   (2005-07-01 09:45) [4]

> alexeis ©   (01.07.05 9:39) [3]
> А как тогда проще?

TStrings.Names, TStrings.Values?


 
Dimous   (2005-07-01 09:54) [5]

Нужно выделять память под строку.
Как вариант: можно создать TStringList, в котором и хранить все пароли.

А вообще хорошо ли для всех пользователей отображать список всех имен, зачем им знать кто еще может работать? ИМХО, правильнее было бы вводить имя и пароль (последнее введенное имя можно сохранять), а уж потом осуществлять проверку...


 
alexeis ©   (2005-07-01 09:56) [6]

Thanx


 
Digitman ©   (2005-07-01 09:56) [7]

если после заполнения комбобокса не закрывать НД, в поле pass которого хранятся пароли, то задача упрощается :

//заполняем комбобокс
with dm.dsHeald,  cbName.Items do
while not Eof do
begin
if FieldByName("isauser").AsInteger = 1 then
  AddObject(FieldByName("Fam").AsString, TObject(GetBookmark)); //в кач-ве объекта используем закладку тек.записи
Next;
end;

//проверяем пароль на совпадение

with dm.dsHeald,  cbName.Items do
begin
 GotoBookmark(TBookmark(Objects[cbName.ItemIndex]));
 if ePass.Text = FieldByName("pass").AsString then
   ModalResult:=mrOK
 else
   ModalResult := mrCancel;
end;

//перед явной или неявной очисткой комбобокса (в т.ч. при его разрушении) во избежание утечек памяти
обязательно уничтожить сделанные в НД закладки
//НД, в котором при заполнении комбобокса делались эти закладки, при этом д.б. все еще открыт !

with dm.dsHeald, cbName.Items do
for i:= 0 to Count - 1 do
 FreeBookmark(TBookmark(Objects[i]));


 
alexeis ©   (2005-07-01 10:05) [8]

Да с букмарками поинтересней вариант. Попробую.



Страницы: 1 вся ветка

Текущий архив: 2005.07.18;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.025 c
11-1103113734
Valet
2004-12-15 15:28
2005.07.18
EditBox не редактируется ручками в W2K SP3 Eng


1-1120069504
romariosp
2005-06-29 22:25
2005.07.18
Размер бинарника


14-1119425225
nik90210
2005-06-22 11:27
2005.07.18
Не найдется ли доброго человека, который подарит мне песню?


1-1118557977
Igor Stepanov
2005-06-12 10:32
2005.07.18
Искажения графика при передаче через буфер обмена в Excel


14-1119789864
Квэнди
2005-06-26 16:44
2005.07.18
Фильмы бесплатно