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

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

Строку в объект [D7, XP]


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

kyn66 ©   (2009-11-12 16:11:00) 

Подскажите, каким способом можно строку вставить в объект , ну например ComboBox ? Нужно к примеру просканировать текущий каталог диска, найденные файлы записать в Combobox, а полный путь к файлу сохранить в объекте. Помню со строками есть проблемы при сохранении в объект. Есть вот такой вариант

....
var
 PS: PString;
...
procedure TForm1.FormCreate(Sender: TObject);
begin
 new(PS);
 PS^ := 'Hello world 1';
 ComboBox1.Items.AddObject('Item1', TObject(PS));
 PS^ := 'Hello world 2';
 ComboBox1.Items.AddObject('Item2', TObject(PS));
 PS^ := 'Hello world 3';
 ComboBox1.Items.AddObject('Item3', TObject(PS));
...

procedure TForm1.FormDestroy(Sender: TObject);
begin
 Dispose(PS);
end;


При доступе к объекту

procedure TForm1.ComboBox1Change(Sender: TObject);
begin
 ShowMessage(PString(Combobox1.Items.Objects[0])^); //Hello world 1
end;


возникает ошибка (AV)


LDV   (2009-11-12 17:14:00) [101]

Вот так:


procedure TForm1.Button2Click(Sender: TObject);
begin

 ComboBox1.Items.AddObject('Строка 1', TObject(Application.ExeName));

 ShowMessage(string(ComboBox1.Items.Objects[0]));

end;


kyn66   (2009-11-12 17:10:00) [102]

Это нужно к тому, чтобы каждый Items ComboBox-а содержал в себе двойную информацию(две строки). Как вариант параллельно заводил переменную TStringList и в нее вносил вторые интересуемые строки, а потом сопостовлял их по ItemIndex. Но ведь это не есть лучший вариант?


kyn66   (2009-11-12 17:07:00) [103]

Мне не Items составляет проблему. Туда строку и так запишу. Получается , что в ComboBox нужно две строки внести, типа

ComboBox1.AddObjects('Строка 1', Pointer(kodstr))


Только вместо Pointer(kodstr)нужно записать строку. Эта запись будет верна, если бы kodstr = Integer/ Мне же строка нужна.


Юрий Зотов   (2009-11-12 16:54:00) [104]

Уберите указатели, работайте напрямую со строками и пишите их прямо в Combobox.Items (через Add, а не через AddObject)


kyn66   (2009-11-12 16:22:00) [105]

Насчет AV разобрался(в ComboBox.Strings изначально были строки). Однако при извлечении строки - данные неверные, точнее <'Hello world 3'/B> везде присутствует. Вот так извлекаю

 ShowMessage(PString(Combobox1.Items.Objects[Combobox1.ItemIndex])^);


Dennis I. Komarov   (2009-11-12 16:20:00) [106]

Даже и не знаю, чего тут поделать можно...

срочно "на дерево"...


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

Наверх

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