Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.05.06;
Скачать: [xml.tar.bz2];

Вниз

Хранение второго значения в 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.53 MB
Время: 0.048 c
4-1165562881
Peter Kapustin
2006-12-08 10:28
2007.05.06
Сканер для считвания чипов.


1-1173598733
RWolf
2007-03-11 10:38
2007.05.06
передача PChar в DLL


1-1172824942
Kirflaer
2007-03-02 11:42
2007.05.06
Как перенести текст из RichEdit с сохранением форматирования


15-1176019813
easy
2007-04-08 12:10
2007.05.06
Янис Прасол (aka Gero)


2-1176295679
Ezorcist
2007-04-11 16:47
2007.05.06
Отреагировать на ошибку 10061 TClientSocket-a





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский