Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.11.11;
Скачать: CL | DM;

Вниз

ListBox - AddItem - TObject   Найти похожие ветки 

 
Nikola32   (2007-10-17 14:26) [0]

Есть такой код, который работает:
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)));

Работоспособность утрачивается, что я делаю не так?


 
Palladin ©   (2007-10-17 14:34) [1]

TObject(String) делаешь не так, заведи TStringList с именами файлов и добавляй TObject(FileNamesList.Add(cFileName))


 
Reindeer Moss Eater ©   (2007-10-17 14:44) [2]

Все равно не будет работать так как хочется.
Структура-то одна, а он поди сканирует каталог и заполняет список найденным. Все ссылки в objects будут указывать на последний найденный элемент.
И то только до того момента, пока не произойдет FindClose.


 
Palladin ©   (2007-10-17 14:53) [3]


> Все равно не будет работать так как хочется.

Эт почему? А если вдуматься?
Работать не будет только при условии что FileNamesList.Sorted:=True


 
Reindeer Moss Eater ©   (2007-10-17 14:59) [4]

Очень просто почему.
Упоминается FindData.
Значит делаем предположение, что человек сканирует диск.
Вызвал FindFirst, передал её структуру.
С каждым найденным файлом в структуре будет обновляться данные.
В список objects добавляется указатель на поле структуры.
На одно и то же поле одной и той же структуры.
В поле всегда находится данные о последнем найденном файле.


 
Reindeer Moss Eater ©   (2007-10-17 15:04) [5]

А TObject(FileNamesList.Add(cFileName)) вообще непонятно зачем.
В элементе списка и в object будет одно и то же имя?
Зачем тогда вообще objects?


 
Palladin ©   (2007-10-17 15:36) [6]

чего непонятного
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:39) [7]

ага, только теперь непонятно зачем параллельный стринглист, если можно обойтись одним списоком листбокса если исппользовать strnew.
И при пересортировке кстати ничего не испортится.


 
Palladin ©   (2007-10-17 15:42) [8]


> если можно обойтись одним списоком листбокса если исппользовать
> strnew

Ну если тебе нравится заморачиваться на strnew strdispose, то ради бога...


> И при пересортировке кстати ничего не испортится.

А что должно испортиться?


 
Правильный_Вася   (2007-10-17 16:07) [9]

зачем все эти извращения с адресами?
добавлять строки в листвиев нельзя что ли?


 
Palladin ©   (2007-10-17 18:11) [10]

да можно, но видимо у автора туда что то отличное от имени файла добавляется


 
Правильный_Вася   (2007-10-17 19:03) [11]

ну так там субайтемы есть..


 
Palladin ©   (2007-10-18 11:53) [12]

в ListBox"е чтоли?


 
Правильный_Вася   (2007-10-18 12:00) [13]

тьфу ты, я про листвью говорил



Страницы: 1 вся ветка

Текущий архив: 2007.11.11;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.019 c
11-1170771683
Psychedelic
2007-02-06 17:21
2007.11.11
Исправления в KOLComboBoxEx и KOLSATab


15-1191846345
ASDE
2007-10-08 16:25
2007.11.11
Ярлык к программе под админа


15-1191387880
oxffff
2007-10-03 09:04
2007.11.11
CodeGear RAD Studio 2007 – the Smart Alternative


4-1177584855
Iv_
2007-04-26 14:54
2007.11.11
Кнопка- Bitmap на WinAPI


15-1191743019
Nucer
2007-10-07 11:43
2007.11.11
Реализация RSA в Delphi