Грабли с Generics.Collections

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Грабли с Generics.Collections

Сообщение Awigro » 10.01.2024 14:49:21

Добрый день. Разбираюсь с Lazarus, в нем я совсем новичек.

Код: Выделить всё
Var
d:TDictionary<String, Integer>;
begin
d := TDictionary<String, Integer>.Create();
d.Free();
end;


Вот такой код отлично компилируется, но с предупреждениями:
generics.dictionaries.inc(191,92) Warning: Constructing a class "TCustomDictionaryEnumerator$4$crc04FA9CCF" with abstract method "DoMoveNext"
generics.dictionaries.inc(191,92) Warning: Constructing a class "TCustomDictionaryEnumerator$4$crc04FA9CCF" with abstract method "GetCurrent"

Подскажите пожалуйста на что конкретно ругается компилятор и как это исправить ?
Спасибо.
Awigro
незнакомец
 
Сообщения: 1
Зарегистрирован: 10.01.2024 14:27:26

Re: Грабли с Generics.Collections

Сообщение iskander » 24.01.2024 11:51:18

Awigro писал(а):Подскажите пожалуйста на что конкретно ругается компилятор и как это исправить ?


Ругается он (совершенно справедливо) на такие вот хитровывернутые конструкции:
Код: Выделить всё
function TDictionaryEnumerable<TDictionaryEnumerator, TDictionaryPointersEnumerator, T, CUSTOM_DICTIONARY_CONSTRAINTS>.DoGetEnumerator: TDictionaryEnumerator;
begin
  Result := TDictionaryEnumerator(TDictionaryEnumerator.NewInstance);
  TCustomDictionaryEnumerator<T, CUSTOM_DICTIONARY_CONSTRAINTS>(Result).Create(FDictionary);
end;


Понятно, что исправить это можно только изменив исходники Generics.Collections, на gitlab уже скоро год как висит ишью.
Но энумераторы же работают - зажать нос и забить на варнинги.
iskander
энтузиаст
 
Сообщения: 606
Зарегистрирован: 08.01.2012 18:43:34


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 19

Рейтинг@Mail.ru