Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Combobox.Items.Objects, исправить ошибку и помочь в сохрании 
V
    Опции темы
firs70
Дата 13.6.2007, 09:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 12.2.2007

Репутация: нет
Всего: нет



есть такая задачка: Логин (Combobox) и пароль(Edit) и 2 параметра (RadioButton) кнопочка добавить и удалить. 
user posted image
По кнопочке Add добавляю логин, пароль и параметры через Combobox.Items.Objects, для реализации выбор логина и авто подстановки его пароля и параметров. Впринцыпе работает, Но при первом вводе логина выдаёт ошибку delphi и сама программа
user posted image
user posted image

Подскажите, пожалуйста, что это за ошибка и как её побороть  smile 
вот код:
Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
//----------
  TUser = class
  public
    login: string;
    password: string;
    param1: boolean;
    param2: boolean;
  end;
//-------
  TForm1 = class(TForm)
    Button1: TButton;
    ComboBox1: TComboBox;
    Edit1: TEdit;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure ComboBox1Change(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure AddUser;
var
   User: TUser;
begin
 if Form1.combobox1.items.indexof(Form1.combobox1.text) < 0 then
 begin
  User := TUser.Create;
  User.login := Form1.combobox1.text;
  User.password := Form1.edit1.text;
  User.param1 := Form1.RadioButton1.Checked;
  User.param2 := Form1.RadioButton2.Checked;
  Form1.combobox1.itemindex := Form1.combobox1.items.addobject(Form1.combobox1.text, User);
 end;
end;

procedure GetUser;
begin
 if (Form1.combobox1.itemindex >= 0) and (Form1.combobox1.itemindex < Form1.combobox1.items.count) then
  Form1.edit1.text := TUser(Form1.combobox1.items.objects[Form1.combobox1.itemindex]).password;
  Form1.RadioButton1.Checked := TUser(Form1.combobox1.items.objects[Form1.combobox1.itemindex]).param1;
  Form1.RadioButton2.Checked := TUser(Form1.combobox1.items.objects[Form1.combobox1.itemindex]).param2;
end;

procedure DelUser;
begin
TUser(Form1.combobox1.items.objects[Form1.combobox1.itemindex]).Free;
Form1.combobox1.items.Delete(Form1.combobox1.itemindex);
Form1.Edit1.Clear;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 AddUser;
end;

procedure TForm1.ComboBox1Change(Sender: TObject);
begin
 GetUser;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
DelUser;
end;

end.


и второе:
мне бы хотелось сохранять эти данные в реестре(или хотя бы куда нибудь, но в реестр предпочтительнее) что бы потом при запуске программы они подгружались, сечас программа работает только для текущего сеанса, после перезапуска всё сбрасывается.

Заранее всем спасибо
PM MAIL   Вверх
Snowy
Дата 13.6.2007, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 31
Всего: 484



Код

procedure GetUser;
begin
 if (Form1.combobox1.itemindex >= 0) and (Form1.combobox1.itemindex < Form1.combobox1.items.count) then
  begin // <--
    Form1.edit1.text := TUser(Form1.combobox1.items.objects[Form1.combobox1.itemindex]).password;
    Form1.RadioButton1.Checked := TUser(Form1.combobox1.items.objects[Form1.combobox1.itemindex]).param1;
    Form1.RadioButton2.Checked := TUser(Form1.combobox1.items.objects[Form1.combobox1.itemindex]).param2;
  end; // <--
end;

PM MAIL   Вверх
firs70
Дата 13.6.2007, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 12.2.2007

Репутация: нет
Всего: нет



 smile  спасибо, чёт правда тупанул  smile 

 а кто подскажет как всё это дело сохранить? или хотя бы получить в читабельном виде.
В мемо не сохраняет, так как пишет не соответсвие типов...
PM MAIL   Вверх
Snowy
Дата 13.6.2007, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 31
Всего: 484



Сохранить куда?
Класс в читабельном виде? Никак. Сохраняй поотдельности все поля. Благо у тебя их всего 4.
PM MAIL   Вверх
firs70
Дата 13.6.2007, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 12.2.2007

Репутация: нет
Всего: нет



Цитата

и второе:
мне бы хотелось сохранять эти данные в реестре(или хотя бы куда нибудь, но в реестр предпочтительнее) что бы потом при запуске программы они подгружались, сечас программа работает только для текущего сеанса, после перезапуска всё сбрасывается.

вот написано же  smile 
хочу в реестр сохранять, но как сделать что бы сохранялись в любом количестве? то есть динамически изменялись (от кол-ва сохранённых логинов и их атрибутов)
PM MAIL   Вверх
Sunvas
Дата 13.6.2007, 20:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 2
Всего: 89



Реестр ИМХО неудачная идея для хранения длинных текстов. Да и неудобно это. Лучше храни все в файл. Но если уж хочется в реестр - на форуме тонны примеров работы с реестром.


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
firs70
Дата 14.6.2007, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 44
Регистрация: 12.2.2007

Репутация: нет
Всего: нет



сделал всё. спасибо кто отвечал. тему закрываем.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0886 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.