Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.025 c
14-1118818636
nik90210
2005-06-15 10:57
2005.07.18
Кто нибудь посещает вап-сайты?


1-1119985932
Green_Templar
2005-06-28 23:12
2005.07.18
FindFirst


14-1119343238
Holy
2005-06-21 12:40
2005.07.18
Предложения...


14-1119725269
lookin
2005-06-25 22:47
2005.07.18
Восстановить контакт в ICQ


10-1096905096
Avruk
2004-10-04 19:51
2005.07.18
После закрытия программа остается в списке процессов




   Наверх