Вообще файлы можно и прямо на форум загружать… Перетащить файл в текст или нажать соответствующую кнопку.
Насчёт вашей программы:
Вообще файлы можно и прямо на форум загружать… Перетащить файл в текст или нажать соответствующую кнопку.
Насчёт вашей программы:
procedure p1(a,b:byte) := writeln('byte');
procedure p1(a,b:integer) := writeln('integer');
begin
p1(byte(0),0);
end.
Выводит integer
. Это нормальное поведение? Ведь второе число это константа которая может быть любого числового типа… А писать byte(...)
для каждого параметра долго и выглядит не читабельно.
Нормальное. В Паскале, если тип константы в выражении явно не указан, то принимается по умолчанию. Для констант, имеющих целочисленное отображение, принимается integer. Вот пример:
begin
var a:=12345678;
var x:int64:=a*a;
Writeln(x);
x:=a;
x:=x*x;
Writeln(x)
end.
Будет выведено
260846532
152415765279684
То есть надо явно указывать типы для всех параметров, как я понял.
Нет, Вы поняли неправильно. Тип параметра уже известен из описания функции (процедуры или что там у Вас), поэтому константа, если это возможно, будет приведена к этому типу. Но если возможны варианты, как это было у @Sun_Serega, надо указать явно, а не пытаться заставлять компилятор побыть буридановым ослом.
Не 1 из этих случаев не компилируется (если раскомментировать):
type
t1 = class
//[System.Runtime.InteropServices.DllImport('user32.dll')]
//function GetKeyState(cc: byte): byte;//Атрибут DllImport неприменим к методам (только к external-подпрограммам)
//[System.Runtime.InteropServices.DllImport('user32.dll')]
//class function GetKeyState(cc: byte): byte;//Атрибут DllImport неприменим к методам (только к external-подпрограммам)
//[System.Runtime.InteropServices.DllImport('user32.dll')]
//class function GetKeyState(cc: byte): byte; external;//Подпрограмма должна иметь атрибут DllImport
end;
begin end.
Я не правильно понимаю синтаксис или какой то из этих вариантов правильный, но компилятор всё равно не принимает?
Мне такой синтаксис неизвестен. external-подпрограммы должны быть глобальными процедурами.
type
t1 = class
class function GetKeyState(cc: byte): byte;
external 'user32.dll';
end;
begin end.
Это компилируется.
DllImport
, а атрибуты не работают для глобальных подпрограмм.[System.Runtime.InteropServices.DllImport('user32.dll')]
function GetKeyState(cc: byte): byte;//Встречено 'function', а ожидалось unit
begin end.
Ну всё таки, а для глобальных подпрограмм атрибуты должны работать?
Описывать и реализовывать классы в отдельных type
не даёт:
type
t1 = class;//Ошибка: Отсутствует описание типа t1
type
t1 = class end;
begin end.
Что мешает энкапсуляции:
unit UnitName;
interface
type
t1 = class;//Ошибка: Отсутствует описание типа t1
implementation
type
t2 = class end;
t1 = class
private
a: t2;
end;
end.
В C++ это реализовано вложенными классами, а в паскале, как я понимаю, нету никакого способа.
Предописание - как в Delphi - возможно только в той же директиве type
Когда будет новая версия доступная для скачивания (когда Вы планируете ее выложить)?
Выложили последнюю версию
Временно откатили последнюю версию в связи с ошибкой Ctrl-Space
Не знаю, связано ли это с упомянутой вами ошибкой Ctrl-Space, но у меня в билде 1660 при правом клике на любом пустом месте в редакторе (курсор на пустой строке или отделен пробелами от любых других символов) выдает вот это:
************** Текст исключения **************
System.NullReferenceException: Ссылка на объект не указывает на экземпляр объекта.
в PascalABCCompiler.PascalABCNewParser.PascalABCNewLanguageParser.BuildTreeInExprMode(String FileName, String Text)
в PascalABCCompiler.PascalABCNewParser.PascalABCNewLanguageParser.BuildTree(String FileName, String Text, ParseMode ParseMode, List`1 DefinesList)
в PascalABCCompiler.Parsers.Controller.GetExpression(String FileName, String Text, List`1 Errors, List`1 Warnings)
в VisualPascalABC.CodeCompletionProvider.GetDefinition(String expr, String fileName, Int32 line, Int32 column, Boolean only_check)
в VisualPascalABC.CodeCompletionActionsManager.GetDefinitionPosition(TextArea textArea, Boolean only_check)
в VisualPascalABC.CodeCompletionActionsManager.CanGoTo(TextArea textArea)
в VisualPascalABC.Form1.OpeningContextMenu(Object sender, CancelEventArgs args)
в System.ComponentModel.CancelEventHandler.Invoke(Object sender, CancelEventArgs e)
в System.Windows.Forms.ToolStripDropDown.OnOpening(CancelEventArgs e)
в System.Windows.Forms.ToolStripDropDown.SetVisibleCore(Boolean visible)
в System.Windows.Forms.ToolStripDropDown.Show(Control control, Point position)
в System.Windows.Forms.ContextMenuStrip.ShowInternal(Control source, Point location, Boolean isKeyboardActivated)
в System.Windows.Forms.Control.WmContextMenu(Message& m, Control sourceControl)
в System.Windows.Forms.Control.WndProc(Message& m)
в System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
************** Загруженные сборки **************
mscorlib
Версия сборки: 4.0.0.0
Версия Win32: 4.7.2563.0 built by: NET471REL1
CodeBase: file:///C:/Windows/Microsoft.NET/Framework64/v4.0.30319/mscorlib.dll
----------------------------------------
PascalABCNET
Версия сборки: 3.3.5.1660
Версия Win32: 3.3.5.1660
CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/PascalABCNET.exe
----------------------------------------
System
Версия сборки: 4.0.0.0
Версия Win32: 4.7.2558.0 built by: NET471REL1
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Core
Версия сборки: 4.0.0.0
Версия Win32: 4.7.2563.0 built by: NET471REL1
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------
System.Windows.Forms
Версия сборки: 4.0.0.0
Версия Win32: 4.7.2558.0 built by: NET471REL1
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System.Drawing
Версия сборки: 4.0.0.0
Версия Win32: 4.7.2558.0 built by: NET471REL1
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
PluginsSupport
Версия сборки: 1.0.0.0
Версия Win32: 1.0.0.0
CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/PluginsSupport.DLL
----------------------------------------
CompilerTools
Версия сборки: 3.3.5.1660
Версия Win32: 3.3.5.1660
CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/CompilerTools.DLL
----------------------------------------
WeifenLuo.WinFormsUI.Docking
Версия сборки: 2.2.5489.36547
Версия Win32: 2.2.0.0
CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/WeifenLuo.WinFormsUI.Docking.DLL
----------------------------------------
Compiler
Версия сборки: 3.3.5.1660
Версия Win32: 3.3.5.1660
CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/Compiler.DLL
----------------------------------------
Localization
Версия сборки: 1.0.0.0
Версия Win32: 1.0.0.0
CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/Localization.DLL
----------------------------------------
System.Configuration
Версия сборки: 4.0.0.0
Версия Win32: 4.7.2558.0 built by: NET471REL1
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll
----------------------------------------
System.Xml
Версия сборки: 4.0.0.0
Версия Win32: 4.7.2612.0 built by: NET471REL1LAST_B
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
ICSharpCode.TextEditor
Версия сборки: 0.0.0.0
Версия Win32: 0.0.0.0
CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/ICSharpCode.TextEditor.DLL
----------------------------------------
CodeCompletion
Версия сборки: 1.0.0.0
Версия Win32: 1.0.0.0
CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/CodeCompletion.DLL
----------------------------------------
ParserTools
Версия сборки: 3.3.5.1660
Версия Win32: 3.3.5.1660
CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/ParserTools.DLL
----------------------------------------
Accessibility
Версия сборки: 4.0.0.0
Версия Win32: 4.7.2558.0 built by: NET471REL1
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/Accessibility/v4.0_4.0.0.0__b03f5f7f11d50a3a/Accessibility.dll
----------------------------------------
Errors
Версия сборки: 3.3.5.1660
Версия Win32: 3.3.5.1660
CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/Errors.DLL
----------------------------------------
SyntaxTree
Версия сборки: 3.3.5.1660
Версия Win32: 3.3.5.1660
CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/SyntaxTree.DLL
----------------------------------------
ICSharpCode.SharpDevelop
Версия сборки: 4.2.1.0
Версия Win32: 4.2.1.0
CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/ICSharpCode.SharpDevelop.DLL
----------------------------------------
ICSharpCode.Core
Версия сборки: 4.2.1.0
Версия Win32: 4.2.1.0
CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/ICSharpCode.Core.DLL
----------------------------------------
ICSharpCode.SharpDevelop.Dom
Версия сборки: 4.2.1.8805
Версия Win32: 4.2.1.8805
CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/ICSharpCode.SharpDevelop.Dom.DLL
----------------------------------------
ICSharpCode.NRefactory
Версия сборки: 4.2.1.8805
Версия Win32: 4.2.1.8805
CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/ICSharpCode.NRefactory.DLL
----------------------------------------
ICSharpCode.AvalonEdit
Версия сборки: 4.2.1.8805
Версия Win32: 4.2.1.8805
CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/ICSharpCode.AvalonEdit.DLL
----------------------------------------
ICSharpCode.Core.Presentation
Версия сборки: 4.2.1.0
Версия Win32: 4.2.1.0
CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/ICSharpCode.Core.Presentation.DLL
----------------------------------------
ICSharpCode.SharpDevelop.Widgets
Версия сборки: 4.2.1.8805
Версия Win32: 4.2.1.8805
CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/ICSharpCode.SharpDevelop.Widgets.DLL
----------------------------------------
ICSharpCode.Core.WinForms
Версия сборки: 4.2.1.0
Версия Win32: 4.2.1.0
CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/ICSharpCode.Core.WinForms.DLL
----------------------------------------
System.Design
Версия сборки: 4.0.0.0
Версия Win32: 4.7.2558.0 built by: NET471REL1
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Design/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Design.dll
----------------------------------------
Debugger.Core
Версия сборки: 3.0.0.2649
Версия Win32: 3.0.0.2649
CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/Debugger.Core.DLL
----------------------------------------
System.Data
Версия сборки: 4.0.0.0
Версия Win32: 4.7.2623.0 built by: NET471REL1LAST_C
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_64/System.Data/v4.0_4.0.0.0__b77a5c561934e089/System.Data.dll
----------------------------------------
TreeConverter
Версия сборки: 3.3.5.1660
Версия Win32: 3.3.5.1660
CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/TreeConverter.DLL
----------------------------------------
NETGenerator
Версия сборки: 3.3.5.1660
Версия Win32: 3.3.5.1660
CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/NETGenerator.DLL
----------------------------------------
SyntaxTreeConverters
Версия сборки: 1.0.0.0
Версия Win32: 1.0.0.0
CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/SyntaxTreeConverters.DLL
----------------------------------------
SemanticTree
Версия сборки: 3.3.5.1660
Версия Win32: 3.3.5.1660
CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/SemanticTree.DLL
----------------------------------------
System.Numerics
Версия сборки: 4.0.0.0
Версия Win32: 4.7.2558.0 built by: NET471REL1
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Numerics/v4.0_4.0.0.0__b77a5c561934e089/System.Numerics.dll
----------------------------------------
PascalABCParser
Версия сборки: 0.0.0.0
Версия Win32: 0.0.0.0
CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/PascalABCParser.DLL
----------------------------------------
OptimizerConversion
Версия сборки: 1.0.0.0
Версия Win32: 1.0.0.0
CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/OptimizerConversion.DLL
----------------------------------------
InternalErrorReport
Версия сборки: 1.0.6684.39352
Версия Win32: 1.0.0.0
CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/InternalErrorReport.DLL
----------------------------------------
PT4Provider
Версия сборки: 1.0.0.0
Версия Win32: 1.0.0.0
CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/PT4Provider.DLL
----------------------------------------
PT4Tools
Версия сборки: 1.0.0.0
Версия Win32: 1.0.0.0
CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/PT4Tools.DLL
----------------------------------------
SharpDisasm
Версия сборки: 1.0.0.0
Версия Win32: 1.0.0.0
CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/SharpDisasm.DLL
----------------------------------------
StandardSyntaxTreeConverter
Версия сборки: 1.0.0.0
Версия Win32: 1.0.0.0
CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/StandardSyntaxTreeConverter.DLL
----------------------------------------
SyntaxVisitors
Версия сборки: 1.0.0.0
Версия Win32: 1.0.0.0
CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/SyntaxVisitors.DLL
----------------------------------------
YieldConversionSyntax
Версия сборки: 1.0.0.0
Версия Win32: 1.0.0.0
CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/YieldConversionSyntax.DLL
----------------------------------------
YieldHelpers
Версия сборки: 1.0.0.0
Версия Win32: 1.0.0.0
CodeBase: file:///C:/Program%20Files%20(x86)/PascalABC.NET/YieldHelpers.DLL
----------------------------------------
mscorlib.resources
Версия сборки: 4.0.0.0
Версия Win32: 4.7.2558.0 built by: NET471REL1
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/mscorlib.resources/v4.0_4.0.0.0_ru_b77a5c561934e089/mscorlib.resources.dll
----------------------------------------
System.Windows.Forms.resources
Версия сборки: 4.0.0.0
Версия Win32: 4.7.2558.0 built by: NET471REL1
CodeBase: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms.resources/v4.0_4.0.0.0_ru_b77a5c561934e089/System.Windows.Forms.resources.dll
----------------------------------------
У нас всё работает. Попробуйте инсталлировать сейчас с сайта в другой каталог.
Да, это та самая ошибка. Поэтому я и попросил откатить билд, так ведь невозможно работать… У меня сейчас 1658 билд, после того как я его перескачал.