Дамы и Господа! Случилась такая ошибка при запуске PascalABC, светлым умам заранее благодарен! 2omd093dopsj|690x387
Что это? Не кликается…
И в любом случае, приложите больше данных, к примеру код.
Его выделять надо так:
```
Код
```
Знак ` находится за Ё в англ раскладке.
Нельзя вызвать методы begin/end, компилятор ругается. Для примера OpenTK.Graphics.OpenGL.GL.End(); - фигвам. Обойти это как-то можно?
Да, ключевые слова надо экранировать:
OpenTK.Graphics.OpenGL.GL.&End
Недавно запуск pabcnetcclear.exe
с такой строкой в качестве аргументов:
$'"{fname}.pas" "" "Debug=0"'
Перестал работать. Пишет:
Error in argument Debug=0
Command line cannot contain any arguments after filename 'C:\1Сергей\Мои программы\SAC\src\Test.pas' and outdirname ''
Так а куда правильно Debug=0
засовывать чтоб откомпилировать .pas файл в режиме без дебага?
P.S. @Admin ввобще вы мне тут сказали использовать такой аргумент, но мне кажется что он и до того как компилятор стал на него ругаться - не работал. Просто раньше игнорировался.
Мы переписали pabcnetcclear.exe Запустите его без аргументов - он скажет вам параметры командной строки.
И - можно открывать тред по консольным компиляторам - что хотелось бы, потому что они писались только с расчетом простейшего использования в оболочке
Я немного туплю с утра пораньше… Какая тут логика? Вы имеете в виду создать отдельную тему с предложениями как улучшить, чтоб консольные компиляторы были юзабельны не только из IDE?
@Admin, пожалуйста, дофиксите наконец #1981, вы ведь в #1957 уже придумали как исправлять такое. Очень мешает.
type
t1 = class
public static procedure p1;
begin
end;
end;
begin
try
var ad := System.AppDomain.CreateDomain('domain 2');
ad.DoCallBack(t1.p1);
except
on e: Exception do writeln(e);
end;
end.
Этот код падает с TypeLoadException
. И вроде ведь несколько месяцев назад работало.
Посмотрел как выглядит t1
в .exe
и написал такой же тип в C# - всё работает без ошибок:
using System;
namespace Test1
{
public class t1
{
public void Init()
{
}
public static void p1()
{
}
public t1()
{
this.Init();
}
}
static class Program
{
public static void Main(string[] args)
{
try {
var ad = AppDomain.CreateDomain("domain 2");
ad.DoCallBack(t1.p1);
} catch (Exception e) {
Console.WriteLine(e);
}
Console.ReadLine();
}
}
}
у меня не падает
А разве это ошибка? Там действительно два преобразования типов
У меня тоже не падает.
Странно, теперь и у меня не падает… А IDE перезагрузить я тогда не пробовал.
Этот код генерирует полный бред в IL:
uses u1;
uses u2;
begin
var a := new t1;
end.
unit u1;
interface
type
t2 = partial class end;
t1 = partial class
public next: t2;
end;
implementation
uses u2;
end.
unit u2;
interface
type
t1 = partial class end;
t2 = partial class
// public next: t1; // если раскомментировать - t2 вообще перестаёт существовать
end;
implementation
uses u1;
end.
И t1
и t2
добавляет по 2 раза, причём у дубля t1
нету ни 1 поля.
Есть ли смысл заливать в issue, или пока рано partial
классы насиловать?
Делайте issue. Всё равно partial классы нужны
Так-то это и не должно работать. Все части partial-класса должны находиться в одном пространстве имён.
using System;
namespace ConsoleApp1
{
namespace A
{
partial class Class1
{
}
}
namespace B
{
partial class Class1
{
}
}
public static class Program
{
public static void Main()
{
Console.WriteLine(typeof(A.Class1).GetHashCode() == typeof(B.Class1).GetHashCode());
Console.ReadKey();
}
}
}
Это, разумеется, выведет False.
Почему? Это должно работать. У вас два разных класса