![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Строку в объект [D7, XP]
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]Даже и не знаю, чего тут поделать можно...
срочно "на дерево"...