Ошибки PascalABC.NET


#1328

Хорошо, @ibond, а как тогда вызывать I1.p1? И как вызывать System.Collections.Generic.IEnumerable<T>.GetEnumerator?


#1329

В Finalize


#1330

Да, нормальное. Свойство меняется только целиком. А часть свойства - меняется какая-то копия. В Delphi такое же поведение. Посмотрите, как в C#


#1331

Надо привести к типу I1 - это явная реализация интерфейса. Почитайте о ней в интернете


#1332

Это не решает проблему с System.Collections.Generic.IEnumerable<T>.GetEnumerator, потому что System.Collections.Generic.IEnumerable<T> это наследник System.Collections.IEnumerable. Я пробовал приводить к System.Collections.Generic.IEnumerable<T>, не помогает. Всё равно вызывается System.Collections.IEnumerable.GetEnumerator


#1333

Ну Вы проверяйте всё в C#. Там правда всё тоже очень путано. И вообще - я не рекомендую Вас лезть в явную реализацию интерфейса IEnumerable. Для этого у нас есть yield. Для интереса посмотрите, какой код генерируется за кадром. Ну и собственно так и можете писать.


#1334

yield это не совсем то, мне нужен был контейнер - список, а не перечисление. А что касается перечислителя - это чтоб foreach работал. Ну, msdn предлагает что на C# создать свой класс-перечислитель, вместо того чтоб красть у приватной переменной - списка. Громоздко, ну ладно, хотя бы работает. А в yield решение уникально своей кривостью и работоспособностью: там класс, создаваемый yield, является сразу и последовательностью, и её же перечислителем.


#1335

На MSDN к сожалению многие коды - старые - когда не было еще yield. Вообще без yield это затея - безумная. У них вначале был интерфейс IEnumerable, потом появился IEnumerable, они его унаследовали от IEnumerable и сильно всё запутали


#1336

Почему это компилируется, если не должно:

type
  I1 = interface 
  end;

begin
  (I1(System.Math.Sin)); 
end.

?


#1337

-> github, New Issue


#1338

#1339

Желательно всё же весь код в ` засовывать, у вас вон <T> по съедало…


#1340

#1341

Да, кстати, почему для:

begin
 var S := Arr(1, 2, 3).Select(x -> new System.Nullable<integer>(x));
end.

Intellisence показывает вместо:

function Select<integer, System.Nullable<integer>>(selector: integer -> System.Nullable<integer>): sequence of System.Nullable<integer>

показывает вот это:

?


#1342

#1343

#1344

Кстати говоря, зачем в PascalABC.Net ключевое слово template?


#1345

Ошибка времени выполнения: System.IO.FileNotFoundException: Не удалось загрузить файл или сборку “ClassLibrary1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null” либо одну из их зависимостей. Не удается найти указанный файл. Стек: в CallCS.Program.$Main() в CallCS.Program.Main()

Это при подключении к файлу CallCS.pas библиотеки скомпилированной в C#. Файл CallCS.pas с библиотекой ClassLibrary1.dll из примеров обучения в папке …PABCWork.NET\Samples!MainFeatures\04_Units\CallC#


#1346

Ну не знаю. Всё работает


#1347

Совершенно ничего не меняю в этих двух файлах, запускаю файл CallCS.pas (“выполнить” в PascalABC.NET) и выдает такую ошибку. Может я что-то не то делаю? Пробовал компилировать, потом запускать CallCS.exe, та же ошибка в консоли. Взял ту же библиотеку ClassLibrary1.dll подключил к C#-файлу и… работает. А с паскалем не работает =(.