Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.11.11;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.049 c
6-1173882512
tytus
2007-03-14 17:28
2007.11.11
Indy_10 Как правильно отключить клиента?


1-1187796570
Дмитрий Белькевич
2007-08-22 19:29
2007.11.11
Полупрозрачность tpngimage на прозрачной форме.


4-1178292742
I-New
2007-05-04 19:32
2007.11.11
GDI+


2-1192776194
ses
2007-10-19 10:43
2007.11.11
combobox. edit;


2-1192535102
l_v
2007-10-16 15:45
2007.11.11
структуры большой вложенности





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский