![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Хранение второго значения в ListBox. [D7, XP]
allucard © (2007-04-12 11:27:00)Доброго дня.
Есть список пользователей(ListBox), у каждого пользователя есть свой пароль а также время регистрации, эти данные можно хранить как то в этом-же ListBox?
Или обязательно база данных?
Спасиб за варианты.
{RASkov} (2007-04-16 12:34:00) [1]> [79] Сергей М. © (16.04.07 12:16)
Ясно. Спасибо.
Сергей М. (2007-04-16 12:16:00) [2]
> {RASkov} (16.04.07 12:14) [78]
> чем лучше TreeView?
Тем что там уже все "запихнуто".
{RASkov} (2007-04-16 12:14:00) [3]> [76] Сергей М. © (16.04.07 12:11)
Сорри... не успел, я вплотную незнаком не с TreeView не с ListView, а чем лучше TreeView?
{RASkov} (2007-04-16 12:13:00) [4]> [67] allucard (16.04.07 11:41)
> [69] Сергей М. © (16.04.07 11:47)
> Чем тебе TreeView не угодил ?
Или как вариант ListView:
> запхнуть ещё хотя бы два параметра для каждой записи.
Для каждой записи там есть еще дополнительный (SubItem)Strings и пихай в него сколько угодно параметров...строковых.
Тоже, вроде, умеет сохранять все сам... может вру.
Сергей М. (2007-04-16 12:11:00) [5]TTreeView
allucard (2007-04-16 12:09:00) [6]А что лучше подойдёт:
TreeView или ListView?
Сергей М. (2007-04-16 11:54:00) [7]Открываешь окно справки, вводишь стороку поиска фразы TListBox..
allucard (2007-04-16 11:53:00) [8]Где описан ListBox?
Сергей М. (2007-04-16 11:50:00) [9]
> читаешь по адресу то, чего не существует там
Ну вот для начала и прими меры к тому, чтобы это самое "то, чего не существует" начало существовать "там".
allucard (2007-04-16 11:49:00) [10]
> Сергей М. © (16.04.07 11:47) [69]
Сейчас буду розбираться.
В принцыпе цель - это познание.
Так что Respect всем помогающим.
Понял многое.
allucard (2007-04-16 11:47:00) [11]
> Но в дан.случае AV-исключение при выполнении ReadComponent
> не имеет к этому никакого отношения.
Понятное дело, когда читаешь по адресу то, чего не существует там.
Сергей М. (2007-04-16 11:47:00) [12]
> allucard (16.04.07 11:41) [67]
Чем тебе TreeView не угодил ?
В случае с ним вообще ничего "запихивать" не нужно - компонент сделает все сам.
Сергей М. (2007-04-16 11:44:00) [13]
> FileStream.WriteComponent(Form2.ListBox1) не записывает
> компоненты, находящиеся внутри ListBox1
Да , не записывает. И не должен.
Но в дан.случае AV-исключение при выполнении ReadComponent не имеет к этому никакого отношения.
allucard (2007-04-16 11:41:00) [14]В общем как я понял мир познания устроен по кругу, после недельного разбирательства так и не понятным осталось как в компонент ListBox запхнуть ещё хотя бы два параметра для каждой записи.
:(
Грустно.
allucard (2007-04-16 11:40:00) [15]
> Сергей М. © (16.04.07 11:10) [65]
По ходу, я добавляю в ListBox1 пару обьектов, потом сохраняю его в файл.
И если не закрывать приложение то компоненты активируются нормально.
Короче FileStream.WriteComponent(Form2.ListBox1) не записывает компоненты, находящиеся внутри ListBox1.
Сергей М. (2007-04-16 11:10:00) [16]
> Что на этот раз то?
Либо Form2 либо Form2.ListBox1 содержат nil или "мусор".
allucard (2007-04-16 11:06:00) [17]Сделал так:
Запись компонента:
FileStream := TFileStream.Create('users.dat', fmCreate);
FileStream.WriteComponent(Form2.ListBox1);
FileStream.Free;
Чтение:
if (FileExists('users.dat')) then
begin
FileStream := TFileStream.Create('users.dat', fmOpenRead);
FileStream.ReadComponent(Form2.ListBox1);
FileStream.Free;
end;
Но при чтении свойств обьектов внутри TListBox1 сволочь пишет AccessViolation.
Что на этот раз то?
Сергей М. (2007-04-13 15:13:00) [18]
> allucard (13.04.07 14:16) [62]
> Указатели на указатели ?)
А это что, нонсенс ?)
И такое бывает)
Хотя редкость)
А вот тебе обычный пример - на некую форму "кинули" некий "батон".
В рез-те ты имеешь:
TfrmReportParams = class(TForm)
Button1: TButton; <- вот он, указатель на структурированные данные, появившийся в результате "батонокидательства" !)
..
end;
allucard (2007-04-13 14:16:00) [19]
> Сергей М. © (13.04.07 14:01) [60]
Указатели на указатели ?)
Да уж.
Класс экземпляр класса никак не запишешь, свой так точно.
Хотя стоп!
FileStream.WriteComponent(self);
{RASkov} (2007-04-13 14:15:00) [20]
var U: TUser; S: String;
..............
try
AssignFile (F, ExtractFilePath(ParamStr(0))+'data\users.dat');
Rewrite(F);
try
for i:=0 to ListBox1.Count - 1 do begin
U:=TUser(ListBox1.Items.Objects[i]);
if U=nil then Continue;
S:=Format('%s;%s;%s', [U.username,U.realname, U.password');
Write Ln(f, S);
end;
finally CloseFile(F); end;
except
ShowMessage('Блин, косяк при сохранении пассвордов..:(');
end;
Читать из этого файла и загружать в ListBox сам придумай как.... не сложно.
ЗЫ Можно и шифровать пароли если нужно....