Функция не работает!
Данная программа выдает ошибку, связанную с функцией, помогите разобраться, подобный код запускал в PascalABC, всё работает нормально, Делфи же что-то не нравится!
Код:
unit UnitMain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, XPMan;
type
TFormMain = class(TForm)
LabeledEdit_Source: TLabeledEdit;
LabeledEdit_Result: TLabeledEdit;
Button_Encode: TButton;
Button_Decode: TButton;
XPManifest: TXPManifest;
procedure Button_EncodeClick(Sender: TObject);
procedure Button_DecodeClick(Sender: TObject);
private
function Encode(c: Char): Char;
function Decode(c: Char): Char;
{ Private declarations }
public
{ Public declarations }
end;
var
FormMain: TFormMain;
implementation
{$R *.dfm}
const
ij: array[1..8,1..8] of Char =
(('Б', 'б', 'Н', 'н', 'Е', 'е', 'О', 'о'),
('Ь', 'ь', 'Г' ,'г', '3', 'з', 'Й', 'й'),
('М', 'м', 'С', 'с', 'У', 'у', 'X', 'х'),
('Ч', 'ч', 'Щ', 'щ', 'Ъ', 'ъ', 'Ю', 'ю'),
('А', 'а', 'Д', 'д', 'Р', 'р', 'Л', 'л'),
('В', 'в', 'Ж' ,'ж', 'и', 'и', 'К', 'к'),
('П', 'п', 'Т', 'т', 'Ф', 'ф', 'Х', 'х'),
('Ш', 'ш', 'Ы', 'ы', 'Э', 'э', 'Я', 'я'));
Marks: set of char = ['.', ',', '!', '?', ':', ';', '(', ')', '"', 'ё', 'Ё', '-'];
var Text: String; k: Integer;
function TFormMain.Encode(c: Char): Char;
var
i,j: Integer;
begin
for i:=1 to 8 do
for j:=1 to 8 do
if (c = ij[i,j]) then
begin
if (i <> 8)
then Encode := ij[i+1,j]
else Encode := ij[1,j];
end;
if (c in Marks) then Encode := c;
end;
function TFormMain.Decode(c: Char): Char;
var
i,j: Integer;
begin
for i:=1 to 8 do
for j:=1 to 8 do
if (c = ij[i,j]) then
begin
if (i <> 1)
then Decode := ij[i-1,j]
else Decode := ij[8,j];
end;
if (c in Marks) then Decode := c;
end;
procedure TFormMain.Button_EncodeClick(Sender: TObject);
begin
Text := LabeledEdit_Source.Text;
for k := 1 to Length(Text) do Text[k] := Encode(Text[k]);
LabeledEdit_Result.Text := Text;
end;
procedure TFormMain.Button_DecodeClick(Sender: TObject);
begin
Text := LabeledEdit_Source.Text;
for k := 1 to Length(Text) do Text[k] := Decode(Text[k]);
LabeledEdit_Result.Text := Text;
end;
end.
Админ: Пользуемся тегами для оформления кода!
А вот ошибка: [Error] UnitMain.pas: Left side cannot be assigned to
Возникает в двух местах, я их подчеркнул!
Последний раз редактировалось Admin, 16.02.2012 в 20:50.
|