Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Замена элемента TList


FishNode ©   (2008-03-31 11:52:00) 

прочел данные,изменил и хочу обратно вставить
но не методом Add а на то же место

v:=ListBox1.ItemIndex;
PPP:=P.List.Items[v];
z:=P.info;
z.test:=0;

P.List.Items[v]:=PPP; ? вроде так или нет ?


Германн   (2008-04-07 00:58:00) [1]


> вобще-то есть выводится строка в  TListBox при добавлении,
>
> сократил код по миниму,а так бы использовал TList
>

Тогда другое дело.


FishNode   (2008-04-06 23:09:00) [2]

{RASkov}

да просто удивило, когда надо компилятор соображать не хочет)

Германн

вобще-то есть выводится строка в  TListBox при добавлении,
сократил код по миниму,а так бы использовал TList


Германн   (2008-04-06 17:08:00) [3]


> FishNode   (06.04.08 09:45) [14]
>
> да строк никак в записи нет

Я хотел сказать что если нет никакой текстовой информации, которую нужно показывать пользователю, то глупо использовать визуальныйкомпонент типа TListBox для хранения неких переменных.


{RASkov}   (2008-04-06 10:32:00) [4]

> [14] FishNode   (06.04.08 09:45)
> странно что
> PPP.test:=0;
> и PPP^.test:=0;
> одно и тоже

Компилятор сам разименовывает(подставляет галочку) для типизированных указателей...

Все компоненты, накиданные в дизайнере на фому, теже самые указатели и поэтому вроде как нужно писать нечто так:
Label1^.Caption:='';
но это не делается, компилятор умный...:)


FishNode   (2008-04-06 09:45:00) [5]

да строк никак в записи нет
type
TP = record


в принципе и строки наверное влезут, но не PCHAR
а типа string[200] тоесть ограниченные

использование оболочки TObjectList немного грязнит код
чем PPP :=Pointer( ListBox1.Items.Objects[ListBox1.ItemIndex ]);

странно что
PPP.test:=0;
и PPP^.test:=0;

одно и тоже


Германн   (2008-04-06 01:33:00) [6]


> FishNode   (06.04.08 01:27) [12]
>
> переменные как объекты, сам не понял еще

Ааа. Т.е. никаких "строк" нет. Есть только некие переменные какого-то типа. Так?
Тогда да. Тогда лучше TObjectList. А для записей - динамический массив.


FishNode   (2008-04-06 01:27:00) [7]

переменные как объекты, сам не понял еще
если =Pointer( ListBox1.Items.Objects[ListBox1.ItemIndex ]);
заработает как надо , то ваш метод буду использовать


Германн   (2008-04-06 01:22:00) [8]


> FishNode   (06.04.08 01:05) [10]
>
> хм проглатило!

Ещё бы оно не проглотило!


> мне уже подсказали метод класса через размещение в TObjectList
>

???


FishNode   (2008-04-06 01:05:00) [9]

хм проглатило! Спасибо,проверяется
мне уже подсказали метод класса через размещение в TObjectList


Германн   (2008-04-06 00:01:00) [10]


> PPP := Pointer( ListBox1.Items.Objects[ListBox1.ItemIndex ]);


FishNode   (2008-04-05 22:26:00) [11]

стал  делать по подсказке clickmaker^a
через ListBox1.Items.Objects

все добавляется в лист бокс строка и в Object указатель на данные
а вот достать их никак (пытаюсь указатель получить)

type
TP = record
test:byte;
html1:dword;
html2:dword;
stop:dword;
end;

var
PPP:^TP;

PPP :=TP( ListBox1.Items.Objects[ListBox1.ItemIndex ]);


[Error] Unit1.pas(49): Invalid typecast

если PPP := ListBox1.Items.Objects[ListBox1.ItemIndex ];
то [Error] Unit1.pas(4): Incompatible types: 'TObject' and 'Pointer'


FishNode   (2008-04-04 20:05:00) [12]

P:TList;

v:=ListBox1.ItemIndex; // на чем кликнули TListBox
PPP:=P.Items[v];// колнка TListBox = TList
PPP^.test:=0;


конечно


Плохиш   (2008-04-04 11:08:00) [13]


> PPP:=P.List.Items[v]; // колнка TListBox = TList
> PPP^.test:=0;

Учитывая, что P.List.Items[v] есть строка, нука попробуй объяснить, что ты пытаешься сделать в следующей строке?

PS. Не пора ли почитать что-нибуть?


clickmaker   (2008-04-04 10:23:00) [14]

почему не использовать ListBox.Items.Objects ?


FishNode   (2008-04-04 10:13:00) [15]

вот так изменяю данные по индексу TList

type
TP = record
test:byte;
html1:dword;
html2:dword;
stop:dword;
end;

var
v:word;
P:TList;
PPP:^TP;

v:=ListBox1.ItemIndex; // на чем кликнули TListBox
PPP:=P.List.Items[v]; // колнка TListBox = TList
PPP^.test:=0;


Германн   (2008-04-04 01:26:00) [16]


> FishNode   (04.04.08 01:08) [2]
>
>

А поподробнее нельзя написать?
Что есть PPP? Что есть P? Что есть List? Что есть z?
Не надо пытаться "перегружать" наши телепаторы. Они имеют встроенную защиту.
Причём, как минимум - двухуровневую! :)


FishNode   (2008-04-04 01:08:00) [17]

делаю так

v:=ListBox1.ItemIndex;
PPP:=P.List.Items[v];
PPP^.test:=0;

стало быть я пишу прямо туда не трогая список TList
однако он оказывается после действий пустым
=P.List.count-1 !


Reindeer Moss Eater   (2008-03-31 11:54:00) [18]

адд не нужен. и все остальное тоже


Наверх

Титульная страница Поиск, карта сайта Написать письмо