[Comedia-hackers] Re: error with TCollection
Status: Alpha
Brought to you by:
seroukhov
From: Sergey S. <ser...@ma...> - 2002-10-24 14:21:11
|
Hello, Sergey! Проверка действительно проходить не должна, потому что я все интерфейсы в коллекциях храню кастанутыми к IInterface. Мы этот вопрос поднимали много раз, что интерфейсы нельзя просто и легко сравнивать через указатели. Чтобы осуществить такую проверку есть два варианта 1. CheckEquals(0, Collection.IndexOf(Property1)) 2. Check(Property1.Equals(Collection.First)) Третий вариант работать будет, но он плох по многим причинам 3. CheckSame(Property1 as IInterface, Collection.First) Regards, Sergey Seroukhov ----- Original Message ----- From: "Sergey Merkuriev" <se...@ma...> To: "Sergey Seroukhov" <ser...@ma...> Sent: Thursday, October 24, 2002 4:05 AM Subject: error with TCollection > Hello Sergey, > > var > Collection: ICollection; > Property1: IModuleProperty; > Property2: IModuleProperty; > Property3: IModuleProperty; > Property4: IModuleProperty; > begin > Collection := TCollection.Create; > Property1 := TModuleProperty.CreateString('A', '123', False); > Property2 := TModuleProperty.CreateInteger('B', 123, False); > Property3 := TModuleProperty.CreateString('C', '123', True); > Property4 := TModuleProperty.CreateBoolean('D', true, True); > Collection.Add(Property1); > Collection.Add(Property2); > Collection.Add(Property3); > CheckSame(Property1, Collection.First, 'Collection.First'); //вылетает > ошибка > > ----------- > TestUnmodifiableCollection: ETestFailure > at $00489EFC > Collection.First1, expected: <009436EC> but was: <009436C4> > > > Что я опять делаю не так с интерфейсами ??? > > ~ Sergey Merkuriev > > > > |