This commit is contained in:
parent
e7bb339d8e
commit
bab33a265b
|
|
@ -38,9 +38,13 @@ namespace CodeCompletion
|
|||
int i = 0;
|
||||
foreach (string s in files)
|
||||
{
|
||||
string fname = Path.GetFileNameWithoutExtension(s);
|
||||
if (fname == "__RedirectIOMode" || fname == "__RunMode" || fname == "PABCExtensions")
|
||||
continue;
|
||||
SymInfo si = new SymInfo(Path.GetFileNameWithoutExtension(s), SymbolKind.Namespace, null);
|
||||
|
||||
si.IsUnitNamespace = true;
|
||||
|
||||
si.description = GetUnitDescription(s);
|
||||
standard_units[i++] = si;
|
||||
}
|
||||
}
|
||||
|
|
@ -50,6 +54,23 @@ namespace CodeCompletion
|
|||
}
|
||||
}
|
||||
|
||||
private string GetUnitDescription(string fileName)
|
||||
{
|
||||
var reader = File.OpenText(fileName);
|
||||
string line = null;
|
||||
string doc = "";
|
||||
while (!reader.EndOfStream)
|
||||
{
|
||||
line = reader.ReadLine();
|
||||
if (line.StartsWith("///"))
|
||||
doc += line.Substring(3) + Environment.NewLine;
|
||||
else if (line.StartsWith("unit"))
|
||||
break;
|
||||
}
|
||||
reader.Close();
|
||||
return doc;
|
||||
}
|
||||
|
||||
bool ICodeCompletionDomConverter.IsCompiled
|
||||
{
|
||||
get
|
||||
|
|
|
|||
|
|
@ -79,7 +79,7 @@ namespace VisualPascalABC
|
|||
{
|
||||
if (!dict.ContainsKey(si))
|
||||
dict[si] = data;
|
||||
if (!dict2.ContainsKey(si.description))
|
||||
if (!string.IsNullOrEmpty(si.description) && !dict2.ContainsKey(si.description))
|
||||
dict2[si.description] = data;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -137,7 +137,7 @@ namespace VisualPascalABC
|
|||
if (VisualPABCSingleton.MainForm.UserOptions.CodeCompletionDot)
|
||||
{
|
||||
PascalABCCompiler.Parsers.KeywordKind keyw = KeywordChecker.TestForKeyword(editor.Document.TextContent, editor.ActiveTextAreaControl.TextArea.Caret.Offset - 1);
|
||||
if (keyw == PascalABCCompiler.Parsers.KeywordKind.New || VisualPABCSingleton.MainForm.UserOptions.EnableSmartIntellisense && keyw == PascalABCCompiler.Parsers.KeywordKind.Uses)
|
||||
if (keyw == PascalABCCompiler.Parsers.KeywordKind.New || keyw == PascalABCCompiler.Parsers.KeywordKind.Uses)
|
||||
{
|
||||
completionDataProvider = new CodeCompletionProvider();
|
||||
codeCompletionWindow = PABCNETCodeCompletionWindow.ShowCompletionWindow(
|
||||
|
|
|
|||
|
|
@ -451,7 +451,13 @@ namespace VisualPascalABC
|
|||
if (new_space)
|
||||
mis = dconv.GetTypes(e, line, col, out sel_si);
|
||||
else if (keyw == PascalABCCompiler.Parsers.KeywordKind.Uses && mis == null)
|
||||
mis = dconv.GetNamespaces();
|
||||
{
|
||||
if (WorkbenchServiceFactory.Workbench.UserOptions.EnableSmartIntellisense)
|
||||
mis = dconv.GetNamespaces();
|
||||
else
|
||||
mis = CodeCompletion.DomConverter.standard_units;
|
||||
}
|
||||
|
||||
else
|
||||
if (!ctrl_space)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1,3 +1,5 @@
|
|||
// Copyright (©) Ivan Bondarev, Stanislav Mihalkovich (for details please see \doc\copyright.txt)
|
||||
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
|
||||
unit Graph3D;
|
||||
|
||||
{$reference 'PresentationFramework.dll'}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,6 @@
|
|||
///Основной модуль графики
|
||||
// Copyright (©) Ivan Bondarev, Stanislav Mihalkovich (for details please see \doc\copyright.txt)
|
||||
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
|
||||
///Основной модуль графики
|
||||
unit GraphWPF;
|
||||
|
||||
interface
|
||||
|
|
@ -28,21 +30,21 @@ var CountVisuals := 0;
|
|||
procedure Invoke(d: System.Delegate; params args: array of object);
|
||||
|
||||
type
|
||||
/// Тип клавиши
|
||||
/// Тип клавиши
|
||||
Key = System.Windows.Input.Key;
|
||||
/// Цветовые константы
|
||||
/// Цветовые константы
|
||||
Colors = System.Windows.Media.Colors;
|
||||
/// Тип цвета
|
||||
/// Тип цвета
|
||||
Color = System.Windows.Media.Color;
|
||||
/// Тип цвета
|
||||
/// Тип цвета
|
||||
GColor = System.Windows.Media.Color;
|
||||
/// Тип прямоугольника
|
||||
/// Тип прямоугольника
|
||||
GRect = System.Windows.Rect;
|
||||
GWindow = Window;
|
||||
GPen = System.Windows.Media.Pen;
|
||||
GPoint = System.Windows.Point;
|
||||
GBrush = System.Windows.Media.Brush;
|
||||
/// Тип стиля шрифта
|
||||
/// Тип стиля шрифта
|
||||
FontStyle = (Normal,Bold,Italic,BoldItalic);
|
||||
|
||||
///!#
|
||||
|
|
@ -51,7 +53,7 @@ type
|
|||
c := Colors.White;
|
||||
function BrushConstruct := new SolidColorBrush(c);
|
||||
public
|
||||
/// Цвет кисти
|
||||
/// Цвет кисти
|
||||
property Color: GColor read c write c;
|
||||
end;
|
||||
|
||||
|
|
@ -67,13 +69,13 @@ type
|
|||
Result.LineJoin := PenLineJoin.Round;
|
||||
end;
|
||||
public
|
||||
/// Цвет пера
|
||||
/// Цвет пера
|
||||
property Color: GColor read c write c;
|
||||
/// Ширина пера
|
||||
/// Ширина пера
|
||||
property Width: real read th write th;
|
||||
/// Текущая координата X пера
|
||||
/// Текущая координата X пера
|
||||
property X: real read fx;
|
||||
/// Текущая координата Y пера
|
||||
/// Текущая координата Y пера
|
||||
property Y: real read fy;
|
||||
end;
|
||||
|
||||
|
|
@ -101,13 +103,13 @@ type
|
|||
function TypefaceClone := tf;
|
||||
function BrushConstruct := new SolidColorBrush(c);
|
||||
public
|
||||
/// Цвет шрифта
|
||||
/// Цвет шрифта
|
||||
property Color: GColor read c write c;
|
||||
/// Имя шрифта
|
||||
/// Имя шрифта
|
||||
property Name: string read GetName write SetName;
|
||||
/// Размер шрифта в единицах по 1/96 дюйма
|
||||
/// Размер шрифта в единицах по 1/96 дюйма
|
||||
property Size: real read sz write sz;
|
||||
/// Стиль шрифта
|
||||
/// Стиль шрифта
|
||||
property Style: FontStyle write SetFS;
|
||||
end;
|
||||
|
||||
|
|
@ -125,268 +127,268 @@ type
|
|||
procedure SetCaption(c: string);
|
||||
function GetCaption: string;
|
||||
public
|
||||
/// Отступ графического окна от левого края экрана
|
||||
/// Отступ графического окна от левого края экрана
|
||||
property Left: real read GetLeft write SetLeft;
|
||||
/// Отступ графического окна от верхнего края экрана
|
||||
/// Отступ графического окна от верхнего края экрана
|
||||
property Top: real read GetTop write SetTop;
|
||||
/// Ширина клиентской части графического окна
|
||||
/// Ширина клиентской части графического окна
|
||||
property Width: real read GetWidth write SetWidth;
|
||||
/// Высота клиентской части графического окна
|
||||
/// Высота клиентской части графического окна
|
||||
property Height: real read GetHeight write SetHeight;
|
||||
/// Заголовок графического окна
|
||||
/// Заголовок графического окна
|
||||
property Caption: string read GetCaption write SetCaption;
|
||||
/// Заголовок графического окна
|
||||
/// Заголовок графического окна
|
||||
property Title: string read GetCaption write SetCaption;
|
||||
/// Очищает графическое окно белым цветом
|
||||
/// Очищает графическое окно белым цветом
|
||||
procedure Clear;
|
||||
/// Очищает графическое окно цветом c
|
||||
/// Очищает графическое окно цветом c
|
||||
procedure Clear(c: Color);
|
||||
/// Устанавливает размеры клиентской части графического окна
|
||||
/// Устанавливает размеры клиентской части графического окна
|
||||
procedure SetSize(w, h: real);
|
||||
/// Устанавливает отступ графического окна от левого верхнего края экрана
|
||||
/// Устанавливает отступ графического окна от левого верхнего края экрана
|
||||
procedure SetPos(l, t: real);
|
||||
/// Сохраняет содержимое графического окна в файл с именем fname
|
||||
/// Сохраняет содержимое графического окна в файл с именем fname
|
||||
procedure Save(fname: string);
|
||||
/// Восстанавливает содержимое графического окна из файла с именем fname
|
||||
/// Восстанавливает содержимое графического окна из файла с именем fname
|
||||
procedure Load(fname: string);
|
||||
/// Заполняет содержимое графического окна обоями из файла с именем fname
|
||||
/// Заполняет содержимое графического окна обоями из файла с именем fname
|
||||
procedure Fill(fname: string);
|
||||
/// Закрывает графическое окно и завершает приложение
|
||||
/// Закрывает графическое окно и завершает приложение
|
||||
procedure Close;
|
||||
/// Сворачивает графическое окно
|
||||
/// Сворачивает графическое окно
|
||||
procedure Minimize;
|
||||
/// Максимизирует графическое окно
|
||||
/// Максимизирует графическое окно
|
||||
procedure Maximize;
|
||||
/// Возвращает графическое окно к нормальному размеру
|
||||
/// Возвращает графическое окно к нормальному размеру
|
||||
procedure Normalize;
|
||||
/// Центрирует графическое окно по центру экрана
|
||||
/// Центрирует графическое окно по центру экрана
|
||||
procedure CenterOnScreen;
|
||||
/// Возвращает центр графического окна
|
||||
/// Возвращает центр графического окна
|
||||
function Center: Point;
|
||||
/// Возвращает прямоугольник клиентской области окна
|
||||
/// Возвращает прямоугольник клиентской области окна
|
||||
function ClientRect: GRect;
|
||||
end;
|
||||
|
||||
/// Виды системы координат
|
||||
/// Виды системы координат
|
||||
CoordType = (MathematicalCoords,ScreenCoords);
|
||||
/// Константы выравнивания текста относительно точки
|
||||
/// Константы выравнивания текста относительно точки
|
||||
Alignment = (LeftTop,CenterTop,RightTop,LeftCenter,Center,RightCenter,LeftBottom,CenterBottom,RightBottom);
|
||||
|
||||
/// Рисует эллипс с центром в точке (x,y) и радиусами rx и ry
|
||||
/// Рисует эллипс с центром в точке (x,y) и радиусами rx и ry
|
||||
procedure Ellipse(x,y,rx,ry: real);
|
||||
/// Рисует контур эллипса с центром в точке (x,y) и радиусами rx и ry
|
||||
/// Рисует контур эллипса с центром в точке (x,y) и радиусами rx и ry
|
||||
procedure DrawEllipse(x,y,rx,ry: real);
|
||||
/// Рисует внутренность эллипса с центром в точке (x,y) и радиусами rx и ry
|
||||
/// Рисует внутренность эллипса с центром в точке (x,y) и радиусами rx и ry
|
||||
procedure FillEllipse(x,y,rx,ry: real);
|
||||
/// Рисует эллипс с центром в точке (x,y), радиусами rx и ry и цветом внутренности c
|
||||
/// Рисует эллипс с центром в точке (x,y), радиусами rx и ry и цветом внутренности c
|
||||
procedure Ellipse(x,y,rx,ry: real; c: Color);
|
||||
/// Рисует контур эллипса с центром в точке (x,y), радиусами rx и ry и цветом c
|
||||
/// Рисует контур эллипса с центром в точке (x,y), радиусами rx и ry и цветом c
|
||||
procedure DrawEllipse(x,y,rx,ry: real; c: Color);
|
||||
/// Рисует внутренность эллипса с центром в точке (x,y), радиусами rx и ry и цветом c
|
||||
/// Рисует внутренность эллипса с центром в точке (x,y), радиусами rx и ry и цветом c
|
||||
procedure FillEllipse(x,y,rx,ry: real; c: Color);
|
||||
|
||||
/// Рисует окружность с центром в точке (x,y) и радиусом r
|
||||
/// Рисует окружность с центром в точке (x,y) и радиусом r
|
||||
procedure Circle(x,y,r: real);
|
||||
/// Рисует контур окружности с центром в точке (x,y) и радиусом r
|
||||
/// Рисует контур окружности с центром в точке (x,y) и радиусом r
|
||||
procedure DrawCircle(x,y,r: real);
|
||||
/// Рисует внутренность окружности с центром в точке (x,y) и радиусом r
|
||||
/// Рисует внутренность окружности с центром в точке (x,y) и радиусом r
|
||||
procedure FillCircle(x,y,r: real);
|
||||
/// Рисует окружность с центром в точке (x,y), радиусом r и цветом c
|
||||
/// Рисует окружность с центром в точке (x,y), радиусом r и цветом c
|
||||
procedure Circle(x,y,r: real; c: Color);
|
||||
/// Рисует контур окружности с центром в точке (x,y), радиусом r и цветом c
|
||||
/// Рисует контур окружности с центром в точке (x,y), радиусом r и цветом c
|
||||
procedure DrawCircle(x,y,r: real; c: Color);
|
||||
/// Рисует внутренность окружности с центром в точке (x,y), радиусом r и цветом c
|
||||
/// Рисует внутренность окружности с центром в точке (x,y), радиусом r и цветом c
|
||||
procedure FillCircle(x,y,r: real; c: Color);
|
||||
|
||||
/// Рисует прямоугольник с координатами вершин (x,y) и (x+w,y+h)
|
||||
/// Рисует прямоугольник с координатами вершин (x,y) и (x+w,y+h)
|
||||
procedure Rectangle(x,y,w,h: real);
|
||||
/// Рисует контур прямоугольника с координатами вершин (x,y) и (x+w,y+h)
|
||||
/// Рисует контур прямоугольника с координатами вершин (x,y) и (x+w,y+h)
|
||||
procedure DrawRectangle(x,y,w,h: real);
|
||||
/// Рисует внутренность прямоугольника с координатами вершин (x,y) и (x+w,y+h)
|
||||
/// Рисует внутренность прямоугольника с координатами вершин (x,y) и (x+w,y+h)
|
||||
procedure FillRectangle(x,y,w,h: real);
|
||||
/// Рисует прямоугольник с координатами вершин (x,y) и (x+w,y+h) цветом c
|
||||
/// Рисует прямоугольник с координатами вершин (x,y) и (x+w,y+h) цветом c
|
||||
procedure Rectangle(x,y,w,h: real; c: Color);
|
||||
/// Рисует контур прямоугольника с координатами вершин (x,y) и (x+w,y+h) цветом c
|
||||
/// Рисует контур прямоугольника с координатами вершин (x,y) и (x+w,y+h) цветом c
|
||||
procedure DrawRectangle(x,y,w,h: real; c: Color);
|
||||
/// Рисует внутренность прямоугольника с координатами вершин (x,y) и (x+w,y+h) цветом c
|
||||
/// Рисует внутренность прямоугольника с координатами вершин (x,y) и (x+w,y+h) цветом c
|
||||
procedure FillRectangle(x,y,w,h: real; c: Color);
|
||||
|
||||
/// Рисует дугу окружности с центром в точке (x,y) и радиусом r, заключенную между двумя лучами, образующими углы angle1 и angle2 с осью OX
|
||||
/// Рисует дугу окружности с центром в точке (x,y) и радиусом r, заключенную между двумя лучами, образующими углы angle1 и angle2 с осью OX
|
||||
procedure Arc(x, y, r, angle1, angle2: real);
|
||||
/// Рисует дугу окружности с центром в точке (x,y) и радиусом r, заключенную между двумя лучами, образующими углы angle1 и angle2 с осью OX, цветом c
|
||||
/// Рисует дугу окружности с центром в точке (x,y) и радиусом r, заключенную между двумя лучами, образующими углы angle1 и angle2 с осью OX, цветом c
|
||||
procedure Arc(x, y, r, angle1, angle2: real; c: Color);
|
||||
|
||||
/// Рисует сектор окружности с центром в точке (x,y) и радиусом r, заключенный между двумя лучами, образующими углы angle1 и angle2 с осью OX
|
||||
/// Рисует сектор окружности с центром в точке (x,y) и радиусом r, заключенный между двумя лучами, образующими углы angle1 и angle2 с осью OX
|
||||
procedure Sector(x, y, r, angle1, angle2: real);
|
||||
/// Рисует контур сектора окружности с центром в точке (x,y) и радиусом r, заключенного между двумя лучами, образующими углы angle1 и angle2 с осью OX
|
||||
/// Рисует контур сектора окружности с центром в точке (x,y) и радиусом r, заключенного между двумя лучами, образующими углы angle1 и angle2 с осью OX
|
||||
procedure DrawSector(x, y, r, angle1, angle2: real);
|
||||
/// Рисует внутренность сектора окружности с центром в точке (x,y) и радиусом r, заключенного между двумя лучами, образующими углы angle1 и angle2 с осью OX
|
||||
/// Рисует внутренность сектора окружности с центром в точке (x,y) и радиусом r, заключенного между двумя лучами, образующими углы angle1 и angle2 с осью OX
|
||||
procedure FillSector(x, y, r, angle1, angle2: real);
|
||||
/// Рисует сектор окружности с центром в точке (x,y) и радиусом r, заключенный между двумя лучами, образующими углы angle1 и angle2 с осью OX, цветом c
|
||||
/// Рисует сектор окружности с центром в точке (x,y) и радиусом r, заключенный между двумя лучами, образующими углы angle1 и angle2 с осью OX, цветом c
|
||||
procedure Sector(x, y, r, angle1, angle2: real; c: Color);
|
||||
/// Рисует контур сектора окружности с центром в точке (x,y) и радиусом r, заключенного между двумя лучами, образующими углы angle1 и angle2 с осью OX, цветом c
|
||||
/// Рисует контур сектора окружности с центром в точке (x,y) и радиусом r, заключенного между двумя лучами, образующими углы angle1 и angle2 с осью OX, цветом c
|
||||
procedure DrawSector(x, y, r, angle1, angle2: real; c: Color);
|
||||
/// Рисует внутренность сектора окружности с центром в точке (x,y) и радиусом r, заключенного между двумя лучами, образующими углы angle1 и angle2 с осью OX, цветом c
|
||||
/// Рисует внутренность сектора окружности с центром в точке (x,y) и радиусом r, заключенного между двумя лучами, образующими углы angle1 и angle2 с осью OX, цветом c
|
||||
procedure FillSector(x, y, r, angle1, angle2: real; c: Color);
|
||||
|
||||
/// Рисует отрезок прямой от точки (x,y) до точки (x1,y1)
|
||||
/// Рисует отрезок прямой от точки (x,y) до точки (x1,y1)
|
||||
procedure Line(x,y,x1,y1: real);
|
||||
/// Рисует отрезок прямой от точки (x,y) до точки (x1,y1) цветом c
|
||||
/// Рисует отрезок прямой от точки (x,y) до точки (x1,y1) цветом c
|
||||
procedure Line(x,y,x1,y1: real; c: Color);
|
||||
/// Устанавливает текущую позицию рисования в точку (x,y)
|
||||
/// Устанавливает текущую позицию рисования в точку (x,y)
|
||||
procedure MoveTo(x,y: real);
|
||||
/// Рисует отрезок от текущей позиции до точки (x,y). Текущая позиция переносится в точку (x,y)
|
||||
/// Рисует отрезок от текущей позиции до точки (x,y). Текущая позиция переносится в точку (x,y)
|
||||
procedure LineTo(x,y: real);
|
||||
/// Перемещает текущую позицию рисования на вектор (dx,dy)
|
||||
/// Перемещает текущую позицию рисования на вектор (dx,dy)
|
||||
procedure MoveRel(dx,dy: real);
|
||||
/// Рисует отрезок от текущей позиции до точки, смещённой на вектор (dx,dy). Текущая позиция переносится в новую точку
|
||||
/// Рисует отрезок от текущей позиции до точки, смещённой на вектор (dx,dy). Текущая позиция переносится в новую точку
|
||||
procedure LineRel(dx,dy: real);
|
||||
/// Перемещает текущую позицию рисования на вектор (dx,dy)
|
||||
/// Перемещает текущую позицию рисования на вектор (dx,dy)
|
||||
procedure MoveOn(dx,dy: real);
|
||||
/// Рисует отрезок от текущей позиции до точки, смещённой на вектор (dx,dy). Текущая позиция переносится в новую точку
|
||||
/// Рисует отрезок от текущей позиции до точки, смещённой на вектор (dx,dy). Текущая позиция переносится в новую точку
|
||||
procedure LineOn(dx,dy: real);
|
||||
|
||||
/// Рисует ломаную, заданную массивом точек
|
||||
/// Рисует ломаную, заданную массивом точек
|
||||
procedure PolyLine(points: array of Point);
|
||||
/// Рисует ломаную заданную массивом точек и цветом
|
||||
/// Рисует ломаную заданную массивом точек и цветом
|
||||
procedure PolyLine(points: array of Point; c: Color);
|
||||
|
||||
/// Рисует многоугольник, заданный массивом точек
|
||||
/// Рисует многоугольник, заданный массивом точек
|
||||
procedure Polygon(points: array of Point);
|
||||
/// Рисует контур многоугольника, заданного массивом точек
|
||||
/// Рисует контур многоугольника, заданного массивом точек
|
||||
procedure DrawPolygon(points: array of Point);
|
||||
/// Рисует внутренность многоугольника, заданного массивом точек
|
||||
/// Рисует внутренность многоугольника, заданного массивом точек
|
||||
procedure FillPolygon(points: array of Point);
|
||||
/// Рисует многоугольник, заданный массивом точек и цветом
|
||||
/// Рисует многоугольник, заданный массивом точек и цветом
|
||||
procedure Polygon(points: array of Point; c: Color);
|
||||
/// Рисует контур многоугольника, заданного массивом точек и цветом
|
||||
/// Рисует контур многоугольника, заданного массивом точек и цветом
|
||||
procedure DrawPolygon(points: array of Point; c: GColor);
|
||||
/// Рисует внутренность многоугольника, заданного массивом точек и цветом
|
||||
/// Рисует внутренность многоугольника, заданного массивом точек и цветом
|
||||
procedure FillPolygon(points: array of Point; c: GColor);
|
||||
|
||||
/// Рисует изображение из файла fname в позиции (x,y)
|
||||
/// Рисует изображение из файла fname в позиции (x,y)
|
||||
procedure DrawImage(x,y: real; fname: string);
|
||||
/// Рисует изображение из файла fname в позиции (x,y) размера w на h
|
||||
/// Рисует изображение из файла fname в позиции (x,y) размера w на h
|
||||
procedure DrawImage(x,y,w,h: real; fname: string);
|
||||
/// Рисует немасштабированное изображение из файла fname в позиции (x,y)
|
||||
/// Рисует немасштабированное изображение из файла fname в позиции (x,y)
|
||||
procedure DrawImageUnscaled(x,y: real; fname: string);
|
||||
/// Выводит видеоиз файла fname в позицию (x,y)
|
||||
/// Выводит видеоиз файла fname в позицию (x,y)
|
||||
procedure DrawVideo(x,y: real; fname: string);
|
||||
|
||||
/// Ширина изображения в пикселах
|
||||
/// Ширина изображения в пикселах
|
||||
function ImageWidth(fname: string): integer;
|
||||
/// Высота изображения в пикселах
|
||||
/// Высота изображения в пикселах
|
||||
function ImageHeight(fname: string): integer;
|
||||
/// Размер изображения в пикселах
|
||||
/// Размер изображения в пикселах
|
||||
function ImageSize(fname: string): (integer,integer);
|
||||
|
||||
/// Ширина текста при выводе
|
||||
/// Ширина текста при выводе
|
||||
function TextWidth(text: string): real;
|
||||
/// Высота текста при выводе
|
||||
/// Высота текста при выводе
|
||||
function TextHeight(text: string): real;
|
||||
/// Размер текста при выводе
|
||||
/// Размер текста при выводе
|
||||
function TextSize(text: string): Size;
|
||||
|
||||
/// Текущая кисть
|
||||
/// Текущая кисть
|
||||
var Brush: BrushType;
|
||||
/// Текущее перо
|
||||
/// Текущее перо
|
||||
var Pen: PenType;
|
||||
/// Текущий шрифт
|
||||
/// Текущий шрифт
|
||||
var Font: FontType;
|
||||
/// Текущее окно
|
||||
/// Текущее окно
|
||||
var Window: WindowType;
|
||||
|
||||
var
|
||||
/// Событие нажатия на кнопку мыши. (x,y) - координаты курсора мыши в момент наступления события, mousebutton = 1, если нажата левая кнопка мыши, и 2, если нажата правая кнопка мыши
|
||||
/// Событие нажатия на кнопку мыши. (x,y) - координаты курсора мыши в момент наступления события, mousebutton = 1, если нажата левая кнопка мыши, и 2, если нажата правая кнопка мыши
|
||||
OnMouseDown: procedure(x, y: real; mousebutton: integer);
|
||||
/// Событие отжатия кнопки мыши. (x,y) - координаты курсора мыши в момент наступления события, mousebutton = 1, если отжата левая кнопка мыши, и 2, если отжата правая кнопка мыши
|
||||
/// Событие отжатия кнопки мыши. (x,y) - координаты курсора мыши в момент наступления события, mousebutton = 1, если отжата левая кнопка мыши, и 2, если отжата правая кнопка мыши
|
||||
OnMouseUp: procedure(x, y: real; mousebutton: integer);
|
||||
/// Событие перемещения мыши. (x,y) - координаты курсора мыши в момент наступления события, mousebutton = 0, если кнопка мыши не нажата, 1, если нажата левая кнопка мыши, и 2, если нажата правая кнопка мыши
|
||||
/// Событие перемещения мыши. (x,y) - координаты курсора мыши в момент наступления события, mousebutton = 0, если кнопка мыши не нажата, 1, если нажата левая кнопка мыши, и 2, если нажата правая кнопка мыши
|
||||
OnMouseMove: procedure(x, y: real; mousebutton: integer);
|
||||
/// Событие нажатия клавиши
|
||||
/// Событие нажатия клавиши
|
||||
OnKeyDown: procedure(k: Key);
|
||||
/// Событие отжатия клавиши
|
||||
/// Событие отжатия клавиши
|
||||
OnKeyUp: procedure(k: Key);
|
||||
/// Событие нажатия символьной клавиши
|
||||
/// Событие нажатия символьной клавиши
|
||||
OnKeyPress: procedure(ch: char);
|
||||
|
||||
/// Возвращает цвет по красной, зеленой и синей составляющей (в диапазоне 0..255)
|
||||
/// Возвращает цвет по красной, зеленой и синей составляющей (в диапазоне 0..255)
|
||||
function RGB(r,g,b: byte): Color;
|
||||
/// Возвращает цвет по красной, зеленой и синей составляющей и параметру прозрачности (в диапазоне 0..255)
|
||||
/// Возвращает цвет по красной, зеленой и синей составляющей и параметру прозрачности (в диапазоне 0..255)
|
||||
function ARGB(a,r,g,b: byte): Color;
|
||||
/// Возвращает случайный цвет
|
||||
/// Возвращает случайный цвет
|
||||
function RandomColor: Color;
|
||||
/// Возвращает случайный цвет
|
||||
/// Возвращает случайный цвет
|
||||
function clRandom: Color;
|
||||
/// Возвращает точку с координатами (x,y)
|
||||
/// Возвращает точку с координатами (x,y)
|
||||
function Pnt(x,y: real): GPoint;
|
||||
/// Возвращает прямоугольник с координатами угла (x,y), шириной w и высотой h
|
||||
/// Возвращает прямоугольник с координатами угла (x,y), шириной w и высотой h
|
||||
function Rect(x,y,w,h: real): GRect;
|
||||
/// Возвращает однотонную цветную кисть, заданную цветом
|
||||
/// Возвращает однотонную цветную кисть, заданную цветом
|
||||
function ColorBrush(c: Color): GBrush;
|
||||
/// Возвращает однотонное цветное перо, заданное цветом
|
||||
/// Возвращает однотонное цветное перо, заданное цветом
|
||||
function ColorPen(c: Color): GPen;
|
||||
|
||||
/// Начать анимацию, основанную на кадре
|
||||
/// Начать анимацию, основанную на кадре
|
||||
procedure BeginFrameBasedAnimation(Draw: procedure; frate: integer := 60);
|
||||
/// Начать анимацию, основанную на кадре
|
||||
/// Начать анимацию, основанную на кадре
|
||||
procedure BeginFrameBasedAnimation(Draw: procedure(frame: integer); frate: integer := 60);
|
||||
/// Завершить анимацию, основанную на кадре
|
||||
/// Завершить анимацию, основанную на кадре
|
||||
procedure EndFrameBasedAnimation;
|
||||
|
||||
/// Выводит строку в прямоугольник к координатами левого верхнего угла (x,y)
|
||||
/// Выводит строку в прямоугольник к координатами левого верхнего угла (x,y)
|
||||
procedure DrawText(x, y, w, h: real; text: string; align: Alignment := Alignment.Center);
|
||||
/// Выводит строку в прямоугольник к координатами левого верхнего угла (x,y)
|
||||
/// Выводит строку в прямоугольник к координатами левого верхнего угла (x,y)
|
||||
procedure DrawText(x, y, w, h: real; text: string; c: GColor; align: Alignment := Alignment.Center);
|
||||
/// Выводит целое в прямоугольник к координатами левого верхнего угла (x,y)
|
||||
/// Выводит целое в прямоугольник к координатами левого верхнего угла (x,y)
|
||||
procedure DrawText(x, y, w, h: real; number: integer; align: Alignment := Alignment.Center);
|
||||
/// Выводит вещественное в прямоугольник к координатами левого верхнего угла (x,y)
|
||||
/// Выводит вещественное в прямоугольник к координатами левого верхнего угла (x,y)
|
||||
procedure DrawText(x, y, w, h: real; number: real; align: Alignment := Alignment.Center);
|
||||
/// Выводит строку в прямоугольник
|
||||
/// Выводит строку в прямоугольник
|
||||
procedure DrawText(r: GRect; text: string; align: Alignment := Alignment.Center);
|
||||
/// Выводит целое в прямоугольник
|
||||
/// Выводит целое в прямоугольник
|
||||
procedure DrawText(r: GRect; number: integer; align: Alignment := Alignment.Center);
|
||||
/// Выводит вещественное в прямоугольник
|
||||
/// Выводит вещественное в прямоугольник
|
||||
procedure DrawText(r: GRect; number: real; align: Alignment := Alignment.Center);
|
||||
/// Выводит целое в прямоугольник к координатами левого верхнего угла (x,y)
|
||||
/// Выводит целое в прямоугольник к координатами левого верхнего угла (x,y)
|
||||
procedure DrawText(x, y, w, h: real; number: integer; c: GColor; align: Alignment := Alignment.Center);
|
||||
/// Выводит вещественное в прямоугольник к координатами левого верхнего угла (x,y)
|
||||
/// Выводит вещественное в прямоугольник к координатами левого верхнего угла (x,y)
|
||||
procedure DrawText(x, y, w, h: real; number: real; c: GColor; align: Alignment := Alignment.Center);
|
||||
/// Выводит строку в прямоугольник
|
||||
/// Выводит строку в прямоугольник
|
||||
procedure DrawText(r: GRect; text: string; c: GColor; align: Alignment := Alignment.Center);
|
||||
/// Выводит целое в прямоугольник
|
||||
/// Выводит целое в прямоугольник
|
||||
procedure DrawText(r: GRect; number: integer; c: GColor; align: Alignment := Alignment.Center);
|
||||
/// Выводит вещественное в прямоугольник
|
||||
/// Выводит вещественное в прямоугольник
|
||||
procedure DrawText(r: GRect; number: real; c: GColor; align: Alignment := Alignment.Center);
|
||||
|
||||
/// Выводит строку в позицию (x,y)
|
||||
/// Выводит строку в позицию (x,y)
|
||||
procedure TextOut(x, y: real; text: string; align: Alignment := Alignment.LeftTop);
|
||||
/// Выводит строку в позицию (x,y) цветом c
|
||||
/// Выводит строку в позицию (x,y) цветом c
|
||||
procedure TextOut(x, y: real; text: string; c: GColor; align: Alignment := Alignment.LeftTop);
|
||||
/// Выводит целое в позицию (x,y)
|
||||
/// Выводит целое в позицию (x,y)
|
||||
procedure TextOut(x, y: real; text: integer; align: Alignment := Alignment.LeftTop);
|
||||
/// Выводит целое в позицию (x,y) цветом c
|
||||
/// Выводит целое в позицию (x,y) цветом c
|
||||
procedure TextOut(x, y: real; text: integer; c: GColor; align: Alignment := Alignment.LeftTop);
|
||||
/// Выводит вещественное в позицию (x,y)
|
||||
/// Выводит вещественное в позицию (x,y)
|
||||
procedure TextOut(x, y: real; text: real; align: Alignment := Alignment.LeftTop);
|
||||
/// Выводит вещественное в позицию (x,y) цветом c
|
||||
/// Выводит вещественное в позицию (x,y) цветом c
|
||||
procedure TextOut(x, y: real; text: real; c: GColor; align: Alignment := Alignment.LeftTop);
|
||||
|
||||
/// Рисует график функции f, заданной на отрезке [a,b] по оси абсцисс и на отрезке [min,max] по оси ординат, в прямоугольнике, задаваемом координатами x1,y1,x2,y2,
|
||||
/// Рисует график функции f, заданной на отрезке [a,b] по оси абсцисс и на отрезке [min,max] по оси ординат, в прямоугольнике, задаваемом координатами x1,y1,x2,y2,
|
||||
procedure DrawGraph(f: real -> real; a, b, min, max, x, y, w, h: real);
|
||||
/// Рисует график функции f, заданной на отрезке [a,b] по оси абсцисс и на отрезке [min,max] по оси ординат, в прямоугольнике r
|
||||
/// Рисует график функции f, заданной на отрезке [a,b] по оси абсцисс и на отрезке [min,max] по оси ординат, в прямоугольнике r
|
||||
procedure DrawGraph(f: real -> real; a, b, min, max: real; r: GRect);
|
||||
/// Рисует график функции f, заданной на отрезке [a,b] по оси абсцисс и на отрезке [min,max] по оси ординат, на полное графическое окно
|
||||
/// Рисует график функции f, заданной на отрезке [a,b] по оси абсцисс и на отрезке [min,max] по оси ординат, на полное графическое окно
|
||||
procedure DrawGraph(f: real -> real; a, b, min, max: real);
|
||||
/// Рисует график функции f, заданной на отрезке [a,b], в прямоугольнике, задаваемом координатами x1,y1,x2,y2,
|
||||
/// Рисует график функции f, заданной на отрезке [a,b], в прямоугольнике, задаваемом координатами x1,y1,x2,y2,
|
||||
procedure DrawGraph(f: real -> real; a, b: real; x, y, w, h: real);
|
||||
/// Рисует график функции f, заданной на отрезке [a,b], в прямоугольнике r
|
||||
/// Рисует график функции f, заданной на отрезке [a,b], в прямоугольнике r
|
||||
procedure DrawGraph(f: real -> real; a, b: real; r: GRect);
|
||||
/// Рисует график функции f, заданной на отрезке [-5,5], в прямоугольнике r
|
||||
/// Рисует график функции f, заданной на отрезке [-5,5], в прямоугольнике r
|
||||
procedure DrawGraph(f: real -> real; r: GRect);
|
||||
/// Рисует график функции f, заданной на отрезке [a,b], на полное графическое окно
|
||||
/// Рисует график функции f, заданной на отрезке [a,b], на полное графическое окно
|
||||
procedure DrawGraph(f: real -> real; a, b: real);
|
||||
/// Рисует график функции f, заданной на отрезке [-5,5], на полное графическое окно
|
||||
/// Рисует график функции f, заданной на отрезке [-5,5], на полное графическое окно
|
||||
procedure DrawGraph(f: real -> real);
|
||||
|
||||
procedure SetMathematicCoords(x1: real := -10; x2: real := 10; drawcoords: boolean := true);
|
||||
|
|
@ -497,7 +499,7 @@ end;
|
|||
function ScaleToDevice: (real,real);
|
||||
begin
|
||||
var pSource := PresentationSource.FromVisual(MainWindow);
|
||||
if pSource = nil then // не знаю, почему
|
||||
if pSource = nil then // не знаю, почему
|
||||
begin
|
||||
Result := (1.0,1.0);
|
||||
exit
|
||||
|
|
@ -668,7 +670,7 @@ function ImageHeight(fname: string) := Invoke&<integer>(ImHelper.Create(fname).I
|
|||
function ImageSize(fname: string) := Invoke&<(integer,integer)>(ImHelper.Create(fname).ISz);
|
||||
|
||||
|
||||
// Нет свойств посмотреть размеры видео!
|
||||
// Нет свойств посмотреть размеры видео!
|
||||
procedure DrawVideoP(x,y,w,h: real; fname: string);
|
||||
begin
|
||||
var dc := GetDC();
|
||||
|
|
@ -679,7 +681,7 @@ begin
|
|||
dc.Close();
|
||||
end;
|
||||
|
||||
// А теперь займёмся полигонами...
|
||||
// А теперь займёмся полигонами...
|
||||
procedure DrawPolygonOrPolyline(Self: DrawingContext;
|
||||
b: GBrush; p: GPen; points: array of Point; draw_polygon: boolean); extensionmethod;
|
||||
begin
|
||||
|
|
@ -808,11 +810,11 @@ procedure Rectangle(x,y,w,h: real; c: GColor) := InvokeVisual(RectanglePC,x,y,w,
|
|||
procedure DrawRectangle(x,y,w,h: real; c: GColor) := InvokeVisual(DrawRectanglePC,x,y,w,h,c);
|
||||
procedure FillRectangle(x,y,w,h: real; c: GColor) := InvokeVisual(FillRectanglePC,x,y,w,h,c);
|
||||
|
||||
/// Рисует дугу окружности с центром в точке (x,y) и радиусом r, заключенной между двумя лучами, образующими углы angle1 и angle2 с осью OX (angle1 и angle2 – вещественные, задаются в градусах и отсчитываются против часовой стрелки)
|
||||
/// Рисует дугу окружности с центром в точке (x,y) и радиусом r, заключенной между двумя лучами, образующими углы angle1 и angle2 с осью OX (angle1 и angle2 – вещественные, задаются в градусах и отсчитываются против часовой стрелки)
|
||||
procedure Arc(x, y, r, angle1, angle2: real) := InvokeVisual(ArcP,x, y, r, angle1, angle2);
|
||||
procedure Arc(x, y, r, angle1, angle2: real; c: GColor) := InvokeVisual(ArcPC,x, y, r, angle1, angle2, c);
|
||||
|
||||
/// Рисует сектор окружности с центром в точке (x,y) и радиусом r, заключенной между двумя лучами, образующими углы angle1 и angle2 с осью OX (angle1 и angle2 – вещественные, задаются в градусах и отсчитываются против часовой стрелки)
|
||||
/// Рисует сектор окружности с центром в точке (x,y) и радиусом r, заключенной между двумя лучами, образующими углы angle1 и angle2 с осью OX (angle1 и angle2 – вещественные, задаются в градусах и отсчитываются против часовой стрелки)
|
||||
procedure Sector(x, y, r, angle1, angle2: real) := InvokeVisual(SectorP,x, y, r, angle1, angle2);
|
||||
procedure DrawSector(x, y, r, angle1, angle2: real) := InvokeVisual(DrawSectorP,x, y, r, angle1, angle2);
|
||||
procedure FillSector(x, y, r, angle1, angle2: real) := InvokeVisual(FillSectorP,x, y, r, angle1, angle2);
|
||||
|
|
@ -849,11 +851,11 @@ procedure DrawImage(x,y,w,h: real; fname: string) := InvokeVisual(DrawImageWHP,x
|
|||
procedure DrawImageUnscaled(x,y: real; fname: string) := InvokeVisual(DrawImageUnscaledP,x,y,fname);
|
||||
procedure DrawVideo(x,y: real; fname: string) := InvokeVisual(DrawVideoP,x,y,fname);
|
||||
|
||||
/// Ширина текста при выводе
|
||||
/// Ширина текста при выводе
|
||||
function TextWidth(text: string) := Invoke&<real>(TextV.Create(text).TextWidth);
|
||||
/// Высота текста при выводе
|
||||
/// Высота текста при выводе
|
||||
function TextHeight(text: string) := Invoke&<real>(TextV.Create(text).TextHeight);
|
||||
/// Размер текста при выводе
|
||||
/// Размер текста при выводе
|
||||
function TextSize(text: string): Size := Invoke&<Size>(TextV.Create(text).TextSize);
|
||||
|
||||
procedure TextOutHelper(x,y: real; text: string) := InvokeVisual(DrawTextP,x,y,text);
|
||||
|
|
@ -887,7 +889,7 @@ begin
|
|||
end;
|
||||
// Println(dw,dh);
|
||||
case align of
|
||||
Alignment.LeftTop: {ничего};
|
||||
Alignment.LeftTop: {ничего};
|
||||
Alignment.LeftCenter: y += dh;
|
||||
Alignment.LeftBottom: y += 2*dh;
|
||||
Alignment.CenterTop: x += dw;
|
||||
|
|
@ -903,37 +905,37 @@ begin
|
|||
Alignment.LeftBottom, Alignment.CenterBottom, Alignment.RightBottom: y -= h;
|
||||
end;
|
||||
end;
|
||||
/// Выводит строку в прямоугольник к координатами левого верхнего угла (x,y)
|
||||
/// Выводит строку в прямоугольник к координатами левого верхнего угла (x,y)
|
||||
procedure DrawText(x, y, w, h: real; text: string; align: Alignment);
|
||||
begin
|
||||
DrawTextHelper(x, y, w, h, text,align);
|
||||
TextOutHelper(x,y,text)
|
||||
end;
|
||||
/// Выводит строку в прямоугольник к координатами левого верхнего угла (x,y)
|
||||
/// Выводит строку в прямоугольник к координатами левого верхнего угла (x,y)
|
||||
procedure DrawText(x, y, w, h: real; text: string; c: GColor; align: Alignment);
|
||||
begin
|
||||
DrawTextHelper(x, y, w, h,text,align);
|
||||
TextOutHelper(x,y,text,c)
|
||||
end;
|
||||
/// Выводит целое в прямоугольник к координатами левого верхнего угла (x,y)
|
||||
/// Выводит целое в прямоугольник к координатами левого верхнего угла (x,y)
|
||||
procedure DrawText(x, y, w, h: real; number: integer; align: Alignment) := DrawText(x, y, w, h, '' + number,align);
|
||||
/// Выводит вещественное в прямоугольник к координатами левого верхнего угла (x,y)
|
||||
/// Выводит вещественное в прямоугольник к координатами левого верхнего угла (x,y)
|
||||
procedure DrawText(x, y, w, h: real; number: real; align: Alignment) := DrawText(x, y, w, h, '' + number,align);
|
||||
/// Выводит строку в прямоугольник
|
||||
/// Выводит строку в прямоугольник
|
||||
procedure DrawText(r: GRect; text: string; align: Alignment) := DrawText(r.x,r.y,r.Width,r.Height,text,align);
|
||||
/// Выводит целое в прямоугольник
|
||||
/// Выводит целое в прямоугольник
|
||||
procedure DrawText(r: GRect; number: integer; align: Alignment) := DrawText(r.x,r.y,r.Width,r.Height,number,align);
|
||||
/// Выводит вещественное в прямоугольник
|
||||
/// Выводит вещественное в прямоугольник
|
||||
procedure DrawText(r: GRect; number: real; align: Alignment) := DrawText(r.x,r.y,r.Width,r.Height,number,align);
|
||||
/// Выводит целое в прямоугольник к координатами левого верхнего угла (x,y)
|
||||
/// Выводит целое в прямоугольник к координатами левого верхнего угла (x,y)
|
||||
procedure DrawText(x, y, w, h: real; number: integer; c: GColor; align: Alignment) := DrawText(x, y, w, h, '' + number,c,align);
|
||||
/// Выводит вещественное в прямоугольник к координатами левого верхнего угла (x,y)
|
||||
/// Выводит вещественное в прямоугольник к координатами левого верхнего угла (x,y)
|
||||
procedure DrawText(x, y, w, h: real; number: real; c: GColor; align: Alignment) := DrawText(x, y, w, h, '' + number,c,align);
|
||||
/// Выводит строку в прямоугольник
|
||||
/// Выводит строку в прямоугольник
|
||||
procedure DrawText(r: GRect; text: string; c: GColor; align: Alignment) := DrawText(r.x,r.y,r.Width,r.Height,text,c,align);
|
||||
/// Выводит целое в прямоугольник
|
||||
/// Выводит целое в прямоугольник
|
||||
procedure DrawText(r: GRect; number: integer; c: GColor; align: Alignment) := DrawText(r.x,r.y,r.Width,r.Height,number,c,align);
|
||||
/// Выводит вещественное в прямоугольник
|
||||
/// Выводит вещественное в прямоугольник
|
||||
procedure DrawText(r: GRect; number: real; c: GColor; align: Alignment) := DrawText(r.x,r.y,r.Width,r.Height,number,c,align);
|
||||
|
||||
{function ConvertAlign(align: Alignment): Alignment;
|
||||
|
|
@ -970,7 +972,7 @@ type
|
|||
function RealToScreenY(y: real) := y1 - my * (y + min);
|
||||
end;
|
||||
|
||||
/// Рисует график функции f, заданной на отрезке [a,b] по оси абсцисс и на отрезке [min,max] по оси ординат, в прямоугольнике, задаваемом параметрами x,y,w,h,
|
||||
/// Рисует график функции f, заданной на отрезке [a,b] по оси абсцисс и на отрезке [min,max] по оси ординат, в прямоугольнике, задаваемом параметрами x,y,w,h,
|
||||
procedure DrawGraph(f: real-> real; a, b, min, max, x, y, w, h: real);
|
||||
begin
|
||||
var coefx := w / (b - a);
|
||||
|
|
@ -978,7 +980,7 @@ begin
|
|||
|
||||
var fso := new FS(coefx, coefy, a, min, max, x, y, f);
|
||||
|
||||
// Линии
|
||||
// Линии
|
||||
{Pen.Color := Color.LightGray;
|
||||
|
||||
var hx := 1.0;
|
||||
|
|
@ -1015,7 +1017,7 @@ begin
|
|||
yy -= hy
|
||||
end;
|
||||
|
||||
// Оси
|
||||
// Оси
|
||||
Pen.Color := Color.Blue;
|
||||
|
||||
var x0 := fso.RealToScreenX(0);
|
||||
|
|
@ -1024,7 +1026,7 @@ begin
|
|||
Line(x0,y1,x0,y2);
|
||||
Line(x1,y0,x2,y0);}
|
||||
|
||||
// График
|
||||
// График
|
||||
|
||||
Pen.Color := Colors.Black;
|
||||
Rectangle(x, y, w, h);
|
||||
|
|
@ -1090,7 +1092,7 @@ procedure WindowType.Clear := app.Dispatcher.Invoke(WindowTypeClearP);
|
|||
|
||||
procedure WindowType.Clear(c: Color);
|
||||
begin
|
||||
raise new System.NotImplementedException('WindowType.Clear(c) пока не реализовано. Честное слово - в будущем!')
|
||||
raise new System.NotImplementedException('WindowType.Clear(c) пока не реализовано. Честное слово - в будущем!')
|
||||
end;
|
||||
|
||||
procedure WindowTypeSetSizeP(w, h: real);
|
||||
|
|
@ -1168,7 +1170,7 @@ function YMax := YOrigin/GlobalScale;
|
|||
procedure DrawGridP;
|
||||
begin
|
||||
if CurrentCoordType = ScreenCoords then
|
||||
raise new Exception('Рисование координатной сетки возможно только в математическом режиме');
|
||||
raise new Exception('Рисование координатной сетки возможно только в математическом режиме');
|
||||
|
||||
var xfrom := Round(XMin);
|
||||
var xto := Round(XMax);
|
||||
|
|
@ -1218,7 +1220,7 @@ begin
|
|||
// 0 x0 Window.Width
|
||||
GlobalScale := Window.Width/(x2-x1);
|
||||
XOrigin := -x1*GlobalScale;
|
||||
// -ymin*scale - сколько надо отступить от низа окна
|
||||
// -ymin*scale - сколько надо отступить от низа окна
|
||||
// Window.Height + ymin*scale
|
||||
YOrigin := Window.Height + ymin*GlobalScale;
|
||||
SetMathematicCoordsScaleP(XOrigin,YOrigin,GlobalScale);
|
||||
|
|
@ -1237,7 +1239,7 @@ begin
|
|||
GlobalScale := scale;
|
||||
var m: Transform := new MatrixTransform(scale,0,0,scale,x0,y0);
|
||||
Host.RenderTransform := m;
|
||||
Pen.Width := Pen.Width * scale; // нет!
|
||||
Pen.Width := Pen.Width * scale; // нет!
|
||||
end;
|
||||
procedure SetStandardCoords(scale,x0,y0: real) := Invoke(SetStandardCoordsP,scale,x0,y0);
|
||||
|
||||
|
|
@ -1299,7 +1301,7 @@ var mre := new ManualResetEvent(false);
|
|||
var OnDraw: procedure := nil;
|
||||
var OnDraw1: procedure(frame: integer) := nil;
|
||||
|
||||
var FrameRate := 60; // кадров в секунду. Можно меньше!
|
||||
var FrameRate := 60; // кадров в секунду. Можно меньше!
|
||||
var LastUpdatedTime := new System.TimeSpan(integer.MinValue);
|
||||
|
||||
var FrameNum := 0;
|
||||
|
|
@ -1310,13 +1312,13 @@ begin
|
|||
begin
|
||||
var e1 := RenderingEventArgs(e).RenderingTime;
|
||||
var dt := e1 - LastUpdatedTime;
|
||||
var delta := 1000/Framerate; // через какое время обновлять
|
||||
var delta := 1000/Framerate; // через какое время обновлять
|
||||
if dt.TotalMilliseconds < delta then
|
||||
exit
|
||||
else LastUpdatedTime := e1;
|
||||
FrameNum += 1;
|
||||
Window.Clear;
|
||||
CountVisuals := integer.MinValue; // чтобы не было паузы после 1000 объектов
|
||||
CountVisuals := integer.MinValue; // чтобы не было паузы после 1000 объектов
|
||||
end;
|
||||
if OnDraw<>nil then
|
||||
OnDraw()
|
||||
|
|
@ -1362,7 +1364,7 @@ begin
|
|||
Font := new FontType;
|
||||
Window := new WindowType;
|
||||
|
||||
MainWindow.Title := 'Графика WPF';
|
||||
MainWindow.Title := 'Графика WPF';
|
||||
var (w,h) := (800,600);
|
||||
|
||||
(MainWindow.Width, MainWindow.Height) := (w + wplus, h + hplus);
|
||||
|
|
@ -1390,5 +1392,5 @@ begin
|
|||
MainFormThread.SetApartmentState(ApartmentState.STA);
|
||||
MainFormThread.Start;
|
||||
|
||||
mre.WaitOne; // Основная программа не начнется пока не будут инициализированы все компоненты приложения
|
||||
mre.WaitOne; // Основная программа не начнется пока не будут инициализированы все компоненты приложения
|
||||
end.
|
||||
552
bin/Lib/PT4.pas
552
bin/Lib/PT4.pas
|
|
@ -1,16 +1,16 @@
|
|||
/// Модуль электронного задачника Programming Taskbook 4
|
||||
/// Модуль электронного задачника Programming Taskbook 4
|
||||
unit PT4;
|
||||
|
||||
//------------------------------------------------------------------------------
|
||||
// Модуль для подключения задачника Programming Taskbook
|
||||
// Версия 4.15
|
||||
// Copyright (c) 2006-2008 DarkStar, SSM
|
||||
// Copyright (c) 2010 М.Э.Абрамян, дополнения к версии 1.3
|
||||
// Copyright (c) 2014-2015 М.Э.Абрамян, дополнения к версии 4.13
|
||||
// Copyright (c) 2015 М.Э.Абрамян, дополнения к версии 4.14
|
||||
// Copyright (c) 2016 М.Э.Абрамян, дополнения к версии 4.15
|
||||
// Copyright (c) 2017 М.Э.Абрамян, дополнения к версии 4.17
|
||||
// Электронный задачник Programming Taskbook Copyright (c)М.Э.Абрамян, 1998-2017
|
||||
// Модуль для подключения задачника Programming Taskbook
|
||||
// Версия 4.15
|
||||
// Copyright (©) 2006-2008 DarkStar, SSM
|
||||
// Copyright (©) 2010 М.Э.Абрамян, дополнения к версии 1.3
|
||||
// Copyright (©) 2014-2015 М.Э.Абрамян, дополнения к версии 4.13
|
||||
// Copyright (©) 2015 М.Э.Абрамян, дополнения к версии 4.14
|
||||
// Copyright (©) 2016 М.Э.Абрамян, дополнения к версии 4.15
|
||||
// Copyright (©) 2017 М.Э.Абрамян, дополнения к версии 4.17
|
||||
// Электронный задачник Programming Taskbook Copyright (c)М.Э.Абрамян, 1998-2017
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
{$apptype windows}
|
||||
|
|
@ -22,9 +22,9 @@ uses System,
|
|||
System.Collections,
|
||||
System.Runtime.InteropServices;
|
||||
type
|
||||
/// Тип указателя на узел списка
|
||||
/// Тип указателя на узел списка
|
||||
PNode = ^TNode;
|
||||
/// Тип узла списка
|
||||
/// Тип узла списка
|
||||
TNode = record
|
||||
Data: integer;
|
||||
Next,Prev,Left,Right,Parent: PNode;
|
||||
|
|
@ -80,240 +80,240 @@ type
|
|||
property Data: integer read getData write SetData;
|
||||
end;
|
||||
|
||||
/// Вывести формулировку задания
|
||||
/// Вывести формулировку задания
|
||||
procedure Task(name: string);
|
||||
|
||||
/// Ввести и вернуть значение целого типа
|
||||
/// Ввести и вернуть значение целого типа
|
||||
function GetInt: integer;
|
||||
/// Ввести и вернуть значение целого типа
|
||||
/// Ввести и вернуть значение целого типа
|
||||
function GetInteger: integer;
|
||||
/// Ввести и вернуть значение вещественного типа
|
||||
/// Ввести и вернуть значение вещественного типа
|
||||
function GetReal: real;
|
||||
/// Ввести и вернуть значение вещественного типа
|
||||
/// Ввести и вернуть значение вещественного типа
|
||||
function GetDouble: real;
|
||||
/// Ввести и вернуть значение символьного типа
|
||||
/// Ввести и вернуть значение символьного типа
|
||||
function GetChar: char;
|
||||
/// Ввести и вернуть значение строкового типа
|
||||
/// Ввести и вернуть значение строкового типа
|
||||
function GetString: string;
|
||||
/// Ввести и вернуть значение логического типа
|
||||
/// Ввести и вернуть значение логического типа
|
||||
function GetBool: boolean;
|
||||
/// Ввести и вернуть значение логического типа
|
||||
/// Ввести и вернуть значение логического типа
|
||||
function GetBoolean: boolean;
|
||||
/// Ввести и вернуть значение типа Node
|
||||
/// Ввести и вернуть значение типа Node
|
||||
function GetNode: Node;
|
||||
/// Ввести и вернуть значение типа PNode
|
||||
/// Ввести и вернуть значение типа PNode
|
||||
function GetPNode: PNode;
|
||||
|
||||
/// Возвращает введенное значение типа integer
|
||||
/// Возвращает введенное значение типа integer
|
||||
function ReadInteger: integer;
|
||||
/// Возвращает введенное значение типа real
|
||||
/// Возвращает введенное значение типа real
|
||||
function ReadReal: real;
|
||||
/// Возвращает введенное значение типа char
|
||||
/// Возвращает введенное значение типа char
|
||||
function ReadChar: char;
|
||||
/// Возвращает введенное значение типа string
|
||||
/// Возвращает введенное значение типа string
|
||||
function ReadString: string;
|
||||
/// Возвращает введенное значение типа boolean
|
||||
/// Возвращает введенное значение типа boolean
|
||||
function ReadBoolean: boolean;
|
||||
/// Возвращает введенное значение типа PNode
|
||||
/// Возвращает введенное значение типа PNode
|
||||
function ReadPNode: PNode;
|
||||
/// Возвращает введенное значение типа Node
|
||||
/// Возвращает введенное значение типа Node
|
||||
function ReadNode: Node;
|
||||
|
||||
/// Возвращает введенное значение типа integer
|
||||
/// Возвращает введенное значение типа integer
|
||||
function ReadlnInteger: integer;
|
||||
/// Возвращает введенное значение типа real
|
||||
/// Возвращает введенное значение типа real
|
||||
function ReadlnReal: real;
|
||||
/// Возвращает введенное значение типа char
|
||||
/// Возвращает введенное значение типа char
|
||||
function ReadlnChar: char;
|
||||
/// Возвращает введенное значение типа string
|
||||
/// Возвращает введенное значение типа string
|
||||
function ReadlnString: string;
|
||||
/// Возвращает введенное значение типа boolean
|
||||
/// Возвращает введенное значение типа boolean
|
||||
function ReadlnBoolean: boolean;
|
||||
/// Возвращает введенное значение типа PNode
|
||||
/// Возвращает введенное значение типа PNode
|
||||
function ReadlnPNode: PNode;
|
||||
/// Возвращает введенное значение типа Node
|
||||
/// Возвращает введенное значение типа Node
|
||||
function ReadlnNode: Node;
|
||||
|
||||
// == Версия 4.15. Дополнения ==
|
||||
// == Версия 4.15. Дополнения ==
|
||||
|
||||
/// Возвращает введенное значение типа integer.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
/// Возвращает введенное значение типа integer.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
function ReadInteger(prompt: string): integer;
|
||||
/// Возвращает введенное значение типа real.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
/// Возвращает введенное значение типа real.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
function ReadReal(prompt: string): real;
|
||||
/// Возвращает введенное значение типа char.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
/// Возвращает введенное значение типа char.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
function ReadChar(prompt: string): char;
|
||||
/// Возвращает введенное значение типа string.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
/// Возвращает введенное значение типа string.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
function ReadString(prompt: string): string;
|
||||
/// Возвращает введенное значение типа boolean.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
/// Возвращает введенное значение типа boolean.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
function ReadBoolean(prompt: string): boolean;
|
||||
/// Возвращает введенное значение типа PNode.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
/// Возвращает введенное значение типа PNode.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
function ReadPNode(prompt: string): PNode;
|
||||
/// Возвращает введенное значение типа Node.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
/// Возвращает введенное значение типа Node.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
function ReadNode(prompt: string): Node;
|
||||
|
||||
/// Возвращает введенное значение типа integer.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
/// Возвращает введенное значение типа integer.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
function ReadlnInteger(prompt: string): integer;
|
||||
/// Возвращает введенное значение типа real.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
/// Возвращает введенное значение типа real.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
function ReadlnReal(prompt: string): real;
|
||||
/// Возвращает введенное значение типа char.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
/// Возвращает введенное значение типа char.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
function ReadlnChar(prompt: string): char;
|
||||
/// Возвращает введенное значение типа string.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
/// Возвращает введенное значение типа string.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
function ReadlnString(prompt: string): string;
|
||||
/// Возвращает введенное значение типа boolean.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
/// Возвращает введенное значение типа boolean.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
function ReadlnBoolean(prompt: string): boolean;
|
||||
/// Возвращает введенное значение типа PNode.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
/// Возвращает введенное значение типа PNode.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
function ReadlnPNode(prompt: string): PNode;
|
||||
/// Возвращает введенное значение типа Node.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
/// Возвращает введенное значение типа Node.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
function ReadlnNode(prompt: string): Node;
|
||||
|
||||
// == Версия 4.15. Конец дополнений ==
|
||||
// == Версия 4.15. Конец дополнений ==
|
||||
|
||||
// == Версия 4.17. Дополнения ==
|
||||
// == Версия 4.17. Дополнения ==
|
||||
|
||||
/// Возвращает кортеж из двух введенных значений типа integer
|
||||
/// Возвращает кортеж из двух введенных значений типа integer
|
||||
function ReadInteger2: (integer, integer);
|
||||
/// Возвращает кортеж из двух введенных значений типа real
|
||||
/// Возвращает кортеж из двух введенных значений типа real
|
||||
function ReadReal2: (real, real);
|
||||
/// Возвращает кортеж из двух введенных значений типа char
|
||||
/// Возвращает кортеж из двух введенных значений типа char
|
||||
function ReadChar2: (char, char);
|
||||
/// Возвращает кортеж из двух введенных значений типа string
|
||||
/// Возвращает кортеж из двух введенных значений типа string
|
||||
function ReadString2: (string, string);
|
||||
/// Возвращает кортеж из двух введенных значений типа boolean
|
||||
/// Возвращает кортеж из двух введенных значений типа boolean
|
||||
function ReadBoolean2: (boolean, boolean);
|
||||
/// Возвращает кортеж из двух введенных значений типа Node
|
||||
/// Возвращает кортеж из двух введенных значений типа Node
|
||||
function ReadNode2: (Node, Node);
|
||||
|
||||
/// Возвращает кортеж из двух введенных значений типа integer
|
||||
/// Возвращает кортеж из двух введенных значений типа integer
|
||||
function ReadlnInteger2: (integer, integer);
|
||||
/// Возвращает кортеж из двух введенных значений типа real
|
||||
/// Возвращает кортеж из двух введенных значений типа real
|
||||
function ReadlnReal2: (real, real);
|
||||
/// Возвращает кортеж из двух введенных значений типа char
|
||||
/// Возвращает кортеж из двух введенных значений типа char
|
||||
function ReadlnChar2: (char, char);
|
||||
/// Возвращает кортеж из двух введенных значений типа string
|
||||
/// Возвращает кортеж из двух введенных значений типа string
|
||||
function ReadlnString2: (string, string);
|
||||
/// Возвращает кортеж из двух введенных значений типа boolean
|
||||
/// Возвращает кортеж из двух введенных значений типа boolean
|
||||
function ReadlnBoolean2: (boolean, boolean);
|
||||
/// Возвращает кортеж из двух введенных значений типа Node
|
||||
/// Возвращает кортеж из двух введенных значений типа Node
|
||||
function ReadlnNode2: (Node, Node);
|
||||
|
||||
/// Возвращает кортеж из трех введенных значений типа integer
|
||||
/// Возвращает кортеж из трех введенных значений типа integer
|
||||
function ReadInteger3: (integer, integer, integer);
|
||||
/// Возвращает кортеж из трех введенных значений типа real
|
||||
/// Возвращает кортеж из трех введенных значений типа real
|
||||
function ReadReal3: (real, real, real);
|
||||
/// Возвращает кортеж из трех введенных значений типа char
|
||||
/// Возвращает кортеж из трех введенных значений типа char
|
||||
function ReadChar3: (char, char, char);
|
||||
/// Возвращает кортеж из трех введенных значений типа string
|
||||
/// Возвращает кортеж из трех введенных значений типа string
|
||||
function ReadString3: (string, string, string);
|
||||
/// Возвращает кортеж из трех введенных значений типа boolean
|
||||
/// Возвращает кортеж из трех введенных значений типа boolean
|
||||
function ReadBoolean3: (boolean, boolean, boolean);
|
||||
/// Возвращает кортеж из трех введенных значений типа Node
|
||||
/// Возвращает кортеж из трех введенных значений типа Node
|
||||
function ReadNode3: (Node, Node, Node);
|
||||
|
||||
/// Возвращает кортеж из трех введенных значений типа integer
|
||||
/// Возвращает кортеж из трех введенных значений типа integer
|
||||
function ReadlnInteger3: (integer, integer, integer);
|
||||
/// Возвращает кортеж из трех введенных значений типа real
|
||||
/// Возвращает кортеж из трех введенных значений типа real
|
||||
function ReadlnReal3: (real, real, real);
|
||||
/// Возвращает кортеж из трех введенных значений типа char
|
||||
/// Возвращает кортеж из трех введенных значений типа char
|
||||
function ReadlnChar3: (char, char, char);
|
||||
/// Возвращает кортеж из трех введенных значений типа string
|
||||
/// Возвращает кортеж из трех введенных значений типа string
|
||||
function ReadlnString3: (string, string, string);
|
||||
/// Возвращает кортеж из трех введенных значений типа boolean
|
||||
/// Возвращает кортеж из трех введенных значений типа boolean
|
||||
function ReadlnBoolean3: (boolean, boolean, boolean);
|
||||
/// Возвращает кортеж из трех введенных значений типа Node
|
||||
/// Возвращает кортеж из трех введенных значений типа Node
|
||||
function ReadlnNode3: (Node, Node, Node);
|
||||
|
||||
/// Возвращает кортеж из двух введенных значений типа integer.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
/// Возвращает кортеж из двух введенных значений типа integer.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
function ReadInteger2(prompt: string): (integer, integer);
|
||||
/// Возвращает кортеж из двух введенных значений типа real.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
/// Возвращает кортеж из двух введенных значений типа real.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
function ReadReal2(prompt: string): (real, real);
|
||||
/// Возвращает кортеж из двух введенных значений типа char.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
/// Возвращает кортеж из двух введенных значений типа char.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
function ReadChar2(prompt: string): (char, char);
|
||||
/// Возвращает кортеж из двух введенных значений типа string.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
/// Возвращает кортеж из двух введенных значений типа string.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
function ReadString2(prompt: string): (string, string);
|
||||
/// Возвращает кортеж из двух введенных значений типа boolean.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
/// Возвращает кортеж из двух введенных значений типа boolean.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
function ReadBoolean2(prompt: string): (boolean, boolean);
|
||||
/// Возвращает кортеж из двух введенных значений типа Node.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
/// Возвращает кортеж из двух введенных значений типа Node.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
function ReadNode2(prompt: string): (Node, Node);
|
||||
|
||||
/// Возвращает кортеж из двух введенных значений типа integer.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
/// Возвращает кортеж из двух введенных значений типа integer.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
function ReadlnInteger2(prompt: string): (integer, integer);
|
||||
/// Возвращает кортеж из двух введенных значений типа real.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
/// Возвращает кортеж из двух введенных значений типа real.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
function ReadlnReal2(prompt: string): (real, real);
|
||||
/// Возвращает кортеж из двух введенных значений типа char.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
/// Возвращает кортеж из двух введенных значений типа char.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
function ReadlnChar2(prompt: string): (char, char);
|
||||
/// Возвращает кортеж из двух введенных значений типа string.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
/// Возвращает кортеж из двух введенных значений типа string.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
function ReadlnString2(prompt: string): (string, string);
|
||||
/// Возвращает кортеж из двух введенных значений типа boolean.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
/// Возвращает кортеж из двух введенных значений типа boolean.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
function ReadlnBoolean2(prompt: string): (boolean, boolean);
|
||||
/// Возвращает кортеж из двух введенных значений типа Node.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
/// Возвращает кортеж из двух введенных значений типа Node.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
function ReadlnNode2(prompt: string): (Node, Node);
|
||||
|
||||
/// Возвращает кортеж из трех введенных значений типа integer.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
/// Возвращает кортеж из трех введенных значений типа integer.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
function ReadInteger3(prompt: string): (integer, integer, integer);
|
||||
/// Возвращает кортеж из трех введенных значений типа real.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
/// Возвращает кортеж из трех введенных значений типа real.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
function ReadReal3(prompt: string): (real, real, real);
|
||||
/// Возвращает кортеж из трех введенных значений типа char.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
/// Возвращает кортеж из трех введенных значений типа char.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
function ReadChar3(prompt: string): (char, char, char);
|
||||
/// Возвращает кортеж из трех введенных значений типа string.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
/// Возвращает кортеж из трех введенных значений типа string.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
function ReadString3(prompt: string): (string, string, string);
|
||||
/// Возвращает кортеж из трех введенных значений типа boolean.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
/// Возвращает кортеж из трех введенных значений типа boolean.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
function ReadBoolean3(prompt: string): (boolean, boolean, boolean);
|
||||
/// Возвращает кортеж из трех введенных значений типа Node.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
/// Возвращает кортеж из трех введенных значений типа Node.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
function ReadNode3(prompt: string): (Node, Node, Node);
|
||||
|
||||
/// Возвращает кортеж из трех введенных значений типа integer.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
/// Возвращает кортеж из трех введенных значений типа integer.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
function ReadlnInteger3(prompt: string): (integer, integer, integer);
|
||||
/// Возвращает кортеж из трех введенных значений типа real.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
/// Возвращает кортеж из трех введенных значений типа real.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
function ReadlnReal3(prompt: string): (real, real, real);
|
||||
/// Возвращает кортеж из трех введенных значений типа char.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
/// Возвращает кортеж из трех введенных значений типа char.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
function ReadlnChar3(prompt: string): (char, char, char);
|
||||
/// Возвращает кортеж из трех введенных значений типа string.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
/// Возвращает кортеж из трех введенных значений типа string.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
function ReadlnString3(prompt: string): (string, string, string);
|
||||
/// Возвращает кортеж из трех введенных значений типа boolean.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
/// Возвращает кортеж из трех введенных значений типа boolean.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
function ReadlnBoolean3(prompt: string): (boolean, boolean, boolean);
|
||||
/// Возвращает кортеж из трех введенных значений типа Node.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
/// Возвращает кортеж из трех введенных значений типа Node.
|
||||
/// Строковое приглашение prompt игнорируется
|
||||
function ReadlnNode3(prompt: string): (Node, Node, Node);
|
||||
|
||||
|
||||
// == Версия 4.17. Конец дополнений ==
|
||||
// == Версия 4.17. Конец дополнений ==
|
||||
|
||||
|
||||
procedure GetR(var param: real);
|
||||
|
|
@ -341,9 +341,9 @@ procedure Put(param: boolean);
|
|||
procedure Put(param: PNode);
|
||||
procedure Put(param: Node);
|
||||
|
||||
//Ввод этих данных не поддерживается
|
||||
//Ввод этих данных не поддерживается
|
||||
///- read(a,b,...)
|
||||
/// Вводит значения a,b,... из окна электронного задачника
|
||||
/// Вводит значения a,b,... из окна электронного задачника
|
||||
procedure read(var x: byte);
|
||||
///--
|
||||
procedure read(var x: shortint);
|
||||
|
|
@ -381,21 +381,21 @@ procedure Readln;
|
|||
procedure Print(params args: array of object);
|
||||
procedure Println(params args: array of object);
|
||||
|
||||
// == Версия 4.15. Дополнения ==
|
||||
// == Версия 4.15. Дополнения ==
|
||||
|
||||
procedure Print(s: string);
|
||||
procedure Println(s: string);
|
||||
|
||||
// == Версия 4.15. Конец дополнений ==
|
||||
// == Версия 4.15. Конец дополнений ==
|
||||
|
||||
|
||||
/// Освобождает память, выделенную динамически, на которую указывает p
|
||||
/// Освобождает память, выделенную динамически, на которую указывает p
|
||||
procedure Dispose(p: pointer);
|
||||
|
||||
// Фиктивная пустая процедура - для Intellisense
|
||||
// Нет, нельзя пользоваться - закрываются процедуры write системного модуля
|
||||
// Фиктивная пустая процедура - для Intellisense
|
||||
// Нет, нельзя пользоваться - закрываются процедуры write системного модуля
|
||||
///- write(a,b,...)
|
||||
/// Выводит значения a,b,... в окно электронного задачника
|
||||
/// Выводит значения a,b,... в окно электронного задачника
|
||||
//procedure write;
|
||||
|
||||
///--
|
||||
|
|
@ -403,162 +403,162 @@ procedure __InitModule__;
|
|||
///--
|
||||
procedure __FinalizeModule__;
|
||||
|
||||
// == Версия 1.3. Дополнения ==
|
||||
// == Версия 1.3. Дополнения ==
|
||||
|
||||
/// Выводит строку S в разделе отладки окна задачника
|
||||
/// Выводит строку S в разделе отладки окна задачника
|
||||
procedure Show(S: string);
|
||||
|
||||
/// Выводит число A с комментарием S в разделе отладки
|
||||
/// окна задачника; для вывода числа отводится W экранных позиций
|
||||
/// Выводит число A с комментарием S в разделе отладки
|
||||
/// окна задачника; для вывода числа отводится W экранных позиций
|
||||
procedure Show(S: string; A: integer; W: integer);
|
||||
|
||||
/// Выводит число A с комментарием S в разделе отладки
|
||||
/// окна задачника; для вывода числа отводится W экранных позиций
|
||||
/// Выводит число A с комментарием S в разделе отладки
|
||||
/// окна задачника; для вывода числа отводится W экранных позиций
|
||||
procedure Show(S: string; A: real; W: integer);
|
||||
|
||||
/// Выводит число A с комментарием S в разделе отладки окна задачника
|
||||
/// Выводит число A с комментарием S в разделе отладки окна задачника
|
||||
procedure Show(S: string; A: integer);
|
||||
|
||||
/// Выводит число A с комментарием S в разделе отладки окна задачника
|
||||
/// Выводит число A с комментарием S в разделе отладки окна задачника
|
||||
procedure Show(S: string; A: real);
|
||||
|
||||
/// Выводит число A в разделе отладки окна задачника;
|
||||
/// для вывода отводится W экранных позиций
|
||||
/// Выводит число A в разделе отладки окна задачника;
|
||||
/// для вывода отводится W экранных позиций
|
||||
procedure Show(A: integer; W: integer);
|
||||
|
||||
/// Выводит число A в разделе отладки окна задачника;
|
||||
/// для вывода отводится W экранных позиций
|
||||
/// Выводит число A в разделе отладки окна задачника;
|
||||
/// для вывода отводится W экранных позиций
|
||||
procedure Show(A: real; W: integer);
|
||||
|
||||
/// Выводит число A в разделе отладки окна задачника
|
||||
/// Выводит число A в разделе отладки окна задачника
|
||||
procedure Show(A: integer);
|
||||
|
||||
/// Выводит число A в разделе отладки окна задачника
|
||||
/// Выводит число A в разделе отладки окна задачника
|
||||
procedure Show(A: real);
|
||||
|
||||
/// Выполняет переход на новую экранную строку
|
||||
/// в разделе отладки окна задачника
|
||||
/// Выполняет переход на новую экранную строку
|
||||
/// в разделе отладки окна задачника
|
||||
procedure ShowLine;
|
||||
|
||||
/// Выводит строку S в разделе отладки окна задачника,
|
||||
/// после чего выполняет переход на новую экранную строку
|
||||
/// Выводит строку S в разделе отладки окна задачника,
|
||||
/// после чего выполняет переход на новую экранную строку
|
||||
procedure ShowLine(S: string);
|
||||
|
||||
/// Выводит число A с комментарием S в разделе отладки
|
||||
/// окна задачника; для вывода числа отводится W экранных позиций.
|
||||
/// После вывода данных выполняет переход на новую экранную строку
|
||||
/// Выводит число A с комментарием S в разделе отладки
|
||||
/// окна задачника; для вывода числа отводится W экранных позиций.
|
||||
/// После вывода данных выполняет переход на новую экранную строку
|
||||
procedure ShowLine(S: string; A: integer; W: integer);
|
||||
|
||||
/// Выводит число A с комментарием S в разделе отладки
|
||||
/// окна задачника; для вывода числа отводится W экранных позиций.
|
||||
/// После вывода данных выполняет переход на новую экранную строку
|
||||
/// Выводит число A с комментарием S в разделе отладки
|
||||
/// окна задачника; для вывода числа отводится W экранных позиций.
|
||||
/// После вывода данных выполняет переход на новую экранную строку
|
||||
procedure ShowLine(S: string; A: real; W: integer);
|
||||
|
||||
/// Выводит число A с комментарием S в разделе отладки окна задачника,
|
||||
/// после чего выполняет переход на новую экранную строку
|
||||
/// Выводит число A с комментарием S в разделе отладки окна задачника,
|
||||
/// после чего выполняет переход на новую экранную строку
|
||||
procedure ShowLine(S: string; A: integer);
|
||||
|
||||
/// Выводит число A с комментарием S в разделе отладки окна задачника,
|
||||
/// после чего выполняет переход на новую экранную строку
|
||||
/// Выводит число A с комментарием S в разделе отладки окна задачника,
|
||||
/// после чего выполняет переход на новую экранную строку
|
||||
procedure ShowLine(S: string; A: real);
|
||||
|
||||
/// Выводит число A в разделе отладки окна задачника;
|
||||
/// для вывода отводится W экранных позиций.
|
||||
/// После вывода числа выполняет переход на новую экранную строку
|
||||
/// Выводит число A в разделе отладки окна задачника;
|
||||
/// для вывода отводится W экранных позиций.
|
||||
/// После вывода числа выполняет переход на новую экранную строку
|
||||
procedure ShowLine(A: integer; W: integer);
|
||||
|
||||
/// Выводит число A в разделе отладки окна задачника;
|
||||
/// для вывода отводится W экранных позиций.
|
||||
/// После вывода числа выполняет переход на новую экранную строку
|
||||
/// Выводит число A в разделе отладки окна задачника;
|
||||
/// для вывода отводится W экранных позиций.
|
||||
/// После вывода числа выполняет переход на новую экранную строку
|
||||
procedure ShowLine(A: real; W: integer);
|
||||
|
||||
/// Выводит число A в разделе отладки окна задачника,
|
||||
/// после чего выполняет переход на новую экранную строку
|
||||
/// Выводит число A в разделе отладки окна задачника,
|
||||
/// после чего выполняет переход на новую экранную строку
|
||||
procedure ShowLine(A: integer);
|
||||
|
||||
/// Выводит число A в разделе отладки окна задачника,
|
||||
/// после чего выполняет переход на новую экранную строку
|
||||
/// Выводит число A в разделе отладки окна задачника,
|
||||
/// после чего выполняет переход на новую экранную строку
|
||||
procedure ShowLine(A: real);
|
||||
|
||||
/// Настраивает формат вывода вещественных чисел в разделе отладки
|
||||
/// окна задачника. Если N > 0, то число выводится в формате
|
||||
/// с фиксированной точкой и N дробными знаками. Если N = 0,
|
||||
/// то число выводится в экспоненциальном формате, число дробных
|
||||
/// знаков определяется шириной поля вывода
|
||||
/// Настраивает формат вывода вещественных чисел в разделе отладки
|
||||
/// окна задачника. Если N > 0, то число выводится в формате
|
||||
/// с фиксированной точкой и N дробными знаками. Если N = 0,
|
||||
/// то число выводится в экспоненциальном формате, число дробных
|
||||
/// знаков определяется шириной поля вывода
|
||||
procedure SetPrecision(N: integer);
|
||||
|
||||
/// Обеспечивает автоматическое скрытие всех разделов
|
||||
/// окна задачника, кроме раздела отладки
|
||||
/// Обеспечивает автоматическое скрытие всех разделов
|
||||
/// окна задачника, кроме раздела отладки
|
||||
procedure HideTask;
|
||||
|
||||
// == Конец дополнений к версии 1.3 ==
|
||||
// == Конец дополнений к версии 1.3 ==
|
||||
|
||||
// == Версия 4.14. Дополнения ==
|
||||
// == Версия 4.14. Дополнения ==
|
||||
|
||||
/// Вводит n целых чисел
|
||||
/// и возвращает введенные числа в виде массива
|
||||
/// Вводит n целых чисел
|
||||
/// и возвращает введенные числа в виде массива
|
||||
function ReadArrInteger(n: integer): array of integer;
|
||||
|
||||
/// Вводит n вещественных чисел
|
||||
/// и возвращает введенные числа в виде массива
|
||||
/// Вводит n вещественных чисел
|
||||
/// и возвращает введенные числа в виде массива
|
||||
function ReadArrReal(n: integer): array of real;
|
||||
|
||||
/// Вводит n строк
|
||||
/// и возвращает введенные строки в виде массива
|
||||
/// Вводит n строк
|
||||
/// и возвращает введенные строки в виде массива
|
||||
function ReadArrString(n: integer): array of string;
|
||||
|
||||
/// Вводит n целых чисел
|
||||
/// и возвращает введенные числа в виде последовательности
|
||||
/// Вводит n целых чисел
|
||||
/// и возвращает введенные числа в виде последовательности
|
||||
function ReadSeqInteger(n: integer): sequence of integer;
|
||||
|
||||
/// Вводит n вещественных чисел
|
||||
/// и возвращает введенные числа в виде последовательности
|
||||
/// Вводит n вещественных чисел
|
||||
/// и возвращает введенные числа в виде последовательности
|
||||
function ReadSeqReal(n: integer): sequence of real;
|
||||
|
||||
/// Вводит n строк
|
||||
/// и возвращает введенные строки в виде последовательности
|
||||
/// Вводит n строк
|
||||
/// и возвращает введенные строки в виде последовательности
|
||||
function ReadSeqString(n: integer): sequence of string;
|
||||
|
||||
/// Вводит размер набора целых чисел и его элементы
|
||||
/// и возвращает введенный набор в виде последовательности
|
||||
/// Вводит размер набора целых чисел и его элементы
|
||||
/// и возвращает введенный набор в виде последовательности
|
||||
function ReadSeqInteger(): sequence of integer;
|
||||
|
||||
/// Вводит размер набора вещественных чисел и его элементы
|
||||
/// и возвращает введенный набор в виде последовательности
|
||||
/// Вводит размер набора вещественных чисел и его элементы
|
||||
/// и возвращает введенный набор в виде последовательности
|
||||
function ReadSeqReal(): sequence of real;
|
||||
|
||||
/// Вводит размер набора строк и его элементы
|
||||
/// и возвращает введенный набор в виде последовательности
|
||||
/// Вводит размер набора строк и его элементы
|
||||
/// и возвращает введенный набор в виде последовательности
|
||||
function ReadSeqString(): sequence of string;
|
||||
|
||||
/// Вводит размер набора целых чисел и его элементы
|
||||
/// и возвращает введенный набор в виде массива
|
||||
/// Вводит размер набора целых чисел и его элементы
|
||||
/// и возвращает введенный набор в виде массива
|
||||
function ReadArrInteger(): array of integer;
|
||||
|
||||
/// Вводит размер набора вещественных чисел и его элементы
|
||||
/// и возвращает введенный набор в виде массива
|
||||
/// Вводит размер набора вещественных чисел и его элементы
|
||||
/// и возвращает введенный набор в виде массива
|
||||
function ReadArrReal(): array of real;
|
||||
|
||||
/// Вводит размер набора строк и его элементы
|
||||
/// и возвращает введенный набор в виде массива
|
||||
/// Вводит размер набора строк и его элементы
|
||||
/// и возвращает введенный набор в виде массива
|
||||
function ReadArrString(): array of string;
|
||||
|
||||
/// Вводит целую матрицу размера m на n по строкам
|
||||
/// Вводит целую матрицу размера m на n по строкам
|
||||
function ReadMatrInteger(m,n: integer): array [,] of integer;
|
||||
|
||||
/// Вводит размеры матрицы и затем целую матрицу указанных размеров по строкам
|
||||
/// Вводит размеры матрицы и затем целую матрицу указанных размеров по строкам
|
||||
function ReadMatrInteger(): array [,] of integer;
|
||||
|
||||
/// Вводит вещественную матрицу размера m на n по строкам
|
||||
/// Вводит вещественную матрицу размера m на n по строкам
|
||||
function ReadMatrReal(m,n: integer): array [,] of real;
|
||||
|
||||
/// Вводит размеры матрицы и затем вещественную матрицу указанных размеров по строкам
|
||||
/// Вводит размеры матрицы и затем вещественную матрицу указанных размеров по строкам
|
||||
function ReadMatrReal(): array [,] of real;
|
||||
|
||||
/// Вводит матрицу из строк размера m на n по строкам
|
||||
/// Вводит матрицу из строк размера m на n по строкам
|
||||
function ReadMatrString(m,n: integer): array [,] of string;
|
||||
|
||||
/// Вводит размеры матрицы и затем строковую матрицу указанных размеров по строкам
|
||||
/// Вводит размеры матрицы и затем строковую матрицу указанных размеров по строкам
|
||||
function ReadMatrString(): array [,] of string;
|
||||
|
||||
procedure ReadMatr(var m, n: integer; var a: array [,] of integer);
|
||||
|
|
@ -603,7 +603,7 @@ procedure WriteMatr<T>(a: array of array of T);
|
|||
|
||||
procedure WriteMatr<T>(a: List<List<T>>);
|
||||
|
||||
// == Дополнения 2016.07
|
||||
// == Дополнения 2016.07
|
||||
|
||||
procedure PrintMatr<T>(a: array[,] of T);
|
||||
|
||||
|
|
@ -611,16 +611,16 @@ procedure PrintMatr<T>(a: array of array of T);
|
|||
|
||||
procedure PrintMatr<T>(a: List<List<T>>);
|
||||
|
||||
// == Конец дополнений 2016.07
|
||||
// == Конец дополнений 2016.07
|
||||
|
||||
// == Конец дополнений к версии 4.14 ==
|
||||
// == Конец дополнений к версии 4.14 ==
|
||||
|
||||
implementation
|
||||
|
||||
const
|
||||
NotSupportedReadTypeMessage = 'Ввод данных типа {0} не поддерживается';
|
||||
NotSupportedWriteTypeMessage = 'Вывод данных типа {0} не поддерживается';
|
||||
eMessage = 'Попытка обращения к объекту Node после вызова его метода Dispose';
|
||||
NotSupportedReadTypeMessage = 'Ввод данных типа {0} не поддерживается';
|
||||
NotSupportedWriteTypeMessage = 'Вывод данных типа {0} не поддерживается';
|
||||
eMessage = 'Попытка обращения к объекту Node после вызова его метода Dispose';
|
||||
|
||||
var
|
||||
loadNodes: ArrayList;
|
||||
|
|
@ -1058,7 +1058,7 @@ begin
|
|||
end;
|
||||
|
||||
// -----------------------------------------------------
|
||||
// Функции Get
|
||||
// Функции Get
|
||||
// -----------------------------------------------------
|
||||
function GetInt: integer;
|
||||
var val:integer;
|
||||
|
|
@ -1094,7 +1094,7 @@ end;
|
|||
function GetString: string;
|
||||
var val: System.Text.StringBuilder;
|
||||
begin
|
||||
val := new System.Text.StringBuilder(200);//TODO почему 200?
|
||||
val := new System.Text.StringBuilder(200);//TODO почему 200?
|
||||
_gets(val);
|
||||
result := val.ToString;
|
||||
end;
|
||||
|
|
@ -1125,8 +1125,8 @@ var
|
|||
p: IntPtr;
|
||||
sNode: InternalNode;
|
||||
begin
|
||||
//raise new NotSupportedException('Работа с динамическими структурами задачника PT4 не поддерживается в этой версии компилятора. Исправление ошибки планируется в следуйщей версии');
|
||||
//result := new PT4Node(sNode, p);// fixme здесь ошибка генерации кода!
|
||||
//raise new NotSupportedException('Работа с динамическими структурами задачника PT4 не поддерживается в этой версии компилятора. Исправление ошибки планируется в следуйщей версии');
|
||||
//result := new PT4Node(sNode, p);// fixme здесь ошибка генерации кода!
|
||||
p := IntPtr.Zero;
|
||||
sNode.Data := 0;
|
||||
sNode.Next := IntPtr.Zero;
|
||||
|
|
@ -1225,7 +1225,7 @@ begin
|
|||
Result := GetNode;
|
||||
end;
|
||||
|
||||
// == Версия 4.15. Дополнения ==
|
||||
// == Версия 4.15. Дополнения ==
|
||||
|
||||
function ReadInteger(prompt: string): integer;
|
||||
begin
|
||||
|
|
@ -1297,9 +1297,9 @@ begin
|
|||
Result := GetNode;
|
||||
end;
|
||||
|
||||
// == Версия 4.15. Конец дополнений ==
|
||||
// == Версия 4.15. Конец дополнений ==
|
||||
|
||||
// == Версия 4.17. Дополнения ==
|
||||
// == Версия 4.17. Дополнения ==
|
||||
|
||||
function ReadInteger2: (integer, integer);
|
||||
begin
|
||||
|
|
@ -1541,11 +1541,11 @@ begin
|
|||
Result := (GetNode, GetNode, GetNode);
|
||||
end;
|
||||
|
||||
// == Версия 4.17. Конец дополнений ==
|
||||
// == Версия 4.17. Конец дополнений ==
|
||||
|
||||
|
||||
// -----------------------------------------------------
|
||||
// Процедуры Put
|
||||
// Процедуры Put
|
||||
// -----------------------------------------------------
|
||||
procedure PutInt(val: integer);
|
||||
begin
|
||||
|
|
@ -1594,7 +1594,7 @@ begin
|
|||
end;
|
||||
|
||||
// -----------------------------------------------------
|
||||
// Генерация исключений
|
||||
// Генерация исключений
|
||||
// -----------------------------------------------------
|
||||
procedure RaisePTAndCheckPT(e: Exception);
|
||||
begin
|
||||
|
|
@ -1719,7 +1719,7 @@ begin
|
|||
Print(args);
|
||||
end;
|
||||
|
||||
// == Версия 4.15. Дополнения ==
|
||||
// == Версия 4.15. Дополнения ==
|
||||
|
||||
procedure Print(s: string);
|
||||
begin
|
||||
|
|
@ -1731,7 +1731,7 @@ begin
|
|||
write(s);
|
||||
end;
|
||||
|
||||
// == Версия 4.15. Конец дополнений ==
|
||||
// == Версия 4.15. Конец дополнений ==
|
||||
|
||||
{procedure write;
|
||||
begin
|
||||
|
|
@ -1769,7 +1769,7 @@ begin
|
|||
var ip := IntPtr(PointerOutput(args[i]).p);
|
||||
_PutP(ip);
|
||||
end
|
||||
// == Версия 4.17. Дополнения ==
|
||||
// == Версия 4.17. Дополнения ==
|
||||
else if args[i].GetType.FullName.StartsWith('System.Tuple') then
|
||||
foreach var e in args[i].GetType.GetProperties do
|
||||
InternalWrite(Arr(e.GetValue(args[i],nil)))
|
||||
|
|
@ -1779,7 +1779,7 @@ begin
|
|||
while e.MoveNext do
|
||||
InternalWrite(Arr(e.Current));
|
||||
end
|
||||
// == Версия 4.17. Конец дополнений ==
|
||||
// == Версия 4.17. Конец дополнений ==
|
||||
else GenerateNotSupportedWriteTypeException(args[i].GetType.ToString);
|
||||
end;
|
||||
|
||||
|
|
@ -1815,7 +1815,7 @@ begin
|
|||
if InfoT=0 then
|
||||
Console.WriteLine(InfoS);
|
||||
FreePT;
|
||||
// == Начало дополнений к версии 4.13 ==
|
||||
// == Начало дополнений к версии 4.13 ==
|
||||
var fpt := FinishPT;
|
||||
if fpt = 1 then exit;
|
||||
var asm := System.Reflection.Assembly.GetExecutingAssembly;
|
||||
|
|
@ -1864,10 +1864,10 @@ begin
|
|||
inc(i);
|
||||
fpt := FinishPT;
|
||||
end;
|
||||
// == Конец дополнений к версии 4.13 ==
|
||||
// == Конец дополнений к версии 4.13 ==
|
||||
end;
|
||||
|
||||
// == Версия 1.3. Дополнения ==
|
||||
// == Версия 1.3. Дополнения ==
|
||||
|
||||
var
|
||||
D: integer := 2;
|
||||
|
|
@ -1989,9 +1989,9 @@ begin
|
|||
D := N;
|
||||
end;
|
||||
|
||||
// == Конец дополнений к версии 1.3 ==
|
||||
// == Конец дополнений к версии 1.3 ==
|
||||
|
||||
// == Версия 4.14. Дополнения ==
|
||||
// == Версия 4.14. Дополнения ==
|
||||
|
||||
function ReadSeqInteger(): sequence of integer;
|
||||
begin
|
||||
|
|
@ -2263,7 +2263,7 @@ begin
|
|||
write(a[i][j]);
|
||||
end;
|
||||
|
||||
/// Выводит размер и элементы последовательности
|
||||
/// Выводит размер и элементы последовательности
|
||||
procedure WriteAll<T>(self: sequence of T); extensionmethod;
|
||||
begin
|
||||
var b := self.ToArray();
|
||||
|
|
@ -2272,7 +2272,7 @@ begin
|
|||
PT4.Put(e);
|
||||
end;
|
||||
|
||||
/// Выводит элементы последовательности
|
||||
/// Выводит элементы последовательности
|
||||
procedure Write<T>(self: sequence of T); extensionmethod;
|
||||
begin
|
||||
var b := self.ToArray();
|
||||
|
|
@ -2280,14 +2280,14 @@ begin
|
|||
PT4.Put(e);
|
||||
end;
|
||||
|
||||
/// Выводит элементы динамического массива
|
||||
/// Выводит элементы динамического массива
|
||||
procedure Write<T>(self: array of T); extensionmethod;
|
||||
begin
|
||||
for var i:=0 to self.Length-1 do
|
||||
PT4.Put(self[i]);
|
||||
end;
|
||||
|
||||
/// Выводит элементы матрицы
|
||||
/// Выводит элементы матрицы
|
||||
procedure Write<T>(self: array [,] of T); extensionmethod;
|
||||
begin
|
||||
for var i:=0 to self.GetLength(0)-1 do
|
||||
|
|
@ -2295,7 +2295,7 @@ begin
|
|||
PT4.Put(self[i,j]);
|
||||
end;
|
||||
|
||||
// == Дополнения 2016.07
|
||||
// == Дополнения 2016.07
|
||||
|
||||
procedure PrintMatr<T>(a: array[,] of T);
|
||||
begin
|
||||
|
|
@ -2318,7 +2318,7 @@ begin
|
|||
write(a[i][j]);
|
||||
end;
|
||||
|
||||
/// Выводит размер и элементы последовательности
|
||||
/// Выводит размер и элементы последовательности
|
||||
procedure PrintAll<T>(self: sequence of T); extensionmethod;
|
||||
begin
|
||||
var b := self.ToArray();
|
||||
|
|
@ -2327,7 +2327,7 @@ begin
|
|||
PT4.Put(e);
|
||||
end;
|
||||
|
||||
/// Выводит размер и элементы динамического массива
|
||||
/// Выводит размер и элементы динамического массива
|
||||
procedure PrintAll<T>(self: array of T); extensionmethod;
|
||||
begin
|
||||
PT4.Put(self.Length);
|
||||
|
|
@ -2335,7 +2335,7 @@ begin
|
|||
PT4.Put(self[i]);
|
||||
end;
|
||||
|
||||
/// Выводит размер и элементы динамического массива
|
||||
/// Выводит размер и элементы динамического массива
|
||||
procedure WriteAll<T>(self: array of T); extensionmethod;
|
||||
begin
|
||||
PT4.Put(self.Length);
|
||||
|
|
@ -2343,7 +2343,7 @@ begin
|
|||
PT4.Put(self[i]);
|
||||
end;
|
||||
|
||||
/// Выводит элементы последовательности
|
||||
/// Выводит элементы последовательности
|
||||
procedure Writeln<T>(self: sequence of T); extensionmethod;
|
||||
begin
|
||||
var b := self.ToArray();
|
||||
|
|
@ -2351,14 +2351,14 @@ begin
|
|||
PT4.Put(e);
|
||||
end;
|
||||
|
||||
/// Выводит элементы динамического массива
|
||||
/// Выводит элементы динамического массива
|
||||
procedure Writeln<T>(self: array of T); extensionmethod;
|
||||
begin
|
||||
for var i:=0 to self.Length-1 do
|
||||
PT4.Put(self[i]);
|
||||
end;
|
||||
|
||||
/// Выводит элементы матрицы
|
||||
/// Выводит элементы матрицы
|
||||
procedure Writeln<T>(self: array [,] of T); extensionmethod;
|
||||
begin
|
||||
for var i:=0 to self.GetLength(0)-1 do
|
||||
|
|
@ -2366,13 +2366,13 @@ begin
|
|||
PT4.Put(self[i,j]);
|
||||
end;
|
||||
|
||||
// == Конец дополнений 2016.07
|
||||
// == Конец дополнений 2016.07
|
||||
|
||||
|
||||
/// Выводит в разделе отладки окна задачника
|
||||
/// комментарий cmt, размер последовательности и значения,
|
||||
/// полученные из элементов последовательности
|
||||
/// с помощью указанного лямбда-выражения
|
||||
/// Выводит в разделе отладки окна задачника
|
||||
/// комментарий cmt, размер последовательности и значения,
|
||||
/// полученные из элементов последовательности
|
||||
/// с помощью указанного лямбда-выражения
|
||||
|
||||
function Show<TSource>(self: sequence of TSource; cmt: string; selector: System.Func<TSource, string>): sequence of TSource; extensionmethod;
|
||||
begin
|
||||
|
|
@ -2385,17 +2385,17 @@ begin
|
|||
result := self;
|
||||
end;
|
||||
|
||||
/// Выводит в разделе отладки окна задачника
|
||||
/// размер последовательности и значения,
|
||||
/// полученные из элементов последовательности
|
||||
/// с помощью указанного лямбда-выражения
|
||||
/// Выводит в разделе отладки окна задачника
|
||||
/// размер последовательности и значения,
|
||||
/// полученные из элементов последовательности
|
||||
/// с помощью указанного лямбда-выражения
|
||||
function Show<TSource>(Self: sequence of TSource; selector: System.Func<TSource, string>): sequence of TSource; extensionmethod;
|
||||
begin
|
||||
result := self.Show('', selector);
|
||||
end;
|
||||
|
||||
/// Выводит в разделе отладки окна задачника
|
||||
/// комментарий cmt, размер последовательности и ее элементы
|
||||
/// Выводит в разделе отладки окна задачника
|
||||
/// комментарий cmt, размер последовательности и ее элементы
|
||||
function Show<TSource>(Self: sequence of TSource; cmt: string): sequence of TSource; extensionmethod;
|
||||
begin
|
||||
result := self;
|
||||
|
|
@ -2414,14 +2414,14 @@ begin
|
|||
end;
|
||||
|
||||
|
||||
/// Выводит в разделе отладки окна задачника
|
||||
/// размер последовательности и ее элементы.
|
||||
/// Выводит в разделе отладки окна задачника
|
||||
/// размер последовательности и ее элементы.
|
||||
function Show<TSource>(Self: sequence of TSource): sequence of TSource; extensionmethod;
|
||||
begin
|
||||
result := self.Show('');
|
||||
end;
|
||||
|
||||
// == Конец дополнений к версии 4.14 ==
|
||||
// == Конец дополнений к версии 4.14 ==
|
||||
|
||||
initialization
|
||||
__InitModule;
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ unit PT4Exam;
|
|||
//------------------------------------------------------------------------------
|
||||
// Модуль для подключения задачника PT for Exam
|
||||
// Версия 1.2
|
||||
// Copyright (c) 2014-2017 М.Э.Абрамян
|
||||
// Copyright (©) 2014-2017 М.Э.Абрамян
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,242 +1,242 @@
|
|||
/// Конструктор учебных заданий для задачника Programming Taskbook.
|
||||
/// Версия 1.5 от 27.03.2017 (С) М. Э. Абрамян, 2016-2017.
|
||||
/// Все компоненты конструктора могут вызываться либо как классовые методы класса pt,
|
||||
/// либо как обычные константы и процедуры.
|
||||
/// Конструктор учебных заданий для задачника Programming Taskbook.
|
||||
/// Версия 1.5 от 27.03.2017 (©) М. Э. Абрамян, 2016-2017.
|
||||
/// Все компоненты конструктора могут вызываться либо как классовые методы класса pt,
|
||||
/// либо как обычные константы и процедуры.
|
||||
unit PT4MakerNetX;
|
||||
|
||||
interface
|
||||
|
||||
const
|
||||
OptionAllLanguages = 1; // группа доступна для всех языков
|
||||
OptionPascalLanguages = 2; // группа доступна для всех реализаций Паскаля
|
||||
OptionNETLanguages = 4; // группа доступна для всех NET-языков
|
||||
OptionUseAddition = 8; // группа доступна только при наличии файла дополнений
|
||||
OptionHideExamples = 16; // не отображать раздел с примером верного решения
|
||||
OptionAllLanguages = 1; // группа доступна для всех языков
|
||||
OptionPascalLanguages = 2; // группа доступна для всех реализаций Паскаля
|
||||
OptionNETLanguages = 4; // группа доступна для всех NET-языков
|
||||
OptionUseAddition = 8; // группа доступна только при наличии файла дополнений
|
||||
OptionHideExamples = 16; // не отображать раздел с примером верного решения
|
||||
|
||||
/// Процедура, с которой должно начинаться определение нового задания.
|
||||
/// Должна вызываться в процедуре с именем, начинающемся с текста Task.
|
||||
/// Параметр topic определяет имя подгруппы и является необязательным.
|
||||
/// Параметр tasktext содержит формулировку задания; отдельные строки
|
||||
/// формулировки должны разделяться символами #13, #10 или #13#10.
|
||||
/// Процедура, с которой должно начинаться определение нового задания.
|
||||
/// Должна вызываться в процедуре с именем, начинающемся с текста Task.
|
||||
/// Параметр topic определяет имя подгруппы и является необязательным.
|
||||
/// Параметр tasktext содержит формулировку задания; отдельные строки
|
||||
/// формулировки должны разделяться символами #13, #10 или #13#10.
|
||||
procedure NewTask(topic, tasktext: string);
|
||||
|
||||
/// Процедура, с которой должно начинаться определение нового задания.
|
||||
/// Должна вызываться в процедуре с именем, начинающемся с текста Task.
|
||||
/// Параметр tasktext содержит формулировку задания; отдельные строки
|
||||
/// формулировки должны разделяться символами #13, #10 или #13#10.
|
||||
/// Процедура, с которой должно начинаться определение нового задания.
|
||||
/// Должна вызываться в процедуре с именем, начинающемся с текста Task.
|
||||
/// Параметр tasktext содержит формулировку задания; отдельные строки
|
||||
/// формулировки должны разделяться символами #13, #10 или #13#10.
|
||||
procedure NewTask(tasktext: string);
|
||||
|
||||
/// Добавляет комментарий в новой строке раздела исходных даннных.
|
||||
/// Добавляет комментарий в новой строке раздела исходных даннных.
|
||||
procedure DataComm(comm: string);
|
||||
|
||||
/// Добавляет данные и комментарии в новой строке раздела исходных даннных.
|
||||
/// Добавляет данные и комментарии в новой строке раздела исходных даннных.
|
||||
procedure Data(comm: string; a: object);
|
||||
|
||||
/// Добавляет данные и комментарии в новой строке раздела исходных даннных.
|
||||
/// Добавляет данные и комментарии в новой строке раздела исходных даннных.
|
||||
procedure Data(comm1: string; a1: object; comm2: string);
|
||||
|
||||
/// Добавляет данные и комментарии в новой строке раздела исходных даннных.
|
||||
/// Добавляет данные и комментарии в новой строке раздела исходных даннных.
|
||||
procedure Data(comm1: string; a1: object; comm2: string; a2: object);
|
||||
|
||||
/// Добавляет данные и комментарии в новой строке раздела исходных даннных.
|
||||
/// Добавляет данные и комментарии в новой строке раздела исходных даннных.
|
||||
procedure Data(comm1: string; a1: object; comm2: string; a2: object; comm3: string);
|
||||
|
||||
/// Добавляет данные и комментарии в новой строке раздела исходных даннных.
|
||||
/// Добавляет данные и комментарии в новой строке раздела исходных даннных.
|
||||
procedure Data(comm1: string; a1: object; comm2: string; a2: object; comm3: string; a3: object);
|
||||
|
||||
/// Добавляет последовательность логических данных в раздел исходных данных.
|
||||
/// Добавляет последовательность логических данных в раздел исходных данных.
|
||||
procedure Data(seq: sequence of boolean);
|
||||
|
||||
/// Добавляет последовательность целых чисел в раздел исходных данных.
|
||||
/// Добавляет последовательность целых чисел в раздел исходных данных.
|
||||
procedure Data(seq: sequence of integer);
|
||||
|
||||
/// Добавляет последовательность вещественных чисел в раздел исходных данных.
|
||||
/// Добавляет последовательность вещественных чисел в раздел исходных данных.
|
||||
procedure Data(seq: sequence of real);
|
||||
|
||||
/// Добавляет последовательность символов в раздел исходных данных.
|
||||
/// Добавляет последовательность символов в раздел исходных данных.
|
||||
procedure Data(seq: sequence of char);
|
||||
|
||||
/// Добавляет последовательность строк в раздел исходных данных.
|
||||
/// Добавляет последовательность строк в раздел исходных данных.
|
||||
procedure Data(seq: sequence of string);
|
||||
|
||||
/// Добавляет комментарий в новой строке раздела результатов.
|
||||
/// Добавляет комментарий в новой строке раздела результатов.
|
||||
procedure ResComm(comm: string);
|
||||
|
||||
/// Добавляет данные и комментарии в новой строке раздела результатов.
|
||||
/// Добавляет данные и комментарии в новой строке раздела результатов.
|
||||
procedure Res(comm: string; a: object);
|
||||
|
||||
/// Добавляет данные и комментарии в новой строке раздела результатов.
|
||||
/// Добавляет данные и комментарии в новой строке раздела результатов.
|
||||
procedure Res(comm1: string; a1: object; comm2: string);
|
||||
|
||||
/// Добавляет данные и комментарии в новой строке раздела результатов.
|
||||
/// Добавляет данные и комментарии в новой строке раздела результатов.
|
||||
procedure Res(comm1: string; a1: object; comm2: string; a2: object);
|
||||
|
||||
/// Добавляет данные и комментарии в новой строке раздела результатов.
|
||||
/// Добавляет данные и комментарии в новой строке раздела результатов.
|
||||
procedure Res(comm1: string; a1: object; comm2: string; a2: object; comm3: string);
|
||||
|
||||
/// Добавляет данные и комментарии в новой строке раздела результатов.
|
||||
/// Добавляет данные и комментарии в новой строке раздела результатов.
|
||||
procedure Res(comm1: string; a1: object; comm2: string; a2: object; comm3: string; a3: object);
|
||||
|
||||
/// Добавляет последовательность логических данных в раздел результатов.
|
||||
/// Добавляет последовательность логических данных в раздел результатов.
|
||||
procedure Res(seq: sequence of boolean);
|
||||
|
||||
/// Добавляет последовательность целых чисел в раздел результатов.
|
||||
/// Добавляет последовательность целых чисел в раздел результатов.
|
||||
procedure Res(seq: sequence of integer);
|
||||
|
||||
/// Добавляет последовательность вещественных чисел в раздел результатов.
|
||||
/// Добавляет последовательность вещественных чисел в раздел результатов.
|
||||
procedure Res(seq: sequence of real);
|
||||
|
||||
/// Добавляет последовательность символов в раздел результатов.
|
||||
/// Добавляет последовательность символов в раздел результатов.
|
||||
procedure Res(seq: sequence of char);
|
||||
|
||||
/// Добавляет последовательность строк в раздел результатов.
|
||||
/// Добавляет последовательность строк в раздел результатов.
|
||||
procedure Res(seq: sequence of string);
|
||||
|
||||
/// Задает минимальную ширину поля вывода для числовых данных
|
||||
/// (числа выравниваются по правому краю поля вывода,
|
||||
/// т.е. при необходимости дополняются слева пробелами).
|
||||
/// Если n не лежит в диапазоне 0..10, то вызов процедуры игнорируется.
|
||||
/// По умолчанию минимальная ширина поля вывода полагается равной 0.
|
||||
/// Задает минимальную ширину поля вывода для числовых данных
|
||||
/// (числа выравниваются по правому краю поля вывода,
|
||||
/// т.е. при необходимости дополняются слева пробелами).
|
||||
/// Если n не лежит в диапазоне 0..10, то вызов процедуры игнорируется.
|
||||
/// По умолчанию минимальная ширина поля вывода полагается равной 0.
|
||||
procedure SetWidth(n: integer);
|
||||
|
||||
/// Задает формат отображения вещественных чисел:
|
||||
/// с фиксированной точкой и n дробными знаками при n > 0,
|
||||
/// с плавающей точкой и n дробными знаками при n < 0,
|
||||
/// с плавающей точкой и 6 дробными знаками при n = 0.
|
||||
/// Если n по модулю превосходит 10, то вызов процедуры игнорируется.
|
||||
/// По умолчанию устанавливается формат с фиксированной точкой
|
||||
/// и 2 дробными знаками.
|
||||
/// Задает формат отображения вещественных чисел:
|
||||
/// с фиксированной точкой и n дробными знаками при n > 0,
|
||||
/// с плавающей точкой и n дробными знаками при n < 0,
|
||||
/// с плавающей точкой и 6 дробными знаками при n = 0.
|
||||
/// Если n по модулю превосходит 10, то вызов процедуры игнорируется.
|
||||
/// По умолчанию устанавливается формат с фиксированной точкой
|
||||
/// и 2 дробными знаками.
|
||||
procedure SetPrecision(n: integer);
|
||||
|
||||
/// Задает количество тестовых запусков, выполняемых
|
||||
/// для проверки правильности программы (от 2 до 10).
|
||||
/// По умолчанию число тестовых запусков полагается равным 5.
|
||||
/// Задает количество тестовых запусков, выполняемых
|
||||
/// для проверки правильности программы (от 2 до 10).
|
||||
/// По умолчанию число тестовых запусков полагается равным 5.
|
||||
procedure SetTestCount(n: integer);
|
||||
|
||||
/// Задает минимально необходимое количество элементов
|
||||
/// исходных данных, которое требуется ввести для правильного
|
||||
/// решения задачи в случае текущего набора исходных данных.
|
||||
/// При отсутствии процедуры предполагается,
|
||||
/// что для правильного решения надо ввести все исходные данные.
|
||||
/// Задает минимально необходимое количество элементов
|
||||
/// исходных данных, которое требуется ввести для правильного
|
||||
/// решения задачи в случае текущего набора исходных данных.
|
||||
/// При отсутствии процедуры предполагается,
|
||||
/// что для правильного решения надо ввести все исходные данные.
|
||||
procedure SetRequiredDataCount(n: integer);
|
||||
|
||||
/// Возвращает номер текущего тестового запуска
|
||||
/// (запуски нумеруются от 1).
|
||||
/// Возвращает номер текущего тестового запуска
|
||||
/// (запуски нумеруются от 1).
|
||||
function CurrentTest: integer;
|
||||
|
||||
/// Генерирует случайное целов в диапазоне от M до N включительно.
|
||||
/// Если M >= N, то возвращает M.
|
||||
/// Генерирует случайное целов в диапазоне от M до N включительно.
|
||||
/// Если M >= N, то возвращает M.
|
||||
function Random(M, N: integer): integer;
|
||||
|
||||
/// Генерирует случайное вещественное на промежутке [A, B).
|
||||
/// Если промежуток [A, B) пуст, то возвращает A.
|
||||
/// Генерирует случайное вещественное на промежутке [A, B).
|
||||
/// Если промежуток [A, B) пуст, то возвращает A.
|
||||
function Random(A, B: real): real;
|
||||
|
||||
/// Генерирует случайную строку длины len, состоящую
|
||||
/// из цифр и строчных (т.е. маленьких) латинских букв.
|
||||
/// Генерирует случайную строку длины len, состоящую
|
||||
/// из цифр и строчных (т.е. маленьких) латинских букв.
|
||||
function RandomName(len: integer): string;
|
||||
|
||||
/// Создает новую группу с кратким описанием GroupDescription,
|
||||
/// информацией об авторе GroupAuthor и набором необязательных опций, объединяемых операцией or.
|
||||
/// Имя группы определяется по имени библиотеки (путем отбрасывания префикса PT4).
|
||||
/// В группу включаются задания, определенные в процедурах, имена которых начинаются с текста Task.
|
||||
/// Процедура NewGroup должна быть вызвана в процедуре inittaskgroup без параметров, которую
|
||||
/// необходимо описать в библиотеке с группой заданий (все буквы в имени inittaskgroup - строчные).
|
||||
/// Создает новую группу с кратким описанием GroupDescription,
|
||||
/// информацией об авторе GroupAuthor и набором необязательных опций, объединяемых операцией or.
|
||||
/// Имя группы определяется по имени библиотеки (путем отбрасывания префикса PT4).
|
||||
/// В группу включаются задания, определенные в процедурах, имена которых начинаются с текста Task.
|
||||
/// Процедура NewGroup должна быть вызвана в процедуре inittaskgroup без параметров, которую
|
||||
/// необходимо описать в библиотеке с группой заданий (все буквы в имени inittaskgroup - строчные).
|
||||
procedure NewGroup(GroupDescription, GroupAuthor: string; Options: integer := 0);
|
||||
|
||||
/// Обеспечивает регистрацию созданной группы в электронном задачнике.
|
||||
/// Процедура ActivateNET(S) должна быть вызвана в процедуре activate(S: string),
|
||||
/// которую необходимо описать в библиотеке с группой заданий (все буквы в имени activate - строчные).
|
||||
/// Обеспечивает регистрацию созданной группы в электронном задачнике.
|
||||
/// Процедура ActivateNET(S) должна быть вызвана в процедуре activate(S: string),
|
||||
/// которую необходимо описать в библиотеке с группой заданий (все буквы в имени activate - строчные).
|
||||
procedure ActivateNET(S: string);
|
||||
|
||||
/// Импортирует в создаваемую группу существующее задание
|
||||
/// из группы GroupName с номером TaskNumber. Должна вызываться
|
||||
/// в процедуре с именем, начинающемся с текста Task.
|
||||
/// Импортирует в создаваемую группу существующее задание
|
||||
/// из группы GroupName с номером TaskNumber. Должна вызываться
|
||||
/// в процедуре с именем, начинающемся с текста Task.
|
||||
procedure UseTask(GroupName: string; TaskNumber: integer);
|
||||
|
||||
/// Возвращает массив из 116 русских слов.
|
||||
/// Возвращает массив из 116 русских слов.
|
||||
function GetWords: array of string;
|
||||
/// Возвращает массив из 116 английских слов.
|
||||
/// Возвращает массив из 116 английских слов.
|
||||
function GetEnWords: array of string;
|
||||
/// Возвращает массив из 61 русского предложения.
|
||||
/// Возвращает массив из 61 русского предложения.
|
||||
function GetSentences: array of string;
|
||||
/// Возвращает массив из 61 английского предложения.
|
||||
/// Возвращает массив из 61 английского предложения.
|
||||
function GetEnSentences: array of string;
|
||||
/// Возвращает массив из 85 русских многострочных текстов.
|
||||
/// Каждая строка текста оканчивается символами #13#10.
|
||||
/// Возвращает массив из 85 русских многострочных текстов.
|
||||
/// Каждая строка текста оканчивается символами #13#10.
|
||||
function GetTexts: array of string;
|
||||
/// Возвращает массив из 85 английских многострочных текстов.
|
||||
/// Каждая строка текста оканчивается символами #13#10.
|
||||
/// Возвращает массив из 85 английских многострочных текстов.
|
||||
/// Каждая строка текста оканчивается символами #13#10.
|
||||
function GetEnTexts: array of string;
|
||||
|
||||
/// Возвращает случайное русское слово из массива,
|
||||
/// входящего в конструктор учебных заданий.
|
||||
/// Возвращает случайное русское слово из массива,
|
||||
/// входящего в конструктор учебных заданий.
|
||||
function RandomWord: string;
|
||||
/// Возвращает случайное английское слово из массива,
|
||||
/// входящего в конструктор учебных заданий.
|
||||
/// Возвращает случайное английское слово из массива,
|
||||
/// входящего в конструктор учебных заданий.
|
||||
function RandomEnWord: string;
|
||||
/// Возвращает случайное русское предложение из массива,
|
||||
/// входящего в конструктор учебных заданий.
|
||||
/// Возвращает случайное русское предложение из массива,
|
||||
/// входящего в конструктор учебных заданий.
|
||||
function RandomSentence: string;
|
||||
/// Возвращает случайное английское предложение из массива,
|
||||
/// входящего в конструктор учебных заданий.
|
||||
/// Возвращает случайное английское предложение из массива,
|
||||
/// входящего в конструктор учебных заданий.
|
||||
function RandomEnSentence: string;
|
||||
/// Возвращает случайный русский многострочный текст из массива,
|
||||
/// входящего в конструктор учебных заданий.
|
||||
/// Каждая строка текста оканчивается символами #13#10.
|
||||
/// Возвращает случайный русский многострочный текст из массива,
|
||||
/// входящего в конструктор учебных заданий.
|
||||
/// Каждая строка текста оканчивается символами #13#10.
|
||||
function RandomText: string;
|
||||
/// Возвращает случайный английский многострочный текст из массива,
|
||||
/// входящего в конструктор учебных заданий.
|
||||
/// Каждая строка текста оканчивается символами #13#10.
|
||||
/// Возвращает случайный английский многострочный текст из массива,
|
||||
/// входящего в конструктор учебных заданий.
|
||||
/// Каждая строка текста оканчивается символами #13#10.
|
||||
function RandomEnText: string;
|
||||
|
||||
|
||||
/// Добавляет в задание исходный файл целых чисел
|
||||
/// с именем FileName и отображает его содержимое
|
||||
/// в разделе исходных данных.
|
||||
/// Добавляет в задание исходный файл целых чисел
|
||||
/// с именем FileName и отображает его содержимое
|
||||
/// в разделе исходных данных.
|
||||
procedure DataFileInteger(FileName: string);
|
||||
/// Добавляет в задание исходный файл вещественных чисел
|
||||
/// с именем FileName и отображает его содержимое
|
||||
/// в разделе исходных данных.
|
||||
/// Добавляет в задание исходный файл вещественных чисел
|
||||
/// с именем FileName и отображает его содержимое
|
||||
/// в разделе исходных данных.
|
||||
procedure DataFileReal(FileName: string);
|
||||
/// Добавляет в задание исходный символьный файл
|
||||
/// с именем FileName и отображает его содержимое
|
||||
/// в разделе исходных данных. Символы должны
|
||||
/// храниться в файле в однобайтной кодировке.
|
||||
/// Добавляет в задание исходный символьный файл
|
||||
/// с именем FileName и отображает его содержимое
|
||||
/// в разделе исходных данных. Символы должны
|
||||
/// храниться в файле в однобайтной кодировке.
|
||||
procedure DataFileChar(FileName: string);
|
||||
/// Добавляет в задание исходный строковый файл
|
||||
/// с элементами типа ShortString и именем FileName
|
||||
/// и отображает его содержимое в разделе исходных данных.
|
||||
/// Длина элементов файла не должна превосходить 70 символов.
|
||||
/// Строки должны храниться в файле в однобайтной кодировке.
|
||||
/// Добавляет в задание исходный строковый файл
|
||||
/// с элементами типа ShortString и именем FileName
|
||||
/// и отображает его содержимое в разделе исходных данных.
|
||||
/// Длина элементов файла не должна превосходить 70 символов.
|
||||
/// Строки должны храниться в файле в однобайтной кодировке.
|
||||
procedure DataFileString(FileName: string);
|
||||
/// Добавляет в задание исходный текстовый файл
|
||||
/// с именем FileName и отображает его содержимое
|
||||
/// в разделе исходных данных. Длина каждой строки
|
||||
/// текстового файла не должна превосходить 70 символов.
|
||||
/// Текст должен храниться в файле в однобайтной кодировке.
|
||||
/// Добавляет в задание исходный текстовый файл
|
||||
/// с именем FileName и отображает его содержимое
|
||||
/// в разделе исходных данных. Длина каждой строки
|
||||
/// текстового файла не должна превосходить 70 символов.
|
||||
/// Текст должен храниться в файле в однобайтной кодировке.
|
||||
procedure DataText(FileName: string; LineCount: integer := 4);
|
||||
|
||||
/// Добавляет в задание результирующий файл целых чисел
|
||||
/// с именем FileName и отображает его содержимое в разделе результатов.
|
||||
/// Добавляет в задание результирующий файл целых чисел
|
||||
/// с именем FileName и отображает его содержимое в разделе результатов.
|
||||
procedure ResFileInteger(FileName: string);
|
||||
/// Добавляет в задание результирующий файл вещественных чисел
|
||||
/// с именем FileName и отображает его содержимое в разделе результатов.
|
||||
/// Добавляет в задание результирующий файл вещественных чисел
|
||||
/// с именем FileName и отображает его содержимое в разделе результатов.
|
||||
procedure ResFileReal(FileName: string);
|
||||
/// Добавляет в задание результирующий символьный файл
|
||||
/// с именем FileName и отображает его содержимое в разделе результатов.
|
||||
/// Символы должны храниться в файле в однобайтной кодировке.
|
||||
/// Добавляет в задание результирующий символьный файл
|
||||
/// с именем FileName и отображает его содержимое в разделе результатов.
|
||||
/// Символы должны храниться в файле в однобайтной кодировке.
|
||||
procedure ResFileChar(FileName: string);
|
||||
/// Добавляет в задание результирующий строковый файл
|
||||
/// с элементами типа ShortString и именем FileName
|
||||
/// и отображает его содержимое в разделе результатов.
|
||||
/// Длина элементов файла не должна превосходить 70 символов.
|
||||
/// Строки должны храниться в файле в однобайтной кодировке.
|
||||
/// Добавляет в задание результирующий строковый файл
|
||||
/// с элементами типа ShortString и именем FileName
|
||||
/// и отображает его содержимое в разделе результатов.
|
||||
/// Длина элементов файла не должна превосходить 70 символов.
|
||||
/// Строки должны храниться в файле в однобайтной кодировке.
|
||||
procedure ResFileString(FileName: string);
|
||||
/// Добавляет в задание результирующий текстовый файл
|
||||
/// с именем FileName и отображает его содержимое в разделе результатов.
|
||||
/// Длина каждой строки текстового файла не должна превосходить 70 символов.
|
||||
/// Текст должен храниться в файле в однобайтной кодировке.
|
||||
/// Добавляет в задание результирующий текстовый файл
|
||||
/// с именем FileName и отображает его содержимое в разделе результатов.
|
||||
/// Длина каждой строки текстового файла не должна превосходить 70 символов.
|
||||
/// Текст должен храниться в файле в однобайтной кодировке.
|
||||
procedure ResText(FileName: string; LineCount: integer := 5);
|
||||
|
||||
type pt = class
|
||||
|
|
@ -245,395 +245,395 @@ type pt = class
|
|||
begin
|
||||
end;
|
||||
public
|
||||
/// Дополнительная опция для процедуры NewGroup:
|
||||
/// группа доступна для всех языков.
|
||||
/// Дополнительная опция для процедуры NewGroup:
|
||||
/// группа доступна для всех языков.
|
||||
class function OptionAllLanguages: integer;
|
||||
begin
|
||||
result := PT4MakerNetX.OptionAllLanguages;
|
||||
end;
|
||||
/// Дополнительная опция для процедуры NewGroup:
|
||||
/// группа доступна для всех реализаций языка Pascal.
|
||||
/// Дополнительная опция для процедуры NewGroup:
|
||||
/// группа доступна для всех реализаций языка Pascal.
|
||||
class function OptionPascalLanguages: integer;
|
||||
begin
|
||||
result := PT4MakerNetX.OptionPascalLanguages;
|
||||
end;
|
||||
/// Дополнительная опция для процедуры NewGroup:
|
||||
/// группа доступна для всех NET-языков.
|
||||
/// Дополнительная опция для процедуры NewGroup:
|
||||
/// группа доступна для всех NET-языков.
|
||||
class function OptionNETLanguages: integer;
|
||||
begin
|
||||
result := PT4MakerNetX.OptionNETLanguages;
|
||||
end;
|
||||
/// Дополнительная опция для процедуры NewGroup:
|
||||
/// группа доступна только при наличии связанного с ней файла дополнений.
|
||||
/// Дополнительная опция для процедуры NewGroup:
|
||||
/// группа доступна только при наличии связанного с ней файла дополнений.
|
||||
class function OptionUseAddition: integer;
|
||||
begin
|
||||
result := PT4MakerNetX.OptionUseAddition;
|
||||
end;
|
||||
/// Дополнительная опция для процедуры NewGroup:
|
||||
/// в заданиях данной группы не будет отображаться пример верного решения.
|
||||
/// Дополнительная опция для процедуры NewGroup:
|
||||
/// в заданиях данной группы не будет отображаться пример верного решения.
|
||||
class function OptionHideExamples: integer;
|
||||
begin
|
||||
result := PT4MakerNetX.OptionHideExamples;
|
||||
end;
|
||||
/// Процедура, с которой должно начинаться определение нового задания.
|
||||
/// Должна вызываться в процедуре с именем, начинающемся с текста Task.
|
||||
/// Параметр topic определяет имя подгруппы (является необязательным).
|
||||
/// Параметр tasktext содержит формулировку задания; отдельные строки
|
||||
/// формулировки должны разделяться символами #13, #10 или #13#10.
|
||||
/// Процедура, с которой должно начинаться определение нового задания.
|
||||
/// Должна вызываться в процедуре с именем, начинающемся с текста Task.
|
||||
/// Параметр topic определяет имя подгруппы (является необязательным).
|
||||
/// Параметр tasktext содержит формулировку задания; отдельные строки
|
||||
/// формулировки должны разделяться символами #13, #10 или #13#10.
|
||||
class procedure NewTask(topic, tasktext: string);
|
||||
begin
|
||||
PT4MakerNetX.NewTask(topic, tasktext);
|
||||
end;
|
||||
/// Процедура, с которой должно начинаться определение нового задания.
|
||||
/// Должна вызываться в процедуре с именем, начинающемся с текста Task.
|
||||
/// Параметр tasktext содержит формулировку задания; отдельные строки
|
||||
/// формулировки должны разделяться символами #13, #10 или #13#10.
|
||||
/// Процедура, с которой должно начинаться определение нового задания.
|
||||
/// Должна вызываться в процедуре с именем, начинающемся с текста Task.
|
||||
/// Параметр tasktext содержит формулировку задания; отдельные строки
|
||||
/// формулировки должны разделяться символами #13, #10 или #13#10.
|
||||
class procedure NewTask(tasktext: string);
|
||||
begin
|
||||
PT4MakerNetX.NewTask(tasktext);
|
||||
end;
|
||||
/// Добавляет комментарий в новой строке раздела исходных даннных.
|
||||
/// Добавляет комментарий в новой строке раздела исходных даннных.
|
||||
class procedure DataComm(comm: string);
|
||||
begin
|
||||
PT4MakerNetX.DataComm(comm);
|
||||
end;
|
||||
/// Добавляет данные и комментарии в новой строке раздела исходных даннных.
|
||||
/// Добавляет данные и комментарии в новой строке раздела исходных даннных.
|
||||
class procedure Data(comm: string; a: object);
|
||||
begin
|
||||
PT4MakerNetX.Data(comm, a);
|
||||
end;
|
||||
/// Добавляет данные и комментарии в новой строке раздела исходных даннных.
|
||||
/// Добавляет данные и комментарии в новой строке раздела исходных даннных.
|
||||
class procedure Data(comm1: string; a1: object; comm2: string);
|
||||
begin
|
||||
PT4MakerNetX.Data(comm1, a1, comm2);
|
||||
end;
|
||||
/// Добавляет данные и комментарии в новой строке раздела исходных даннных.
|
||||
/// Добавляет данные и комментарии в новой строке раздела исходных даннных.
|
||||
class procedure Data(comm1: string; a1: object; comm2: string; a2: object);
|
||||
begin
|
||||
PT4MakerNetX.Data(comm1, a1, comm2, a2);
|
||||
end;
|
||||
/// Добавляет данные и комментарии в новой строке раздела исходных даннных.
|
||||
/// Добавляет данные и комментарии в новой строке раздела исходных даннных.
|
||||
class procedure Data(comm1: string; a1: object; comm2: string; a2: object; comm3: string);
|
||||
begin
|
||||
PT4MakerNetX.Data(comm1, a1, comm2, a2, comm3);
|
||||
end;
|
||||
/// Добавляет данные и комментарии в новой строке раздела исходных даннных.
|
||||
/// Добавляет данные и комментарии в новой строке раздела исходных даннных.
|
||||
class procedure Data(comm1: string; a1: object; comm2: string; a2: object; comm3: string; a3: object);
|
||||
begin
|
||||
PT4MakerNetX.Data(comm1, a1, comm2, a2, comm3, a3);
|
||||
end;
|
||||
/// Добавляет последовательность логических данных в раздел исходных данных.
|
||||
/// Добавляет последовательность логических данных в раздел исходных данных.
|
||||
class procedure Data(seq: sequence of boolean);
|
||||
begin
|
||||
PT4MakerNetX.Data(seq);
|
||||
end;
|
||||
/// Добавляет последовательность целых чисел в раздел исходных данных.
|
||||
/// Добавляет последовательность целых чисел в раздел исходных данных.
|
||||
class procedure Data(seq: sequence of integer);
|
||||
begin
|
||||
PT4MakerNetX.Data(seq);
|
||||
end;
|
||||
/// Добавляет последовательность вещественных чисел в раздел исходных данных.
|
||||
/// Добавляет последовательность вещественных чисел в раздел исходных данных.
|
||||
class procedure Data(seq: sequence of real);
|
||||
begin
|
||||
PT4MakerNetX.Data(seq);
|
||||
end;
|
||||
/// Добавляет последовательность символов в раздел исходных данных.
|
||||
/// Добавляет последовательность символов в раздел исходных данных.
|
||||
class procedure Data(seq: sequence of char);
|
||||
begin
|
||||
PT4MakerNetX.Data(seq);
|
||||
end;
|
||||
/// Добавляет последовательность строк в раздел исходных данных.
|
||||
/// Добавляет последовательность строк в раздел исходных данных.
|
||||
class procedure Data(seq: sequence of string);
|
||||
begin
|
||||
PT4MakerNetX.Data(seq);
|
||||
end;
|
||||
|
||||
/// Добавляет комментарий в новой строке раздела результатов.
|
||||
/// Добавляет комментарий в новой строке раздела результатов.
|
||||
class procedure ResComm(comm: string);
|
||||
begin
|
||||
PT4MakerNetX.ResComm(comm);
|
||||
end;
|
||||
/// Добавляет данные и комментарии в новой строке раздела результатов.
|
||||
/// Добавляет данные и комментарии в новой строке раздела результатов.
|
||||
class procedure Res(comm: string; a: object);
|
||||
begin
|
||||
PT4MakerNetX.Res(comm, a);
|
||||
end;
|
||||
/// Добавляет данные и комментарии в новой строке раздела результатов.
|
||||
/// Добавляет данные и комментарии в новой строке раздела результатов.
|
||||
class procedure Res(comm1: string; a1: object; comm2: string);
|
||||
begin
|
||||
PT4MakerNetX.Res(comm1, a1, comm2);
|
||||
end;
|
||||
/// Добавляет данные и комментарии в новой строке раздела результатов.
|
||||
/// Добавляет данные и комментарии в новой строке раздела результатов.
|
||||
class procedure Res(comm1: string; a1: object; comm2: string; a2: object);
|
||||
begin
|
||||
PT4MakerNetX.Res(comm1, a1, comm2, a2);
|
||||
end;
|
||||
/// Добавляет данные и комментарии в новой строке раздела результатов.
|
||||
/// Добавляет данные и комментарии в новой строке раздела результатов.
|
||||
class procedure Res(comm1: string; a1: object; comm2: string; a2: object; comm3: string);
|
||||
begin
|
||||
PT4MakerNetX.Res(comm1, a1, comm2, a2, comm3);
|
||||
end;
|
||||
/// Добавляет данные и комментарии в новой строке раздела результатов.
|
||||
/// Добавляет данные и комментарии в новой строке раздела результатов.
|
||||
class procedure Res(comm1: string; a1: object; comm2: string; a2: object; comm3: string; a3: object);
|
||||
begin
|
||||
PT4MakerNetX.Res(comm1, a1, comm2, a2, comm3, a3);
|
||||
end;
|
||||
/// Добавляет последовательность логических данных в раздел результатов.
|
||||
/// Добавляет последовательность логических данных в раздел результатов.
|
||||
class procedure Res(seq: sequence of boolean);
|
||||
begin
|
||||
PT4MakerNetX.Res(seq);
|
||||
end;
|
||||
/// Добавляет последовательность целых чисел в раздел результатов.
|
||||
/// Добавляет последовательность целых чисел в раздел результатов.
|
||||
class procedure Res(seq: sequence of integer);
|
||||
begin
|
||||
PT4MakerNetX.Res(seq);
|
||||
end;
|
||||
/// Добавляет последовательность вещественных чисел в раздел результатов.
|
||||
/// Добавляет последовательность вещественных чисел в раздел результатов.
|
||||
class procedure Res(seq: sequence of real);
|
||||
begin
|
||||
PT4MakerNetX.Res(seq);
|
||||
end;
|
||||
/// Добавляет последовательность символов в раздел результатов.
|
||||
/// Добавляет последовательность символов в раздел результатов.
|
||||
class procedure Res(seq: sequence of char);
|
||||
begin
|
||||
PT4MakerNetX.Res(seq);
|
||||
end;
|
||||
/// Добавляет последовательность строк в раздел результатов.
|
||||
/// Добавляет последовательность строк в раздел результатов.
|
||||
class procedure Res(seq: sequence of string);
|
||||
begin
|
||||
PT4MakerNetX.Res(seq);
|
||||
end;
|
||||
|
||||
/// Задает минимальную ширину поля вывода для числовых данных
|
||||
/// (числа выравниваются по правому краю поля вывода,
|
||||
/// т.е. при необходимости дополняются слева пробелами).
|
||||
/// Если n не лежит в диапазоне 0..10, то вызов процедуры игнорируется.
|
||||
/// По умолчанию минимальная ширина поля вывода полагается равной 0.
|
||||
/// Задает минимальную ширину поля вывода для числовых данных
|
||||
/// (числа выравниваются по правому краю поля вывода,
|
||||
/// т.е. при необходимости дополняются слева пробелами).
|
||||
/// Если n не лежит в диапазоне 0..10, то вызов процедуры игнорируется.
|
||||
/// По умолчанию минимальная ширина поля вывода полагается равной 0.
|
||||
class procedure SetWidth(n: integer);
|
||||
begin
|
||||
PT4MakerNetX.SetWidth(n);
|
||||
end;
|
||||
/// Задает формат отображения вещественных чисел:
|
||||
/// с фиксированной точкой и n дробными знаками при n > 0,
|
||||
/// с плавающей точкой и n дробными знаками при n < 0,
|
||||
/// с плавающей точкой и 6 дробными знаками при n = 0.
|
||||
/// Если n по модулю превосходит 10, то вызов процедуры игнорируется.
|
||||
/// По умолчанию устанавливается формат с фиксированной точкой
|
||||
/// и 2 дробными знаками.
|
||||
/// Задает формат отображения вещественных чисел:
|
||||
/// с фиксированной точкой и n дробными знаками при n > 0,
|
||||
/// с плавающей точкой и n дробными знаками при n < 0,
|
||||
/// с плавающей точкой и 6 дробными знаками при n = 0.
|
||||
/// Если n по модулю превосходит 10, то вызов процедуры игнорируется.
|
||||
/// По умолчанию устанавливается формат с фиксированной точкой
|
||||
/// и 2 дробными знаками.
|
||||
class procedure SetPrecision(n: integer);
|
||||
begin
|
||||
PT4MakerNetX.SetPrecision(n);
|
||||
end;
|
||||
/// Задает количество тестовых запусков, выполняемых
|
||||
/// для проверки правильности программы (от 2 до 10).
|
||||
/// По умолчанию число тестовых запусков полагается равным 5.
|
||||
/// Задает количество тестовых запусков, выполняемых
|
||||
/// для проверки правильности программы (от 2 до 10).
|
||||
/// По умолчанию число тестовых запусков полагается равным 5.
|
||||
class procedure SetTestCount(n: integer);
|
||||
begin
|
||||
PT4MakerNetX.SetTestCount(n);
|
||||
end;
|
||||
/// Задает минимально необходимое количество элементов
|
||||
/// исходных данных, которое требуется ввести для правильного
|
||||
/// решения задачи в случае текущего набора исходных данных.
|
||||
/// При отсутствии процедуры предполагается,
|
||||
/// что для правильного решения надо ввести все исходные данные.
|
||||
/// Задает минимально необходимое количество элементов
|
||||
/// исходных данных, которое требуется ввести для правильного
|
||||
/// решения задачи в случае текущего набора исходных данных.
|
||||
/// При отсутствии процедуры предполагается,
|
||||
/// что для правильного решения надо ввести все исходные данные.
|
||||
class procedure SetRequiredDataCount(n: integer);
|
||||
begin
|
||||
PT4MakerNetX.SetRequiredDataCount(n);
|
||||
end;
|
||||
/// Возвращает номер текущего тестового запуска
|
||||
/// (запуски нумеруются от 1).
|
||||
/// Возвращает номер текущего тестового запуска
|
||||
/// (запуски нумеруются от 1).
|
||||
class function CurrentTest: integer;
|
||||
begin
|
||||
result := PT4MakerNetX.CurrentTest;
|
||||
end;
|
||||
|
||||
/// Генерирует случайное целов в диапазоне от M до N включительно.
|
||||
/// Если M >= N, то возвращает M.
|
||||
/// Генерирует случайное целов в диапазоне от M до N включительно.
|
||||
/// Если M >= N, то возвращает M.
|
||||
class function Random(M, N: integer): integer;
|
||||
begin
|
||||
result := PT4MakerNetX.Random(M, N);
|
||||
end;
|
||||
/// Генерирует случайное вещественное на промежутке [A, B).
|
||||
/// Если промежуток [A, B) пуст, то возвращает A.
|
||||
/// Генерирует случайное вещественное на промежутке [A, B).
|
||||
/// Если промежуток [A, B) пуст, то возвращает A.
|
||||
class function Random(A, B: real): real;
|
||||
begin
|
||||
result := PT4MakerNetX.Random(A, B);
|
||||
end;
|
||||
/// Генерирует случайную строку длины len, состоящую
|
||||
/// из цифр и строчных (т.е. маленьких) латинских букв.
|
||||
/// Генерирует случайную строку длины len, состоящую
|
||||
/// из цифр и строчных (т.е. маленьких) латинских букв.
|
||||
class function RandomName(len: integer): string;
|
||||
begin
|
||||
result := PT4MakerNetX.RandomName(len);
|
||||
end;
|
||||
|
||||
/// Создает новую группу с кратким описанием GroupDescription,
|
||||
/// информацией об авторе GroupAuthor и набором необязательных опций, объединяемых операцией or.
|
||||
/// Имя группы определяется по имени библиотеки (путем отбрасывания префикса PT4).
|
||||
/// В группу включаются задания, определенные в процедурах, имена которых начинаются с текста Task.
|
||||
/// Процедура NewGroup должна быть вызвана в процедуре inittaskgroup без параметров, которую
|
||||
/// необходимо описать в библиотеке с группой заданий (все буквы в имени inittaskgroup - строчные).
|
||||
/// Создает новую группу с кратким описанием GroupDescription,
|
||||
/// информацией об авторе GroupAuthor и набором необязательных опций, объединяемых операцией or.
|
||||
/// Имя группы определяется по имени библиотеки (путем отбрасывания префикса PT4).
|
||||
/// В группу включаются задания, определенные в процедурах, имена которых начинаются с текста Task.
|
||||
/// Процедура NewGroup должна быть вызвана в процедуре inittaskgroup без параметров, которую
|
||||
/// необходимо описать в библиотеке с группой заданий (все буквы в имени inittaskgroup - строчные).
|
||||
class procedure NewGroup(GroupDescription, GroupAuthor: string; Options: integer := 0);
|
||||
begin
|
||||
PT4MakerNetX.NewGroup(GroupDescription, GroupAuthor, Options);
|
||||
end;
|
||||
/// Обеспечивает регистрацию созданной группы в электронном задачнике.
|
||||
/// Процедура ActivateNET(S) должна быть вызвана в процедуре activate(S: string),
|
||||
/// которую необходимо описать в библиотеке с группой заданий (все буквы в имени activate - строчные).
|
||||
/// Обеспечивает регистрацию созданной группы в электронном задачнике.
|
||||
/// Процедура ActivateNET(S) должна быть вызвана в процедуре activate(S: string),
|
||||
/// которую необходимо описать в библиотеке с группой заданий (все буквы в имени activate - строчные).
|
||||
class procedure ActivateNET(S: string);
|
||||
begin
|
||||
PT4MakerNetX.ActivateNET(S);
|
||||
end;
|
||||
/// Импортирует в создаваемую группу существующее задание
|
||||
/// из группы GroupName с номером TaskNumber. Должна вызываться
|
||||
/// в процедуре с именем, начинающемся с текста Task.
|
||||
/// Импортирует в создаваемую группу существующее задание
|
||||
/// из группы GroupName с номером TaskNumber. Должна вызываться
|
||||
/// в процедуре с именем, начинающемся с текста Task.
|
||||
class procedure UseTask(GroupName: string; TaskNumber: integer);
|
||||
begin
|
||||
PT4MakerNetX.UseTask(GroupName, TaskNumber);
|
||||
end;
|
||||
/// Возвращает массив из 116 русских слов.
|
||||
/// Возвращает массив из 116 русских слов.
|
||||
class function GetWords: array of string;
|
||||
begin
|
||||
result := PT4MakerNetX.GetWords;
|
||||
end;
|
||||
/// Возвращает массив из 116 английских слов.
|
||||
/// Возвращает массив из 116 английских слов.
|
||||
class function GetEnWords: array of string;
|
||||
begin
|
||||
result := PT4MakerNetX.GetEnWords;
|
||||
end;
|
||||
/// Возвращает массив из 61 русского предложения.
|
||||
/// Возвращает массив из 61 русского предложения.
|
||||
class function GetSentences: array of string;
|
||||
begin
|
||||
result := PT4MakerNetX.GetSentences;
|
||||
end;
|
||||
/// Возвращает массив из 61 английского предложения.
|
||||
/// Возвращает массив из 61 английского предложения.
|
||||
class function GetEnSentences: array of string;
|
||||
begin
|
||||
result := PT4MakerNetX.GetEnSentences;
|
||||
end;
|
||||
/// Возвращает массив из 85 русских многострочных текстов.
|
||||
/// Каждая строка текста оканчивается символами #13#10.
|
||||
/// Возвращает массив из 85 русских многострочных текстов.
|
||||
/// Каждая строка текста оканчивается символами #13#10.
|
||||
class function GetTexts: array of string;
|
||||
begin
|
||||
result := PT4MakerNetX.GetTexts;
|
||||
end;
|
||||
/// Возвращает массив из 85 английских многострочных текстов.
|
||||
/// Каждая строка текста оканчивается символами #13#10.
|
||||
/// Возвращает массив из 85 английских многострочных текстов.
|
||||
/// Каждая строка текста оканчивается символами #13#10.
|
||||
class function GetEnTexts: array of string;
|
||||
begin
|
||||
result := PT4MakerNetX.GetEnTexts;
|
||||
end;
|
||||
/// Возвращает случайное русское слово из массива,
|
||||
/// входящего в конструктор учебных заданий.
|
||||
/// Возвращает случайное русское слово из массива,
|
||||
/// входящего в конструктор учебных заданий.
|
||||
class function RandomWord: string;
|
||||
begin
|
||||
result := PT4MakerNetX.RandomWord;
|
||||
end;
|
||||
/// Возвращает случайное английское слово из массива,
|
||||
/// входящего в конструктор учебных заданий.
|
||||
/// Возвращает случайное английское слово из массива,
|
||||
/// входящего в конструктор учебных заданий.
|
||||
class function RandomEnWord: string;
|
||||
begin
|
||||
result := PT4MakerNetX.RandomEnWord;
|
||||
end;
|
||||
/// Возвращает случайное русское предложение из массива,
|
||||
/// входящего в конструктор учебных заданий.
|
||||
/// Возвращает случайное русское предложение из массива,
|
||||
/// входящего в конструктор учебных заданий.
|
||||
class function RandomSentence: string;
|
||||
begin
|
||||
result := PT4MakerNetX.RandomSentence;
|
||||
end;
|
||||
/// Возвращает случайное английское предложение из массива,
|
||||
/// входящего в конструктор учебных заданий.
|
||||
/// Возвращает случайное английское предложение из массива,
|
||||
/// входящего в конструктор учебных заданий.
|
||||
class function RandomEnSentence: string;
|
||||
begin
|
||||
result := PT4MakerNetX.RandomEnSentence;
|
||||
end;
|
||||
/// Возвращает случайный русский многострочный текст из массива,
|
||||
/// входящего в конструктор учебных заданий.
|
||||
/// Каждая строка текста оканчивается символами #13#10.
|
||||
/// Возвращает случайный русский многострочный текст из массива,
|
||||
/// входящего в конструктор учебных заданий.
|
||||
/// Каждая строка текста оканчивается символами #13#10.
|
||||
class function RandomText: string;
|
||||
begin
|
||||
result := PT4MakerNetX.RandomText;
|
||||
end;
|
||||
/// Возвращает случайный английский многострочный текст из массива,
|
||||
/// входящего в конструктор учебных заданий.
|
||||
/// Каждая строка текста оканчивается символами #13#10.
|
||||
/// Возвращает случайный английский многострочный текст из массива,
|
||||
/// входящего в конструктор учебных заданий.
|
||||
/// Каждая строка текста оканчивается символами #13#10.
|
||||
class function RandomEnText: string;
|
||||
begin
|
||||
result := PT4MakerNetX.RandomEnText;
|
||||
end;
|
||||
|
||||
/// Добавляет в задание исходный файл целых чисел
|
||||
/// с именем FileName и отображает его содержимое
|
||||
/// в разделе исходных данных.
|
||||
/// Добавляет в задание исходный файл целых чисел
|
||||
/// с именем FileName и отображает его содержимое
|
||||
/// в разделе исходных данных.
|
||||
class procedure DataFileInteger(FileName: string);
|
||||
begin
|
||||
PT4MakerNetX.DataFileInteger(FileName);
|
||||
end;
|
||||
/// Добавляет в задание исходный файл вещественных чисел
|
||||
/// с именем FileName и отображает его содержимое
|
||||
/// в разделе исходных данных.
|
||||
/// Добавляет в задание исходный файл вещественных чисел
|
||||
/// с именем FileName и отображает его содержимое
|
||||
/// в разделе исходных данных.
|
||||
class procedure DataFileReal(FileName: string);
|
||||
begin
|
||||
PT4MakerNetX.DataFileReal(FileName);
|
||||
end;
|
||||
/// Добавляет в задание исходный символьный файл
|
||||
/// с именем FileName и отображает его содержимое
|
||||
/// в разделе исходных данных. Символы должны
|
||||
/// храниться в файле в однобайтной кодировке.
|
||||
/// Добавляет в задание исходный символьный файл
|
||||
/// с именем FileName и отображает его содержимое
|
||||
/// в разделе исходных данных. Символы должны
|
||||
/// храниться в файле в однобайтной кодировке.
|
||||
class procedure DataFileChar(FileName: string);
|
||||
begin
|
||||
PT4MakerNetX.DataFileChar(FileName);
|
||||
end;
|
||||
/// Добавляет в задание исходный строковый файл
|
||||
/// с элементами типа ShortString и именем FileName
|
||||
/// и отображает его содержимое в разделе исходных данных.
|
||||
/// Длина элементов файла не должна превосходить 70 символов.
|
||||
/// Строки должны храниться в файле в однобайтной кодировке.
|
||||
/// Добавляет в задание исходный строковый файл
|
||||
/// с элементами типа ShortString и именем FileName
|
||||
/// и отображает его содержимое в разделе исходных данных.
|
||||
/// Длина элементов файла не должна превосходить 70 символов.
|
||||
/// Строки должны храниться в файле в однобайтной кодировке.
|
||||
class procedure DataFileString(FileName: string);
|
||||
begin
|
||||
PT4MakerNetX.DataFileString(FileName);
|
||||
end;
|
||||
/// Добавляет в задание исходный текстовый файл
|
||||
/// с именем FileName и отображает его содержимое
|
||||
/// в разделе исходных данных. Длина каждой строки
|
||||
/// текстового файла не должна превосходить 70 символов.
|
||||
/// Текст должен храниться в файле в однобайтной кодировке.
|
||||
/// Добавляет в задание исходный текстовый файл
|
||||
/// с именем FileName и отображает его содержимое
|
||||
/// в разделе исходных данных. Длина каждой строки
|
||||
/// текстового файла не должна превосходить 70 символов.
|
||||
/// Текст должен храниться в файле в однобайтной кодировке.
|
||||
class procedure DataText(FileName: string; LineCount: integer := 4);
|
||||
begin
|
||||
PT4MakerNetX.DataText(FileName);
|
||||
end;
|
||||
|
||||
/// Добавляет в задание результирующий файл целых чисел
|
||||
/// с именем FileName и отображает его содержимое в разделе результатов.
|
||||
/// Добавляет в задание результирующий файл целых чисел
|
||||
/// с именем FileName и отображает его содержимое в разделе результатов.
|
||||
class procedure ResFileInteger(FileName: string);
|
||||
begin
|
||||
PT4MakerNetX.ResFileInteger(FileName);
|
||||
end;
|
||||
/// Добавляет в задание результирующий файл вещественных чисел
|
||||
/// с именем FileName и отображает его содержимое в разделе результатов.
|
||||
/// Добавляет в задание результирующий файл вещественных чисел
|
||||
/// с именем FileName и отображает его содержимое в разделе результатов.
|
||||
class procedure ResFileReal(FileName: string);
|
||||
begin
|
||||
PT4MakerNetX.ResFileReal(FileName);
|
||||
end;
|
||||
/// Добавляет в задание результирующий символьный файл
|
||||
/// с именем FileName и отображает его содержимое в разделе результатов.
|
||||
/// Символы должны храниться в файле в однобайтной кодировке.
|
||||
/// Добавляет в задание результирующий символьный файл
|
||||
/// с именем FileName и отображает его содержимое в разделе результатов.
|
||||
/// Символы должны храниться в файле в однобайтной кодировке.
|
||||
class procedure ResFileChar(FileName: string);
|
||||
begin
|
||||
PT4MakerNetX.ResFileChar(FileName);
|
||||
end;
|
||||
/// Добавляет в задание результирующий строковый файл
|
||||
/// с элементами типа ShortString и именем FileName
|
||||
/// и отображает его содержимое в разделе результатов.
|
||||
/// Длина элементов файла не должна превосходить 70 символов.
|
||||
/// Строки должны храниться в файле в однобайтной кодировке.
|
||||
/// Добавляет в задание результирующий строковый файл
|
||||
/// с элементами типа ShortString и именем FileName
|
||||
/// и отображает его содержимое в разделе результатов.
|
||||
/// Длина элементов файла не должна превосходить 70 символов.
|
||||
/// Строки должны храниться в файле в однобайтной кодировке.
|
||||
class procedure ResFileString(FileName: string);
|
||||
begin
|
||||
PT4MakerNetX.ResFileString(FileName);
|
||||
end;
|
||||
/// Добавляет в задание результирующий текстовый файл
|
||||
/// с именем FileName и отображает его содержимое в разделе результатов.
|
||||
/// Длина каждой строки текстового файла не должна превосходить 70 символов.
|
||||
/// Текст должен храниться в файле в однобайтной кодировке.
|
||||
/// Добавляет в задание результирующий текстовый файл
|
||||
/// с именем FileName и отображает его содержимое в разделе результатов.
|
||||
/// Длина каждой строки текстового файла не должна превосходить 70 символов.
|
||||
/// Текст должен храниться в файле в однобайтной кодировке.
|
||||
class procedure ResText(FileName: string; LineCount: integer := 5);
|
||||
begin
|
||||
PT4MakerNetX.ResText(FileName);
|
||||
|
|
@ -647,13 +647,13 @@ uses System.Reflection, PT4TaskMakerNET, System.Windows.Forms, System;
|
|||
|
||||
const
|
||||
alphabet = '0123456789abcdefghijklmnopqrstuvwxyz';
|
||||
ErrMes1 = 'Error: Раздел размером более 5 строк не может содержать файловые данные.';
|
||||
ErrMes2 = 'Error: При наличии файловых данных раздел не может содержать более 5 строк.';
|
||||
ErrMes3 = 'Error: Количество исходных данных превысило 200.';
|
||||
ErrMes4 = 'Error: Количество результирующих данных превысило 200.';
|
||||
ErrMes5 = 'Error: При определении задания первой должна вызываться процедура NewTask.';
|
||||
ErrMes6 = 'Error: При определении задания не указаны исходные данные.';
|
||||
ErrMes7 = 'Error: При определении задания не указаны результирующие данные.';
|
||||
ErrMes1 = 'Error: Раздел размером более 5 строк не может содержать файловые данные.';
|
||||
ErrMes2 = 'Error: При наличии файловых данных раздел не может содержать более 5 строк.';
|
||||
ErrMes3 = 'Error: Количество исходных данных превысило 200.';
|
||||
ErrMes4 = 'Error: Количество результирующих данных превысило 200.';
|
||||
ErrMes5 = 'Error: При определении задания первой должна вызываться процедура NewTask.';
|
||||
ErrMes6 = 'Error: При определении задания не указаны исходные данные.';
|
||||
ErrMes7 = 'Error: При определении задания не указаны результирующие данные.';
|
||||
|
||||
var
|
||||
yd, yr, ye, nd, nr, pr, wd: integer;
|
||||
|
|
@ -722,18 +722,18 @@ begin
|
|||
if nt then exit;
|
||||
PT4TaskMakerNET.CreateTask(topic);
|
||||
PT4TaskMakerNET.TaskText(tasktext);
|
||||
nt := true; // вызвана процедура NewTask
|
||||
ut := false; // было подключено существующее задание (процедурой UseTask)
|
||||
ye := 1; // текущий номер строки для вывода сообщения об ошибке
|
||||
yd := 0; // текущий номер строки в разделе исходных данных
|
||||
yr := 0; // текущий номер строки в разделе результатов
|
||||
nd := 0; // количество элементов исходных данных
|
||||
nr := 0; // количество элементов результирующих данных
|
||||
fd := false; // наличие файловых данных в разделе исходных данных
|
||||
fr := false; // наличие файловых данных в разделе результатов
|
||||
pr := 2; // текущая точность вывода вещественных данных
|
||||
fmt := 'f2'; // текущий формат вывода вещественных данных
|
||||
wd := 0; // текущая ширина поля вывода для чисел
|
||||
nt := true; // вызвана процедура NewTask
|
||||
ut := false; // было подключено существующее задание (процедурой UseTask)
|
||||
ye := 1; // текущий номер строки для вывода сообщения об ошибке
|
||||
yd := 0; // текущий номер строки в разделе исходных данных
|
||||
yr := 0; // текущий номер строки в разделе результатов
|
||||
nd := 0; // количество элементов исходных данных
|
||||
nr := 0; // количество элементов результирующих данных
|
||||
fd := false; // наличие файловых данных в разделе исходных данных
|
||||
fr := false; // наличие файловых данных в разделе результатов
|
||||
pr := 2; // текущая точность вывода вещественных данных
|
||||
fmt := 'f2'; // текущий формат вывода вещественных данных
|
||||
wd := 0; // текущая ширина поля вывода для чисел
|
||||
end;
|
||||
|
||||
function wreal(w: integer; x: real): integer;
|
||||
|
|
@ -1202,7 +1202,7 @@ end;
|
|||
procedure NewGroup(GroupDescription, GroupAuthor: string; Options: integer);
|
||||
|
||||
begin
|
||||
if not AcceptedLanguage(Options) then exit; // недопустимый текущий язык
|
||||
if not AcceptedLanguage(Options) then exit; // недопустимый текущий язык
|
||||
var ass := Assembly.GetCallingAssembly;
|
||||
var GroupName := GetGroupName(ass.FullName);
|
||||
var nm := 'PT4' + GroupName;
|
||||
|
|
@ -1216,8 +1216,8 @@ begin
|
|||
end;
|
||||
if tasks.Count = 0 then
|
||||
begin
|
||||
Show('Группа ' + GroupName + ' не содержит заданий'#13#10+
|
||||
'(имена процедур с заданиями должны начинаться с текста "Task").');
|
||||
Show('Группа ' + GroupName + ' не содержит заданий'#13#10+
|
||||
'(имена процедур с заданиями должны начинаться с текста "Task").');
|
||||
exit;
|
||||
end;
|
||||
if Options and OptionUseAddition = OptionUseAddition then
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ unit PT4TaskMakerNET;
|
|||
//------------------------------------------------------------------------------
|
||||
// Модуль для создания NET-библиотек с группами заданий в системе PascalABC.NET
|
||||
//
|
||||
// Copyright (c) 2013 М.Э.Абрамян
|
||||
// Copyright (©) 2013 М.Э.Абрамян
|
||||
// Электронный задачник Programming Taskbook Copyright (c) М.Э.Абрамян,1998-2013
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue