![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ListBox - AddItem - TObject [D7, 2003]
Nikola32 © (2007-10-17 14:26:00)Есть такой код, который работает:
procedure TMainForm.Button2Click(Sender: TObject);
var
str1: string;
begin
str1 := 'xo';
ListBox1.AddItem('test!', TObject(str1));
end;
procedure TMainForm.ListBox1DblClick(Sender: TObject);
begin
with ListBox1 do
ShowMessage(string(TObject(Items.Objects[ItemIndex])));
end;
Но я пытаюсь добавить по AddItem результат не строки, а результат из процедуры поиска:
FindData: TWin32FindData;
.( cFileName: array[0..MAX_PATH - 1] of AnsiChar)
Т.е.
ListBox1.AddItem('test!', TObject(string(.cFileName)));
Работоспособность утрачивается, что я делаю не так?
Правильный_Вася (2007-10-18 12:00:00) [1]тьфу ты, я про листвью говорил
Palladin (2007-10-18 11:53:00) [2]в ListBox'е чтоли?
Правильный_Вася (2007-10-17 19:03:00) [3]ну так там субайтемы есть..
Palladin (2007-10-17 18:11:00) [4]да можно, но видимо у автора туда что то отличное от имени файла добавляется
Правильный_Вася (2007-10-17 16:07:00) [5]зачем все эти извращения с адресами?
добавлять строки в листвиев нельзя что ли?
Palladin (2007-10-17 15:42:00) [6]
> если можно обойтись одним списоком листбокса если исппользовать
> strnew
Ну если тебе нравится заморачиваться на strnew strdispose, то ради бога...
> И при пересортировке кстати ничего не испортится.
А что должно испортиться?
Reindeer Moss Eater (2007-10-17 15:39:00) [7]ага, только теперь непонятно зачем параллельный стринглист, если можно обойтись одним списоком листбокса если исппользовать strnew.
И при пересортировке кстати ничего не испортится.
Palladin (2007-10-17 15:36:00) [8]чего непонятного
Var
Files:TStringList;
...
if FindFirst('\*.*', faAnyFile, sr) = 0 then
repeat
ListBox1.AddItem('test!', TObject(Files.Add(sr.FindData.cFileName)));
until FindNext(sr) <> 0;
FindClose(sr);
так понятней?
Reindeer Moss Eater (2007-10-17 15:04:00) [9]А TObject(FileNamesList.Add(cFileName)) вообще непонятно зачем.
В элементе списка и в object будет одно и то же имя?
Зачем тогда вообще objects?
Reindeer Moss Eater (2007-10-17 14:59:00) [10]Очень просто почему.
Упоминается FindData.
Значит делаем предположение, что человек сканирует диск.
Вызвал FindFirst, передал её структуру.
С каждым найденным файлом в структуре будет обновляться данные.
В список objects добавляется указатель на поле структуры.
На одно и то же поле одной и той же структуры.
В поле всегда находится данные о последнем найденном файле.
Palladin (2007-10-17 14:53:00) [11]
> Все равно не будет работать так как хочется.
Эт почему? А если вдуматься?
Работать не будет только при условии что FileNamesList.Sorted:=True
Reindeer Moss Eater (2007-10-17 14:44:00) [12]Все равно не будет работать так как хочется.
Структура-то одна, а он поди сканирует каталог и заполняет список найденным. Все ссылки в objects будут указывать на последний найденный элемент.
И то только до того момента, пока не произойдет FindClose.
Palladin (2007-10-17 14:34:00) [13]TObject(String) делаешь не так, заведи TStringList с именами файлов и добавляй TObject(FileNamesList.Add(cFileName))