Речь шла о том, что совместимость стараются обеспечить. А Word и Excel - это возражение на то, что кириллица в файлах не важна.
Подсказка по точке всё равно считает, что это функция.
Это уже проблема IDE а не компилятора - она отдельно.
О цикле loop не написано, что он не выполняется, если количество выполнений > integer.Maxvalue.
Зачем пробел после каждой суррогатной пары при выводе в консоль?
Думаю, теперь это вопрос к Майкрософту. Дефолтный вывод в консоль переключили в UTF-8 стандартными средствами .NET, а уж насколько корректно его интерпретирует сама консоль – нюансы внутренней реализации ОС.
Из этой программы можно скопировать суррогатную пару до и после вывода пробела:
## var a := Arr($D800, $DC00, $8, ' '.Code);
foreach var i in a do
begin
Write(char(i));
Console.ReadKey(true);
end;
Тут — сравнение строк:
## var s1:='𐀀'; // до
var s2:='𐀀'; // после
Write(s1=s2); // True
Тут — сравнение кодов:
## var a := Arr($D800, $DC00); // до
var s1 := '𐀀'; // после
var a2 := new integer[s1.Length];
for var i := 1 to s1.Length do
a2[i - 1] := Ord(s1[i]);
var b := true;
if (a.Length <> a2.Length) then
b := false
else
for var i := 0 to a.Length - 1 do
if (a[i] <> a2[i]) then
b := false;
Write(b); // True
Тут — проверка, что это 2 символа в UTF-16:
## var s1 := '𐀀';
Write(char.IsSurrogatePair(s1, 0)); // True
Значит, в буфере консоли символы хранятся в UTF-32? Предлагаю добавить тип символа в UTF-32, чтобы было удобнее обрабатывать символы перед выводом в консоль.
Неудобство проявляется, например, в случае, когда нужно запомнить, в какой позиции какой символ находится в буфере консоли, а потом — изменить все пробелы в некотором участке на другие символы. Если на месте пробела будет нижняя часть суррогатных пар, это место не изменится.
При форматировании ## var s := '𐀀';
появляется неожиданный символ.
Может даже идея хорошая, но сначала подумайте куда и как их добавить? А то по моему вы опять предлагаете не то не там…
Ну а для этого есть issue IDE.
Мы перешли на UTF-8 в консольном выводе. Это где такое происходит - в какой операционке? И приведите программу.
И - это консоль или окно PascalABC.NET?
Зачем?
По остальному: это консоль, операционка — win 7 sp1.
Код простейший из возможных:
## writeln('мелкософт');
В Win 10 64-бит работает нормально, но наверно неправильно по умолчанию ориентироваться на Win 10…
Плохо. Надо возвращать назад
Если оставить старое 1251, то на нерусской Win 10 вопросики в консоли. Как раз у нас в дисплейных классах. Вот в чем проблема.
А это у Вас только при запуске по Shift-F9? В окне Паскаля всё нормально?
Залил. Проверяйте
Всё нормально, спасибо ещё раз
Предлагаю добавить возможность изменять путь сохранения файлов по умолчанию в самой программе, а не только при установке
Если вы создадите ярлык PascalABC.NET в некоторой папке, то путь сохранения файлов будет как раз в этой папке.