Главная страница
    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.061 c
2-1192471189
ryden
2007-10-15 21:59
2007.11.11
Выделение отдельного слова в RichEdit


2-1192513567
F@T@L_Err0r
2007-10-16 09:46
2007.11.11
COM1


6-1172071681
alexm_hs
2007-02-21 18:28
2007.11.11
Пинг UDP-порта


15-1191508929
Ega23
2007-10-04 18:42
2007.11.11
Рыдал


15-1191917876
031178
2007-10-09 12:17
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский