Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
4-1117027830
Marser
2005-05-25 17:30
2005.07.18
GUI на WinAPI


3-1118138638
ElenaPetra
2005-06-07 14:03
2005.07.18
Хранение Excel-файлов в бд SQL.


1-1119785382
Sower
2005-06-26 15:29
2005.07.18
Чтение из конца в начало.


9-1112696766
_sHaDe_
2005-04-05 14:26
2005.07.18
Вопрос по WaterPlane.


14-1119391696
ЦУКОР5
2005-06-22 02:08
2005.07.18
В Edit только цифры





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский