- Код: Выделить всё
uses LConvEncoding, LazUTF8;
{$R *.lfm}
{ TForm1 }
procedure TForm1.Button1Click(Sender: TObject);
var Fout : TextFile;
myStr : String;
begin
AssignFile(Fout,'D:\Laz_project\Test-codepage\aaa.txt');
Rewrite(Fout);
myStr := 'Primer stroki Пример строки';
WriteLn(Fout,'----------> ' + myStr);
WriteLn(Fout,'UTF8ToSys-> ' + UTF8ToSys(myStr) );
WriteLn(Fout,'UTF8ToCP1251-> ' + UTF8ToCP1251(myStr) );
WriteLn(Fout,'UTF8ToConsole->' + UTF8ToConsole(myStr) );
CloseFile(Fout);
end;
Компилировалась и исполнялась под операционной системой Windows 8.1 с помощью:
1) Lazarus 1.6.2 + Fpc 3.0.0 -Официальный дистрибутив с официального сайта.
2) Lazarus 1.7 + Fpc 3.1.1 - скаченные и откомпилированные с SVN серверов версии (ревизии) от 2.02.2017
3) CodeTyphon ver 5.5 + Fpc 3.1.1 который в комплекте
4) CodeTyphon ver 5.9 + Fpc 3.1.1 который в комплекте
Получился файл в 1, 2, 4 случае если открывать его в кодировке 1251 (редактором "блокнот")
----------> Primer stroki Пример строки
UTF8ToSys-> Primer stroki Пример строки
UTF8ToCP1251-> Primer stroki Пример строки
UTF8ToConsole->Primer stroki Пример строки
Т.е. UTF8ToSys, и UTF8ToConsole не сработало, зато сработало UTF8ToCP1251
в 3 случае получилось
----------> Primer stroki Пример строки
UTF8ToSys-> Primer stroki Пример строки
UTF8ToCP1251-> Primer stroki Пример строки
UTF8ToConsole->Primer stroki ЏаЁ¬Ґа бва®ЄЁ
Т.е. UTF8ToSys, и UTF8ToConsole в этом случае сработало, зато не сработало UTF8ToCP1251
(прим ЏаЁ¬Ґа бва®ЄЁ это Пример строки в кодировке 866 - проверено)
Почему так ??? почему не работают UTF8ToSys, UTF8ToConsole, UTF8ToCP1251 все вместе...
Что у кого получается при таких экспериментах ???
Кстати, есть небольшой проектик где используется ZeosDB база данных firebird и если явно не указать в настоечном файле где хранится база данных, то она ищется в каталоге с exe-шкой так вот, если этот проект откомпилировать CodeTyphon ver 5.5 + Fpc 3.1.1 который в комплекте то программа работает в каком бы каталоге не находилась программа с базой данных. А вот с другими перечисленными компиляторами, только если в по пути в котором нет русских букв.