Да, ключевые слова надо экранировать:
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.
Почему? Это должно работать. У вас два разных класса
В модулях кстати надо это осмыслить. С одной стороны модули - это разные пространства имен. С другой - partial классы нами создавались для дизайнера объектов чтобы действовать в разных модулях.
Зачем нужны модули? Это всё можно было бы легко реализовать в пространствах имён:
Program240.pas:
{$includenamespace Form1.pas}
{$includenamespace Form1Design.pas}
program Project240;
uses System, System.Drawing, System.Windows.Forms;
begin
System.Windows.Forms.Application.EnableVisualStyles();
System.Windows.Forms.Application.SetCompatibleTextRenderingDefault(false);
System.Windows.Forms.Application.Run(new Form1)
end.
Form1.pas:
namespace Project240;
type
Form1 = partial class(Form)
public constructor;
begin
InitializeComponent;
end;
end;
end.
Form1Design.pas:
namespace Project240;
type
Form1 = partial class(Form)
private procedure InitializeComponent;
begin
self.Text := 'Form1';
end;
end;
end.
Тогда у нас пространств имен не было
Loading core… Подключен парсер PascalABC.NET Language Parser v1.2 Подключен парсер Documentation Comments Tag Parser v0.9 PascalABCCompiler.Core v3.4.2.1972 Copyright © 2005-2018 by Ivan Bondarev, Stanislav Mihalkovich OK 44,0025ms Connected parsers: PascalABC.NET (*.pas); Connected conversions: Optimizer; Compiling assembly And.pas… [0][1,1] And.pas: Unexpected symbol ‘’ [1][1,1] And.pas: Found ‘’ but declaration section or begin expected Текст ошибки(или что это),на картинке плохо видно Что делать что бы всё заработало