Здравствуйте! Выдает вот такую ошибку при попытке открыть программу
Модуль (dll) подключенной в проекту, сам dll находится в той же папке, что и проект. все равно выдает ошибку.
Здравствуйте! Выдает вот такую ошибку при попытке открыть программу
Модуль (dll) подключенной в проекту, сам dll находится в той же папке, что и проект. все равно выдает ошибку.
А где исходник?
Всё грузится!
{$reference LitDev.dll}
Мы увидели проблему - это в проектах что-то нарушилось
Это после исправления CurrentDirectory SunSerega полода назад.
Сейчас откатим
Проблему подтверждаю! Среда разработки подсказывает классы, методы, но на этапе исполнения вылетает ошибка:
Ошибка времени выполнения: System.IO.FileNotFoundException: Не удалось загрузить файл или сборку “ArduinoToPascal, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null” либо одну из их зависимостей. Не удается найти указанный файл. Стек: в BABCClient.Program.$Main() в BABCClient.Program.Main()
Где можно будет найти рабочую версию компилятора после отката?
Скачайте сейчас и отпишитесь, работает ли.
Я надеюсь, вы нормально разберётесь а не тупо откатите? Теперь то uses-in
у меня вообще везде.
Ну и, кстати, скажите как именно мой фикс что то ломал. Интересно.
Подскажите, где можно скачать?
Или есть другой источник?
да
Самая последняя собранная версия всегда тут:
http://pascalabc.net/ssyilki-dlya-skachivaniya
В репозитории есть релизы, но это скорее что то старое но сколько то стабильное.
Ну а коммист с откатом, по моему, ещё не попал в репозиторий. Поэтому и собирать свой билд сейчас бесполезно.
Проверил Standard/Mini Pack, ошибка без изменений. Надеюсь, скоро появится рабочая версия, использование dll - главная идея проекта.
Как вам уже сказал валерий в соседней вашей теме - используйте $reference, он должен работать вне этой ошибки. Но ваше дальнейшее участие в поиске ошибки всё же необходимо.
@Admin я так же ещё раз прошёлся по коду - и не вижу чтоб мой код мог вызывать такую ошибку. Напомню, в Compiler.cs
, строчка 1813:
Environment.CurrentDirectory = CompilerOptions.SourceFileDirectory; // нужно для подключения *.inc и *.resources
Это не я добавлял. Это уже было. Я добавил такую же строчку ещё в нескольких местах, после всех участков с моим кодом, чтоб мои изменения никак не могли влиять на прежний код.
Кроме того, чтоб Environment.CurrentDirectory
поменялось на что то кроме папки с исходниками - необходимо использовать uses-in
. Без uses-in
мой код точно не мог ничего сломать. @AvilovAlex вы использовали uses-in
?
Нет, uses-in не использовал, а вот $reference был с самого начала. Файл прикрепить не могу, листинг ниже: {$reference ArduinoToPascal.dll} begin var x := new ArduinoToPascal.Class1(); print(x.Mysum(5,3)); end.
Код надо вставлять так:
```
код
```
Знак ` - это ё в англ раскладке. На строчках с ``` ничего больше быть не должно, иначе оно не работает.
Огромное спасибо всем! Ошибка в новом релизе уже исчезла, но , к сожалению, нашел еще одну ошибку. Попытаюсь далее описать ошибку)
При использовании Библиотеки SourceGrid компилятор как бы неправильно инициализирует переменную под таблицу из данного грида (это мое мнение, могу ошибаться), из-за такого поведения массив с гридом не создается . Вот код (такой же код с использованием SourceGrid на c# работает без ошибок) и библиотека: testSourcegrid.rar (215,0 КБ)
А ошибка раньше выдавалась при первой компиляции сразу после перезапуска IDE? Если это что то связанное с Environment.CurrentDirectory
- ошибка должна была выдаваться или после хотя бы 1 компиляции (считая не_успешные).
Он сломал любое использование dll в проектах. Категорически нельзя было исправлять вашу ошибку, правя в 15 местах по коду изменение CurrentDirectory. Нужно вводить какой-то словарик директорий для uses, а не изменять по всему проекту глобальные переменные.
Я не приму pullrequest, изменяющий CurrentDirectory
Нет, это не объяснение а просто ещё одна фраза “чтоб отстали”.
Ещё раз, если в программе нет uses-in
- мой код не должен менять значение Environment.CurrentDirectory
. Никогда.
Самый правильный фикс - принимать в CompileUnit
(или как его там) ещё 1 параметр, текущий путь. А при дальнейшем подключении модулей, $include
и т.п. - использовать этот путь.
Вот только, как я ранее говорил, в коде, выбирающем путь для uses-in модуля - тот ещё бардак. Если делать нормальный фикс - надо для начала подчистить всё. На это надо время.
А перед этим надо таки разобраться при чём тут проекты и .dll, чтоб можно было сделать что то временно. Чтоб не ломать ни проекты, ни uses-in
.