ЕЕ
Евгений Ефремов

Как исправить отображение русских символов в Lazarus

Создал программу для шифрования текста. При работе с английскими символами все хорошо, но если вводить русские символы, то вместо зашифрованного текста отображаются вопросительные знаки. Если поместится, размещу исходный код.
unit Unit1;

{$mode objfpc}{$H+}

interface

uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
Menus;

type

{ TForm1 }

TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.Button2Click(Sender: TObject);
begin
close;
end;

procedure TForm1.Button1Click(Sender: TObject);
var ent,ex,key,keywrk,al:string;
nent,nkw,nal,k,i,j,n:integer;
begin
al:='АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя';
ent:=edit1.text;
key:=edit2.text;
keywrk:=key;
nent:=length(ent);
ex:=ent;
nal:=length(al);
repeat keywrk:=keywrk+key
until length(keywrk)>=nent;
for k:=1 to nent do
if ent[k]=' ' then ex[k]:=' '
else
begin;
i:=0;
repeat
i:=i+1
until al=ent[k];
j:=0;
repeat
j:=j+1;
until al[j]=keywrk[k];
n:=i+j-1;
if n>nal then n:=n-nal;
ex[k]:=al[n];
end;
edit3.text:=ex;

end;

end.

P.S. Исходная кодировка в Lazarus - UTF8

Извиняюсь за отсутствие оформления (при вставке табуляция убралась)

Вл
Владимир

помоему нужно в начале объявить поддержку кириллицы

ОК
Ольга Криницкая

Не совсем понял, зачем отображать зашифрованное сообщение.
Теперь про кодировки: В UTF-8 английские буквы занимают 1 байт, а русские - 2 или 3 байта. Если обращаешься к строке побайтно, то надо это учитывать.
При этом там довольно хитрое кодирование символов, и если после перекодировки получается некорректное значение, то при выводе на экран эти символы заменяются вопросами.
Самый простой способ работы со строками - конвертировать их сначала в unicode, а после шифрования конвертить обратно в UTF-8

Похожие вопросы
проблема с отображением символов в worldpad
Где можно скачать Sockets для Lazarus
База данных для lazarus
Помогите с Lazarus!!!
lazarus где ошибка ???
Некорректное отображение Youtube. Как исправить ?
Проблема с отображением кириллических символов. Что делать?
Создание кнопок, Lazarus
Проблема с mysql (lazarus)
Как исправить проблемы с отображением страниц?