diff --git a/Configuration/GlobalAssemblyInfo.cs b/Configuration/GlobalAssemblyInfo.cs index 8b9be0557..5440b844f 100644 --- a/Configuration/GlobalAssemblyInfo.cs +++ b/Configuration/GlobalAssemblyInfo.cs @@ -15,7 +15,7 @@ internal static class RevisionClass public const string Major = "3"; public const string Minor = "4"; public const string Build = "0"; - public const string Revision = "1727"; + public const string Revision = "1728"; public const string MainVersion = Major + "." + Minor; public const string FullVersion = Major + "." + Minor + "." + Build + "." + Revision; diff --git a/Configuration/Version.defs b/Configuration/Version.defs index b0ea34ed2..a2220ac36 100644 --- a/Configuration/Version.defs +++ b/Configuration/Version.defs @@ -1,4 +1,4 @@ -%COREVERSION%=0 -%REVISION%=1727 %MINOR%=4 +%REVISION%=1728 +%COREVERSION%=0 %MAJOR%=3 diff --git a/Localization/DefaultLang.resources b/Localization/DefaultLang.resources index c199589b1..31fee5e51 100644 Binary files a/Localization/DefaultLang.resources and b/Localization/DefaultLang.resources differ diff --git a/PABCNetHelp/LangGuide/Operations_Expressions/arithmop.html b/PABCNetHelp/LangGuide/Operations_Expressions/arithmop.html index a8471ad5f..2e1a0bf62 100644 --- a/PABCNetHelp/LangGuide/Operations_Expressions/arithmop.html +++ b/PABCNetHelp/LangGuide/Operations_Expressions/arithmop.html @@ -5,7 +5,13 @@ - + + +

Арифметические операции

К арифметическим относятся бинарные операции +, -, @@ -31,6 +37,7 @@ BigInteger single real + decimal shortint @@ -45,6 +52,7 @@ BigInteger single real + decimal byte @@ -59,6 +67,7 @@ BigInteger single real + decimal smallint @@ -73,6 +82,7 @@ BigInteger single real + decimal word @@ -87,6 +97,7 @@ BigInteger single real + decimal integer @@ -101,6 +112,7 @@ BigInteger single real + decimal longword @@ -115,6 +127,7 @@ BigInteger single real + decimal int64 @@ -129,6 +142,7 @@ BigInteger single real + decimal uint64 @@ -143,6 +157,7 @@ BigInteger single real + decimal BigInteger @@ -155,8 +170,12 @@ BigInteger BigInteger BigInteger - - - - + + - + + - + + - single @@ -168,9 +187,12 @@ single single single - - + + - single real + + - real @@ -182,9 +204,30 @@ real real real - - + + - real real + + - + + + decimal + decimal + decimal + decimal + decimal + decimal + decimal + decimal + decimal + + - + + - + + - + decimal

То есть, если операнды - целые, то результатом является самый короткий целый diff --git a/PABCNetHelp/LangGuide/Operations_Expressions/index_expressions.html b/PABCNetHelp/LangGuide/Operations_Expressions/index_expressions.html index 2650517e8..2bb0e6ea3 100644 --- a/PABCNetHelp/LangGuide/Operations_Expressions/index_expressions.html +++ b/PABCNetHelp/LangGuide/Operations_Expressions/index_expressions.html @@ -41,7 +41,8 @@ PascalABC.NET

-

Ряд операций для определяемых пользователем типов можно перегружать.

+

Ряд операций для определяемых пользователем типов можно перегружать. Можно +также перегружать операции для .NET-типов если они не были перегружены.

diff --git a/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Extension methods for string.html b/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Extension methods for string.html index 6bf209a90..f311b6ed8 100644 --- a/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Extension methods for string.html +++ b/PABCNetHelp/LangGuide/PABCSystemUnit/Files/Extension methods for string.html @@ -19,7 +19,9 @@ - + + +

Методы расширения типа string

+ + + +
function Between(Self: string; a, b: string): boolean; @@ -60,12 +62,20 @@
        Преобразует строку в BigInteger
