Форум: "Основная";
Текущий архив: 2005.07.18;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.039 c