![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Хранение второго значения в ListBox. [D7, XP]
allucard © (2007-04-12 11:27:00)Доброго дня.
Есть список пользователей(ListBox), у каждого пользователя есть свой пароль а также время регистрации, эти данные можно хранить как то в этом-же ListBox?
Или обязательно база данных?
Спасиб за варианты.
allucard (2007-04-13 09:29:00) [41]Но как теперь эти обьекты записать в файл?
Пишу так:
ListBox1.Items.SaveToFile(ExtractFilePath(ParamStr(0))+'data\users.dat');
Но сохраняются только названия а не обьекты:
ListBox1.Items.AddObject(user.realname, user);
Т.е. при загрузке
ListBox1.Items.LoadFromFile(ExtractFilePath(ParamStr(0))+'data\users.dat');
Получаю только названия записей user.realname.
allucard (2007-04-12 20:03:00) [42]
> _Аноним (12.04.07 13:19) [24]
А как с ними потом работать.
Как загрузить из этих обьектов их данные из списка ListBox.
allucard (2007-04-12 14:49:00) [43]
> _Аноним (12.04.07 14:26) [37]
Ой, е.
Сенькс.
Пошёл писать дальше.
_Аноним (2007-04-12 14:26:00) [44]У тебя там было
ListBox1.Items.AddObject(user.realname ;user);
фактические параметры разделяются запятой, формальные - точкой с запятой
allucard (2007-04-12 14:14:00) [45]
> clickmaker © (12.04.07 13:52) [35]
Это глюк какой-то.
Вот так работает и не пишет никакой ошибки:
procedure TForm2.Button1Click(Sender: TObject);
var sl: TStringList;
begin
User := TUser.Create;
User.username := Edit1.Text;
User.password := Edit2.Text;
User.realname := Edit3.Text;
sl:= TStringList.Create;
sl.AddObject(user.realname,user);
user.free;
sl.Free;
end;
clickmaker (2007-04-12 13:52:00) [46]
> [34] allucard (12.04.07 13:50)
Цитрамону выпей.
Тебе в [24] дали готовый код, какие еще мысли нужны?
allucard (2007-04-12 13:50:00) [47]
> clickmaker © (12.04.07 13:48) [33]
умные мысли уже мне не приходят.
да и голова розболелась.
В чём ошибка?
Или глюк это.
clickmaker (2007-04-12 13:48:00) [48]
> [32] allucard (12.04.07 13:42)
> По ходу нельзя свой окласс зафигарить
а мужики-то и не знают.
И фигарят и фигарят себе...
allucard (2007-04-12 13:42:00) [49]По ходу нельзя свой окласс зафигарить в методом AddObject, даже если его сделать дочерним TObject.
allucard (2007-04-12 13:32:00) [50]
> clickmaker © (12.04.07 13:30) [30]
Без неё всёравно ошибка.
Пробовал метод AddItem, таже ошибка.
clickmaker (2007-04-12 13:30:00) [51]
> ListBox1.Items.AddObject(user.realname; user);
> user.free;
зачем вторая строка?
allucard (2007-04-12 13:29:00) [52]>_Аноним (12.04.07 13:19) [24]
procedure TForm2.Button1Click(Sender: TObject);
begin
User := TUser.Create;
User.username := Edit1.Text;
User.password := Edit2.Text;
User.realname := Edit3.Text;
ListBox1.Items.AddObject(user.realname; user);
user.free;
end;
Пишет ошибку:
Not enough actual parameters.
clickmaker (2007-04-12 13:27:00) [53]
> его необходимо обьявить в розделе VAR
да, кстати, и не необходимо. Вопрос удобства и реализации самого класса.
ListBox.Add(UserName, TUser.Create(Password, RegTime));
clickmaker (2007-04-12 13:23:00) [54]
> Чтоб экземпляр класса можно было создать, его необходимо
> обьявить в розделе VAR
ну так и объяви, в чем проблема?
allucard (2007-04-12 13:23:00) [55]
> _Аноним (12.04.07 13:19) [24]
прикольно.
allucard (2007-04-12 13:22:00) [56]
> Ты про массивы слышал?)))
Про массивы да, про массивы обьектов - нет? а такое есть?
>Virgo_Style © (12.04.07 13:17) [22]
Идея.
>clickmaker © (12.04.07 13:17) [23]
Чтоб экземпляр класса можно было создать, его необходимо обьявить в розделе VAR.
_Аноним (2007-04-12 13:19:00) [57]
> А если у меня 1000 пользователей, то обьявлять 1000 переменных
> класса TUser в разделе var модуля?
не нужно. Используй одну переменную (причем локальную), она в цикле будет последовательно указывать на разные экземпляры.
var
User : TUser ;
for I:=0 to 1000 do
begin
User :=TUser.Create;
User.UserName:='Вася №' + INtToStr(I);
User.Password:='12345';
ListBox.Items.AddObject(User.UserName, User);
end;
А потом не забудь пройти в цикле и освободить память под объекты
clickmaker (2007-04-12 13:17:00) [58]
> [20] allucard (12.04.07 12:53)
зачем тебе переменные? Они у тебя будут в Objects
Потом, когда станут не нужны, нужно пробежаться по этому списку и поубивать
Virgo_Style (2007-04-12 13:17:00) [59]Или можно еще пару TStringList'ов внутри хранить, реализация попроще должна получиться.
Virgo_Style (2007-04-12 13:14:00) [60]allucard (12.04.07 12:53) [20]
А если у меня 1000 пользователей, то обьявлять 1000 переменных класса TUser в разделе var модуля?
Ты про массивы слышал?)))