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

Вниз

Вопрос по PStrListEx   Найти похожие ветки 

 
BMouradov   (2009-02-20 13:00) [0]

Помогите, пожалуйста с PStrListEx. Пытаюсь добавить в него объекты, унаследованные от TObject, и ничего не получается. Вот максимально упрощённый код:

program A;
uses KOL;

type
 PMyItem = ^TMyItem;
 TMyItem = class
 public
   sField: string;
 end;

var List: PStrListEx;

procedure NewItem;
var Item: TMyItem;
begin
 Item := TMyItem.Create;
 Item.sField := "123";
 List.AddObject("345", Cardinal(@Item));
end; // NewItem

begin
 List := NewStrListEx;
 NewItem;
 ShowMessage(PMyItem(List.Objects[0]).sField);
end.

На последней строке возникает ошибка. Пробовал и PMyItem^, и Cardinal(Item), и всё равно не получается. Эксперимент показал, что, видимо, дело в том, что Item - локальная переменная, и после выхода из процедуры она освобождается. Но как правильно переписать приведенный фрагмент, так и не смог понять.
(Желательно обойтись без замены TObject на PObj). Помогите, пожалуйста.


 
Дмитрий К ©   (2009-02-20 13:16) [1]

procedure NewItem;
var Item: PMyItem;
begin
 New(Item);
 Item^ := TMyItem.Create;
 Item.sField := "123";
 List.AddObject("345", Cardinal(Item));
end; // NewItem


 
BMouradov   (2009-02-20 13:29) [2]

Спасибо, сработало!

Если я правильно понял Ваш код, надо в деструкторе дописать:
 for i := 0 to List.Count - 1 do begin
   PMyItem(List.Objects[i]).Free;
   Dispose(PMyItem(List.Objects[i]));
 end;


 
Дмитрий К ©   (2009-02-20 13:50) [3]

Насколько я сам понимаю, да.



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

Форум: "KOL";
Текущий архив: 2011.07.10;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.44 MB
Время: 0.002 c
1-1258972053
Cobalt
2009-11-23 13:27
2011.07.10
XMLNode - List index out of bounds


3-1261385211
Rhododendrom
2009-12-21 11:46
2011.07.10
BackUp/Restore базы данных FireBird из моей программы.


2-1301557923
crossmark
2011-03-31 11:52
2011.07.10
Delphi Access and ADO


15-1300719280
mahab-22
2011-03-21 17:54
2011.07.10
работа с dbexpress


2-1301593434
fynjy93
2011-03-31 21:43
2011.07.10
занос boolean значения в БД





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский