В версии Lazarus 0.9.26, не удаётся инвертировать строки, содержащие русскую раскладку. В версии Lazarus 0.9.24 подобной проблемы не было.
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs,
StdCtrls, Buttons;
type
{ TForm1 }
TForm1 = class(TForm)
BitBtn1: TBitBtn;
Label1: TLabel;
label2: TLabel;
procedure BitBtn1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
procedure InvertString(var InputSTR, OutputSTR: string);
end;
var
Form1: TForm1;
s, s1: UTF8String;
implementation
{ TForm1 }
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
InvertString(s, s1);
label2.Caption:=s1;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
s:=''; s1:='';
s:= AnsiToUtf8(inputbox('Введите строчку для инвертирования', 'Ваша строка:', ''));
label1.Caption:= Utf8ToAnsi(s);
end;
procedure TForm1.InvertString(var InputSTR, OutputSTR: string);
var i, j, k :integer;
b :string;
begin
i:=1; j:=0; k:=0; OutputSTR:='';
b:=InputSTR;
for i:=1 to length(InputSTR) do j:=j+1;
for k:=j downto 1 do
OutputSTR:=OutputSTR+b[k];
end;
initialization
{$I unit1.lrs}
end.
Алгоритм этот ранее я подвязывал, чтобы имя файла узнавать при выборе его через OpenDialog, до 1-ого "\" символы в строке считал. А теперь пути Windows, содержащие русские символы не работают. *DONT_KNOW*
|