Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.05.06;
Скачать: CL | DM;

Вниз

Хранение второго значения в ListBox.   Найти похожие ветки 

 
allucard   (2007-04-12 11:27) [0]

Доброго дня.

Есть список пользователей(ListBox), у каждого пользователя есть свой пароль а также время регистрации, эти данные можно хранить как то в этом-же ListBox?
Или обязательно база данных?
Спасиб за варианты.


 
allucard   (2007-04-12 11:46) [1]

Или где можно хранить три столбца данных но выводить один, чтоб был метод SaveToFile?


 
_Аноним   (2007-04-12 11:51) [2]

Можно хранить привязанные объекты (свой экземпляр на каждый элемент списка)
см. ListBox.Items.Objects

что касается сохранения в файл - то это ручками.


 
allucard   (2007-04-12 11:54) [3]

А если создать свой класс(или тип как лучше) с тремя переменными и записывать его как обьект: ListBox1.AddItem();
?


 
PZ   (2007-04-12 11:54) [4]

Приблизительно так можно:
S := "Иванов"+"  "+Parol+"  11.04.2007";
ListBox.Items.Add(S);


 
clickmaker ©   (2007-04-12 11:55) [5]


> [3] allucard   (12.04.07 11:54)

а не это ли предложено в [2]?


 
allucard   (2007-04-12 11:55) [6]

ListBox1.Items.Values - а это что?


 
allucard   (2007-04-12 11:56) [7]

>clickmaker ©   (12.04.07 11:55) [5]

Так лучше тип или класс?


 
clickmaker ©   (2007-04-12 11:57) [8]


> [7] allucard   (12.04.07 11:56)

а что по-твоему тип, а что - класс?


 
allucard   (2007-04-12 12:00) [9]

type record end; - тип

Type
sdfssdg = class
end; - класс


 
allucard   (2007-04-12 12:03) [10]

Да вообще можно и второй ListBox невидимым сделать и туда писать пароль.


 
clickmaker ©   (2007-04-12 12:07) [11]


>  [10] allucard   (12.04.07 12:03)

ага. Отличное решение. А для даты - третий и т.д.?


 
_Аноним   (2007-04-12 12:09) [12]


> Так лучше тип или класс?


Если под "типом" понимать рекрод, то для данного случая - особо без разницы. Там можно хранить как указатель на экземпляр, так и указатель на структуру.


> Да вообще можно и второй ListBox невидимым сделать и туда
> писать пароль.


А вот это несерьезно


 
allucard   (2007-04-12 12:11) [13]

Ну, пробую создать класс.

А как проверить тек. значение ListBox?
Что то ItemIndex немогу найти.


 
_Аноним   (2007-04-12 12:14) [14]


> Что то ItemIndex немогу найти.

А он есть.


 
allucard   (2007-04-12 12:25) [15]

А может сам ListBox дописать?


 
allucard   (2007-04-12 12:33) [16]

Ой.
Это если я создаю класс, для работы с ним нужно создать рабочий экземпляр (выполнить конструктор), заполнить поля, потом освобождать.

Ну я так сделал:

 TUser = class
   username: string;
   password: string;
 private
   { Private declarations }
 public
   { Public declarations }
 end;


 
clickmaker ©   (2007-04-12 12:34) [17]


> нужно создать рабочий экземпляр (выполнить конструктор),
> заполнить поля, потом освобождать

а ты думал - в сказку попал?


 
allucard   (2007-04-12 12:38) [18]

Вопрос:

Как динамически во время выполнения программы добавлять экземпляры класса?

Я ведь в конечном итоге не знаю сколько пользователей будет?


 
clickmaker ©   (2007-04-12 12:46) [19]


> [18] allucard   (12.04.07 12:38)

цитирую тебя же
"нужно создать рабочий экземпляр (выполнить конструктор), заполнить поля"


 
allucard   (2007-04-12 12:53) [20]


> clickmaker ©   (12.04.07 12:46) [19]

ну эт я понял.

А если у меня 1000 пользователей, то обьявлять 1000 переменных класса TUser в разделе var модуля?
а если 10000? :) И каждую записывать в TListBox?

Нет.
Кажется можно создавать экземпляры класса и описывать их во время работы программы, но как?


 
Virgo_Style ©   (2007-04-12 13:14) [21]