function ToInteger(Self: string): integer;
        Преобразует строку в целое
function ToInteger(Self: string; defaultvalue: integer): integer; +
        Преобразует строку в целоеПри невозможности преобразования возвращается defaultvalue
function ToIntegers(Self: string): array of integer;
        Преобразует строку в массив целых
function ToReal(Self: string): real;
        Преобразует строку в вещественное
function ToReal(Self: string; defaultvalue: real): real; +
        Преобразует строку в вещественноеПри невозможности преобразования возвращается defaultvalue
function ToReals(Self: string): array of real;
        Преобразует строку в массив вещественных
function ToWords(Self: string; params delim: array of char): array of string;
        Преобразует строку в массив слов
function TryToInteger(Self: string; var value: integer): boolean; +
        Преобразует строку в целое и записывает его в value.При невозможности преобразования возвращается False
function TryToReal(Self: string; var value: real): boolean; +
        Преобразует строку в вещественное и записывает его в value.При невозможности преобразования возвращается False
\ No newline at end of file diff --git a/PABCNetHelp/LangGuide/PABCSystemUnit/stand_text_files_methods.html b/PABCNetHelp/LangGuide/PABCSystemUnit/stand_text_files_methods.html index 99add9b3c..2fc098087 100644 --- a/PABCNetHelp/LangGuide/PABCSystemUnit/stand_text_files_methods.html +++ b/PABCNetHelp/LangGuide/PABCSystemUnit/stand_text_files_methods.html @@ -1,20 +1,33 @@ + + + + + + + + + + + + + @@ -26,12 +39,29 @@ текстовых файлов (тип Text) определены следующие методы:

  + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ procedure Write(a,b,...);
+         Записывает в файл значения a, b, ...
procedure Writeln(a,b,...);
        Записывает в файл значения a, b, ... и осуществляет переход на следующую строку
+ procedure Print(a,b,...);
+         Записывает в файл значения a, b, ..., + разделяя их пробелами
+ procedure Println(a,b,...);
+         Записывает в файл значения a, b, ..., + разделяя их пробелами, и осуществляет переход на следующую строку
function ReadInteger: integer;
@@ -58,6 +88,11 @@ function ReadBoolean: boolean;
        Возвращает значение типа boolean, введенное из текстового файла
