Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Хранение второго значения в ListBox. [D7, XP]


Страницы:   1 2 3 4

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 модуля?


Ты про массивы слышал?)))


Страницы:   1 2 3 4

Наверх

Титульная страница Поиск, карта сайта Написать письмо