allucard   (12.04.07 12:53) [20]
А если у меня 1000 пользователей, то обьявлять 1000 переменных класса TUser в разделе var модуля?


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


 
Virgo_Style ©   (2007-04-12 13:17) [22]

Или можно еще пару TStringList"ов внутри хранить, реализация попроще должна получиться.


 
clickmaker ©   (2007-04-12 13:17) [23]


> [20] allucard   (12.04.07 12:53)

зачем тебе переменные? Они у тебя будут в Objects
Потом, когда станут не нужны, нужно пробежаться по этому списку и поубивать


 
_Аноним   (2007-04-12 13:19) [24]


> А если у меня 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;

А потом не забудь пройти в цикле и освободить память под объекты


 
allucard   (2007-04-12 13:22) [25]


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

Про массивы да, про массивы обьектов - нет? а такое есть?

>Virgo_Style ©   (12.04.07 13:17) [22]
Идея.

>clickmaker ©   (12.04.07 13:17) [23]
Чтоб экземпляр класса можно было создать, его необходимо обьявить в розделе VAR.


 
allucard   (2007-04-12 13:23) [26]


> _Аноним   (12.04.07 13:19) [24]

прикольно.


 
clickmaker ©   (2007-04-12 13:23) [27]


> Чтоб экземпляр класса можно было создать, его необходимо
> обьявить в розделе VAR

ну так и объяви, в чем проблема?


 
clickmaker ©   (2007-04-12 13:27) [28]


> его необходимо обьявить в розделе VAR

да, кстати, и не необходимо. Вопрос удобства и реализации самого класса.
ListBox.Add(UserName, TUser.Create(Password, RegTime));


 
allucard   (2007-04-12 13:29) [29]

>_Аноним   (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:30) [30]


> ListBox1.Items.AddObject(user.realname; user);
>  user.free;

зачем вторая строка?


 
allucard   (2007-04-12 13:32) [31]


> clickmaker ©   (12.04.07 13:30) [30]

Без неё всёравно ошибка.

Пробовал метод AddItem, таже ошибка.


 
allucard   (2007-04-12 13:42) [32]

По ходу нельзя свой окласс зафигарить в методом AddObject, даже если его сделать дочерним TObject.


 
clickmaker ©   (2007-04-12 13:48) [33]


> [32] allucard   (12.04.07 13:42)
> По ходу нельзя свой окласс зафигарить

а мужики-то и не знают.
И фигарят и фигарят себе...


 
allucard   (2007-04-12 13:50) [34]


> clickmaker ©   (12.04.07 13:48) [33]


умные мысли уже мне не приходят.
да и голова розболелась.
В чём ошибка?
Или глюк это.


 
clickmaker ©   (2007-04-12 13:52) [35]


> [34] allucard   (12.04.07 13:50)

Цитрамону выпей.
Тебе в [24] дали готовый код, какие еще мысли нужны?


 
allucard   (2007-04-12 14:14) [36]


> 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;


 
_Аноним   (2007-04-12 14:26) [37]

У тебя там было
ListBox1.Items.AddObject(user.realname; user);

фактические параметры разделяются запятой, формальные - точкой с запятой


 
allucard   (2007-04-12 14:49) [38]


> _Аноним   (12.04.07 14:26) [37]

Ой, е.
Сенькс.
Пошёл писать дальше.


 
allucard   (2007-04-12 20:03) [39]


> _Аноним   (12.04.07 13:19) [24]

А как с ними потом работать.
Как загрузить из этих обьектов их данные из списка ListBox.


 
allucard   (2007-04-13 09:29) [40]

Но как теперь эти обьекты записать в файл?

Пишу так:
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.



Страницы: 1 2 вся ветка

Текущий архив: 2007.05.06;
Скачать: CL | DM;

Наверх




Память: 0.56 MB
Время: 0.027 c
1-1173602376
Makhanev Alexander
2007-03-11 11:39
2007.05.06
Диалог выбора пользователя....


2-1176473314
АлексейМ
2007-04-13 18:08
2007.05.06
TDBComboBox


2-1176526279
NewPlayer
2007-04-14 08:51
2007.05.06
почему не уничтожается обьект


3-1171534913
dzhagr1
2007-02-15 13:21
2007.05.06
Связь таблиц в database desktop


1-1173285225
DevilDevil
2007-03-07 19:33
2007.05.06
компонент TScrollBox