+ function ReadWord: string;
+         Возвращает слово, введенное из текстового файла
function ReadlnInteger: integer;
@@ -88,6 +123,19 @@         Возвращает значение типа boolean, введенное из текстового файла, и переходит на следующую строку
+ function ReadlnWord: string;
+         Возвращает слово, введенное из текстового файла, и переходит на + следующую строку
+ function Eof: boolean;
+         Возвращает True, если достигнут конец + файла, и False в + противном случае
function Eoln: boolean;
@@ -106,6 +154,26 @@         Пропускает пробельные символы, после чего возвращает True, если достигнут конец строки в файле
+ function Name: string;
+         Возвращает имя файла
+ function FullName: string;
+         Возвращает полное имя файла
+ procedure Reset;
+         Устанавливает файловый указатель на начало файла
+ procedure Close;
+         Закрывает файл
procedure Flush;
@@ -117,5 +185,16 @@         Возвращает в виде строки содержимое файла от текущего положения до конца
+ procedure Erase;
+         Удаляет файл (файл должен быть закрыт)
+ procedure Rename(newname: string);
+         Переименовывает файл, давая ему имя newname (файл должен быть + закрыт)
diff --git a/PABCNetHelp/PABCSystemDocGen/PABC.pas b/PABCNetHelp/PABCSystemDocGen/PABC.pas index 392e39727..a40e3c4bc 100644 --- a/PABCNetHelp/PABCSystemDocGen/PABC.pas +++ b/PABCNetHelp/PABCSystemDocGen/PABC.pas @@ -3532,21 +3532,38 @@ begin end; /// Преобразует строку в целое -function ToInteger(Self: string): integer; extensionmethod; -begin - Result := integer.Parse(Self); -end; +function ToInteger(Self: string): integer; extensionmethod := integer.Parse(Self); /// Преобразует строку в BigInteger -function ToBigInteger(Self: string): BigInteger; extensionmethod; +function ToBigInteger(Self: string): BigInteger; extensionmethod := BigInteger.Parse(Self); + +/// Преобразует строку в вещественное +function ToReal(Self: string): real; extensionmethod := real.Parse(Self, nfi); + +/// Преобразует строку в целое и записывает его в value. +///При невозможности преобразования возвращается False +function TryToInteger(Self: string; var value: integer): boolean; extensionmethod := TryStrToInt(Self,value); + +/// Преобразует строку в вещественное и записывает его в value. +///При невозможности преобразования возвращается False +function TryToReal(Self: string; var value: real): boolean; extensionmethod := TryStrToReal(Self,value); + +/// Преобразует строку в целое +///При невозможности преобразования возвращается defaultvalue +function ToInteger(Self: string; defaultvalue: integer): integer; extensionmethod; begin - Result := BigInteger.Parse(Self); + var b := TryStrToInt(Self,Result); + if not b then + Result := defaultvalue end; /// Преобразует строку в вещественное -function ToReal(Self: string): real; extensionmethod; +///При невозможности преобразования возвращается defaultvalue +function ToReal(Self: string; defaultvalue: real): real; extensionmethod; begin - Result := real.Parse(Self, nfi); + var b := TryStrToReal(Self,Result); + if not b then + Result := defaultvalue end; /// Преобразует строку в массив слов diff --git a/PABCNetHelp/PABCSystemDocGen/PABC1.pas b/PABCNetHelp/PABCSystemDocGen/PABC1.pas index 70479d38e..16486787f 100644 --- a/PABCNetHelp/PABCSystemDocGen/PABC1.pas +++ b/PABCNetHelp/PABCSystemDocGen/PABC1.pas @@ -1467,11 +1467,23 @@ function ReadReal(Self: string; var from: integer): real; extensionmethod; /// Считывает слово из строки начиная с позиции from и устанавливает from за считанным значением function ReadWord(Self: string; var from: integer): string; extensionmethod; /// Преобразует строку в целое -function ToInteger(Self: string): integer; extensionmethod; +function ToInteger(Self: string): integer; extensionmethod := integer.Parse(Self); /// Преобразует строку в BigInteger -function ToBigInteger(Self: string): BigInteger; extensionmethod; +function ToBigInteger(Self: string): BigInteger; extensionmethod := BigInteger.Parse(Self); /// Преобразует строку в вещественное -function ToReal(Self: string): real; extensionmethod; +function ToReal(Self: string): real; extensionmethod := real.Parse(Self, nfi); +/// Преобразует строку в целое и записывает его в value. +///При невозможности преобразования возвращается False +function TryToInteger(Self: string; var value: integer): boolean; extensionmethod := TryStrToInt(Self,value); +/// Преобразует строку в вещественное и записывает его в value. +///При невозможности преобразования возвращается False +function TryToReal(Self: string; var value: real): boolean; extensionmethod := TryStrToReal(Self,value); +/// Преобразует строку в целое +///При невозможности преобразования возвращается defaultvalue +function ToInteger(Self: string; defaultvalue: integer): integer; extensionmethod; +/// Преобразует строку в вещественное +///При невозможности преобразования возвращается defaultvalue +function ToReal(Self: string; defaultvalue: real): real; extensionmethod; /// Преобразует строку в массив слов function ToWords(Self: string; params delim: array of char): array of string; extensionmethod; /// Преобразует строку в массив целых diff --git a/PABCNetHelp/PABCSystemDocGen/PABC2.pas b/PABCNetHelp/PABCSystemDocGen/PABC2.pas index 54815098a..02465de16 100644 --- a/PABCNetHelp/PABCSystemDocGen/PABC2.pas +++ b/PABCNetHelp/PABCSystemDocGen/PABC2.pas @@ -1434,11 +1434,19 @@ function ReadReal(Self: string; var from: integer): real; extensionmethod; /// Считывает слово из строки начиная с позиции from и устанавливает from за считанным значением function ReadWord(Self: string; var from: integer): string; extensionmethod; /// Преобразует строку в целое -function ToInteger(Self: string): integer; extensionmethod; +function ToInteger(Self: string): integer; extensionmethod := integer.Parse(Self); /// Преобразует строку в BigInteger -function ToBigInteger(Self: string): BigInteger; extensionmethod; +function ToBigInteger(Self: string): BigInteger; extensionmethod := BigInteger.Parse(Self); /// Преобразует строку в вещественное -function ToReal(Self: string): real; extensionmethod; +function ToReal(Self: string): real; extensionmethod := real.Parse(Self, nfi); +/// Преобразует строку в целое и записывает его в value.При невозможности преобразования возвращается False +function TryToInteger(Self: string; var value: integer): boolean; extensionmethod := TryStrToInt(Self,value); +/// Преобразует строку в вещественное и записывает его в value.При невозможности преобразования возвращается False +function TryToReal(Self: string; var value: real): boolean; extensionmethod := TryStrToReal(Self,value); +/// Преобразует строку в целоеПри невозможности преобразования возвращается defaultvalue +function ToInteger(Self: string; defaultvalue: integer): integer; extensionmethod; +/// Преобразует строку в вещественноеПри невозможности преобразования возвращается defaultvalue +function ToReal(Self: string; defaultvalue: real): real; extensionmethod; /// Преобразует строку в массив слов function ToWords(Self: string; params delim: array of char): array of string; extensionmethod; /// Преобразует строку в массив целых diff --git a/PABCNetHelp/PABCSystemDocGen/PABCdoc.pas b/PABCNetHelp/PABCSystemDocGen/PABCdoc.pas index 9708fe27b..c3247c9ea 100644 --- a/PABCNetHelp/PABCSystemDocGen/PABCdoc.pas +++ b/PABCNetHelp/PABCSystemDocGen/PABCdoc.pas @@ -1376,11 +1376,19 @@ function ReadReal(Self: string; var from: integer): real; extensionmethod; /// Считывает слово из строки начиная с позиции from и устанавливает from за считанным значением function ReadWord(Self: string; var from: integer): string; extensionmethod; /// Преобразует строку в целое -function ToInteger(Self: string): integer; extensionmethod; +function ToInteger(Self: string): integer; extensionmethod := integer.Parse(Self); /// Преобразует строку в BigInteger -function ToBigInteger(Self: string): BigInteger; extensionmethod; +function ToBigInteger(Self: string): BigInteger; extensionmethod := BigInteger.Parse(Self); /// Преобразует строку в вещественное -function ToReal(Self: string): real; extensionmethod; +function ToReal(Self: string): real; extensionmethod := real.Parse(Self, nfi); +/// Преобразует строку в целое и записывает его в value.При невозможности преобразования возвращается False +function TryToInteger(Self: string; var value: integer): boolean; extensionmethod := TryStrToInt(Self,value); +/// Преобразует строку в вещественное и записывает его в value.При невозможности преобразования возвращается False +function TryToReal(Self: string; var value: real): boolean; extensionmethod := TryStrToReal(Self,value); +/// Преобразует строку в целоеПри невозможности преобразования возвращается defaultvalue +function ToInteger(Self: string; defaultvalue: integer): integer; extensionmethod; +/// Преобразует строку в вещественноеПри невозможности преобразования возвращается defaultvalue +function ToReal(Self: string; defaultvalue: real): real; extensionmethod; /// Преобразует строку в массив слов function ToWords(Self: string; params delim: array of char): array of string; extensionmethod; /// Преобразует строку в массив целых diff --git a/ReleaseGenerators/PascalABCNET_version.nsh b/ReleaseGenerators/PascalABCNET_version.nsh index 2e3127459..fa9d6a836 100644 --- a/ReleaseGenerators/PascalABCNET_version.nsh +++ b/ReleaseGenerators/PascalABCNET_version.nsh @@ -1 +1 @@ -!define VERSION '3.4.0.1727' +!define VERSION '3.4.0.1728' diff --git a/SyntaxVisitors/SugarVisitors/AssignTuplesDesugarVisitor.cs b/SyntaxVisitors/SugarVisitors/AssignTuplesDesugarVisitor.cs index 2ebb9c179..bc466d0c8 100644 --- a/SyntaxVisitors/SugarVisitors/AssignTuplesDesugarVisitor.cs +++ b/SyntaxVisitors/SugarVisitors/AssignTuplesDesugarVisitor.cs @@ -24,6 +24,11 @@ namespace SyntaxVisitors.SugarVisitors return num.ToString(); } + public override void visit(write_accessor_name wn) + { + + } + public override void visit(assign_tuple asstup) { // тут РІРѕР·РјРѕР¶РЅРѕ ошибка более глубокая - РІ semantic_check_sugared_statement_node(asstup) РІРѕР·РјРѕР¶РЅРѕ остаются РІРѕ вложенных лямбдах РґСЂСѓРіРёРµ assign_tuple diff --git a/TestSuite/CompilationSamples/PABCSystem.pas b/TestSuite/CompilationSamples/PABCSystem.pas index 19087ca74..1a780441a 100644 --- a/TestSuite/CompilationSamples/PABCSystem.pas +++ b/TestSuite/CompilationSamples/PABCSystem.pas @@ -353,6 +353,8 @@ type function ReadString: string; /// Возвращает значение типа boolean, введенное РёР· текстового файла function ReadBoolean: boolean; + /// Возвращает слово, введенное РёР· текстового файла + function ReadWord: string; /// Возвращает значение типа integer, введенное РёР· текстового файла, Рё переходит РЅР° следующую строку function ReadlnInteger: integer; /// Возвращает значение типа real, введенное РёР· текстового файла, Рё переходит РЅР° следующую строку @@ -369,6 +371,10 @@ type procedure Write(params o: array of Object); /// Записывает РІ текстовый файл значения Рё переходит РЅР° следующую строку procedure Writeln(params o: array of Object); + /// Записывает РІ текстовый файл значения, разделяя РёС… пробелами + procedure Print(params o: array of Object); + /// Записывает РІ текстовый файл значения, разделяя РёС… пробелами, Рё переходит РЅР° следующую строку + procedure Println(params o: array of Object); /// Возвращает True, если достигнут конец файла, Рё False РІ противном случае function Eof: boolean; /// Возвращает True, если достигнут конец строки, Рё False РІ противном случае @@ -2168,6 +2174,7 @@ const FILE_NOT_OPENED = 'Файл РЅРµ открыт!!File is not opened'; FILE_NOT_OPENED_FOR_READING = 'Файл РЅРµ открыт РЅР° чтение!!File is not opened for reading'; FILE_NOT_OPENED_FOR_WRITING = 'Файл РЅРµ открыт РЅР° запись!!File is not opened for writing'; + READ_LEXEM_AFTER_END_OF_TEXT_FILE = 'Попытка считывания Р·Р° концом текстового файла!!Read after end of text file'; RANGE_ERROR_MESSAGE = 'Выход Р·Р° границы диапазона!!Out of range'; EOF_FOR_TEXT_WRITEOPENED = 'Функция Eof РЅРµ может быть вызвана для текстового файла, открытого РЅР° запись!!Eof function can''t be called for file, opened on writing'; EOLN_FOR_TEXT_WRITEOPENED = 'Функция Eoln РЅРµ может быть вызвана для текстового файла, открытого РЅР° запись!!Eoln function can''t be called for file, opened on writing'; @@ -4359,6 +4366,8 @@ begin repeat i := f.sr.Read(); until not char.IsWhiteSpace(char(i)); // pass spaces + if i=-1 then + raise new System.IO.IOException(GetTranslation(READ_LEXEM_AFTER_END_OF_TEXT_FILE)); c := char(i); var sb := System.Text.StringBuilder.Create; repeat @@ -5351,6 +5360,11 @@ begin Result := PABCSystem.ReadString(Self); end; +function Text.ReadWord: string; +begin + Result := read_lexem(Self); +end; + function Text.ReadBoolean: boolean; begin Result := PABCSystem.ReadBoolean(Self); @@ -5396,6 +5410,23 @@ begin PABCSystem.Writeln(Self, o); end; +procedure Text.Print(params o: array of Object); +begin + foreach var s in o do + PABCSystem.Write(Self, s, ' '); +end; + +procedure Text.Println(params o: array of Object); +begin + if o.Length <> 0 then + begin + for var i:=0 to o.Length-2 do + PABCSystem.Write(Self, o[i], ' '); + PABCSystem.Write(Self, o.Last); + end; + PABCSystem.Writeln(Self); +end; + function Text.Eof: boolean; begin Result := PABCSystem.Eof(Self); @@ -7799,47 +7830,15 @@ begin value := Res; end; -function StrToInt64(s: string): int64; -begin - Result := Convert.ToInt64(s); -end; +function StrToInt64(s: string) := Convert.ToInt64(s); +function StrToReal(s: string) := Convert.ToDouble(s, nfi); +function StrToFloat(s: string) := StrToReal(s); -function StrToFloat(s: string): real; -begin - Result := Convert.ToDouble(s, nfi); -end; - -function StrToReal(s: string) := StrToFloat(s); - -function TryStrToInt64(s: string; var value: int64): boolean; -begin - Result := int64.TryParse(s, value); -end; - -function TryStrToFloat(s: string; var value: real): boolean; -begin - try - Result := True; - value := Convert.ToDouble(s, nfi); - except - value := 0; - Result := False; - end; -end; - -function TryStrToFloat(s: string; var value: single): boolean; -begin - try - Result := True; - value := Convert.ToSingle(s, nfi); - except - value := 0; - Result := False; - end; -end; - -function TryStrToReal(s: string; var value: real) := TryStrToFloat(s, value); -function TryStrToSingle(s: string; var value: single) := TryStrToFloat(s, value); +function TryStrToInt64(s: string; var value: int64) := int64.TryParse(s, value); +function TryStrToReal(s: string; var value: real) := real.TryParse(s,System.Globalization.NumberStyles.Float,nil,value); +function TryStrToSingle(s: string; var value: single) := single.TryParse(s,System.Globalization.NumberStyles.Float,nil,value); +function TryStrToFloat(s: string; var value: real) := TryStrToReal(s, value); +function TryStrToFloat(s: string; var value: single) := TryStrToSingle(s, value); function ReadIntegerFromString(s: string; var from: integer): integer; begin @@ -10189,21 +10188,38 @@ begin end; /// Преобразует строку РІ целое -function ToInteger(Self: string): integer; extensionmethod; -begin - Result := integer.Parse(Self); -end; +function ToInteger(Self: string): integer; extensionmethod := integer.Parse(Self); /// Преобразует строку РІ BigInteger -function ToBigInteger(Self: string): BigInteger; extensionmethod; +function ToBigInteger(Self: string): BigInteger; extensionmethod := BigInteger.Parse(Self); + +/// Преобразует строку РІ вещественное +function ToReal(Self: string): real; extensionmethod := real.Parse(Self, nfi); + +/// Преобразует строку РІ целое Рё записывает его РІ value. +///РџСЂРё невозможности преобразования возвращается False +function TryToInteger(Self: string; var value: integer): boolean; extensionmethod := TryStrToInt(Self,value); + +/// Преобразует строку РІ вещественное Рё записывает его РІ value. +///РџСЂРё невозможности преобразования возвращается False +function TryToReal(Self: string; var value: real): boolean; extensionmethod := TryStrToReal(Self,value); + +/// Преобразует строку РІ целое +///РџСЂРё невозможности преобразования возвращается defaultvalue +function ToInteger(Self: string; defaultvalue: integer): integer; extensionmethod; begin - Result := BigInteger.Parse(Self); + var b := TryStrToInt(Self,Result); + if not b then + Result := defaultvalue end; /// Преобразует строку РІ вещественное -function ToReal(Self: string): real; extensionmethod; +///РџСЂРё невозможности преобразования возвращается defaultvalue +function ToReal(Self: string; defaultvalue: real): real; extensionmethod; begin - Result := real.Parse(Self, nfi); + var b := TryStrToReal(Self,Result); + if not b then + Result := defaultvalue end; /// Преобразует строку РІ массив слов diff --git a/bin/Lib/PABCSystem.pas b/bin/Lib/PABCSystem.pas index 220ac3d6a..1a780441a 100644 --- a/bin/Lib/PABCSystem.pas +++ b/bin/Lib/PABCSystem.pas @@ -353,6 +353,8 @@ type function ReadString: string; /// Возвращает значение типа boolean, введенное РёР· текстового файла function ReadBoolean: boolean; + /// Возвращает слово, введенное РёР· текстового файла + function ReadWord: string; /// Возвращает значение типа integer, введенное РёР· текстового файла, Рё переходит РЅР° следующую строку function ReadlnInteger: integer; /// Возвращает значение типа real, введенное РёР· текстового файла, Рё переходит РЅР° следующую строку @@ -369,6 +371,10 @@ type procedure Write(params o: array of Object); /// Записывает РІ текстовый файл значения Рё переходит РЅР° следующую строку procedure Writeln(params o: array of Object); + /// Записывает РІ текстовый файл значения, разделяя РёС… пробелами + procedure Print(params o: array of Object); + /// Записывает РІ текстовый файл значения, разделяя РёС… пробелами, Рё переходит РЅР° следующую строку + procedure Println(params o: array of Object); /// Возвращает True, если достигнут конец файла, Рё False РІ противном случае function Eof: boolean; /// Возвращает True, если достигнут конец строки, Рё False РІ противном случае @@ -2168,6 +2174,7 @@ const FILE_NOT_OPENED = 'Файл РЅРµ открыт!!File is not opened'; FILE_NOT_OPENED_FOR_READING = 'Файл РЅРµ открыт РЅР° чтение!!File is not opened for reading'; FILE_NOT_OPENED_FOR_WRITING = 'Файл РЅРµ открыт РЅР° запись!!File is not opened for writing'; + READ_LEXEM_AFTER_END_OF_TEXT_FILE = 'Попытка считывания Р·Р° концом текстового файла!!Read after end of text file'; RANGE_ERROR_MESSAGE = 'Выход Р·Р° границы диапазона!!Out of range'; EOF_FOR_TEXT_WRITEOPENED = 'Функция Eof РЅРµ может быть вызвана для текстового файла, открытого РЅР° запись!!Eof function can''t be called for file, opened on writing'; EOLN_FOR_TEXT_WRITEOPENED = 'Функция Eoln РЅРµ может быть вызвана для текстового файла, открытого РЅР° запись!!Eoln function can''t be called for file, opened on writing'; @@ -4359,6 +4366,8 @@ begin repeat i := f.sr.Read(); until not char.IsWhiteSpace(char(i)); // pass spaces + if i=-1 then + raise new System.IO.IOException(GetTranslation(READ_LEXEM_AFTER_END_OF_TEXT_FILE)); c := char(i); var sb := System.Text.StringBuilder.Create; repeat @@ -5351,6 +5360,11 @@ begin Result := PABCSystem.ReadString(Self); end; +function Text.ReadWord: string; +begin + Result := read_lexem(Self); +end; + function Text.ReadBoolean: boolean; begin Result := PABCSystem.ReadBoolean(Self); @@ -5396,6 +5410,23 @@ begin PABCSystem.Writeln(Self, o); end; +procedure Text.Print(params o: array of Object); +begin + foreach var s in o do + PABCSystem.Write(Self, s, ' '); +end; + +procedure Text.Println(params o: array of Object); +begin + if o.Length <> 0 then + begin + for var i:=0 to o.Length-2 do + PABCSystem.Write(Self, o[i], ' '); + PABCSystem.Write(Self, o.Last); + end; + PABCSystem.Writeln(Self); +end; + function Text.Eof: boolean; begin Result := PABCSystem.Eof(Self); diff --git a/bin/PascalABCNET.chm b/bin/PascalABCNET.chm index f3799153f..f6481c479 100644 Binary files a/bin/PascalABCNET.chm and b/bin/PascalABCNET.chm differ