![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
здравствуйте. есть скажем 2 кодировки. как сделать переброс из одной в другую? чтоб в левом окне программы я писал одно а в правом выходило на выбранной кодировке. и обратно. кодировка нестандартная...
в общем что то типа ввожу в левое окно АБВГД а в правом 12345 выводится. чтоб самому можно было настроить таблицы кодировки, то есть самому выбирать какой символ к какому привязывается |
|
#2
|
|||
|
|||
|
Самый очевидный способ - задать таблицу соответствия:
Код:
type TCode = record
decodeChar, encodeChar: Char;
end;
const MAX_SYMBOLS = 27;
var codeTable: array[0..MAX_SYMBOLS - 1] of TCode;и заполнить её: Код:
codeTable[0].decodeChar := 'A'; codeTable[0].encodeChar := '1'; codeTable[1].decodeChar := 'B'; codeTable[1].encodeChar := '2'; и т.д. Останется организовать перехват ввода в левое окно по ивенту onKeyUp. Последний раз редактировалось Delphinaut, 29.01.2016 в 19:00. |
|
#3
|
|||
|
|||
|
еще подсказали такое
Код:
Arr [0..5] of char = ('А', 'Б', 'В', 'Г', 'Д');
//и второй массив, или строки
s1: string = ('АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШ');
s2: string = ('ABCDEFGHIJKLMNOPQRSTUVWXYZ');
...
//обработчик первого TMemo
begin
i:= Pos(Key, s1);
if i>0 then
Memo2.Text := Memo2.Text + s2[i];
end;но. я еле еле в делфи... если вас не затруднит вы не могли бы дать полный текст... форма, на ней 2 мемо... Последний раз редактировалось Admin, 29.01.2016 в 19:08. |
|
#4
|
||||
|
||||
|
Развлекайтесь:
Код:
unit Unit8;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm8 = class(TForm)
Memo1: TMemo;
Memo2: TMemo;
CodeTable: TRadioGroup;
procedure Memo1Change(Sender: TObject);
procedure CodeTableClick(Sender: TObject);
private
public
{ Public declarations }
end;
const
ACodeTable: Array[0..1,1..33,1..2] of String = ((('а','a'),('б','b'),('в','v'),('г','g'),('д','d'),('е','e'),('ё','jo'),('ж','zh'),
('з','z'),('и','i'),('й','j'),('к','k'),('л','l'),('м','m'),('н','n'),
('о','o'),('п','p'),('р','r'),('с','s'),('т','t'),('у','uh'),('ф','f'),
('х','h'),('ц','ch'),('ч','ch'),('ш','sh'),('щ','shh'),('ъ','#'),('ы','y'),
('ь',''''),('э','je'),('ю','ju'),('я','ja')),
(('а','ka'),('б','zu'),('в','ru'),('г','ji'),('д','te'),('е','ku'),('ё','ku'),('ж','su'),
('з','z'),('и','ki'),('й','ki'),('к','me'),('л','ta'),('м','rin'),('н','to'),
('о','mo'),('п','no'),('р','shi'),('с','ari'),('т','chi'),('у','do'),('ф','lu'),
('х','ri'),('ц','mi'),('ч','ke'),('ш','hi'),('щ','hi'),('ъ',''),('ы',''),
('ь','zuk'),('э','mei'),('ю','fu'),('я','na')));
var
Form8: TForm8;
implementation
{$R *.dfm}
procedure TForm8.CodeTableClick(Sender: TObject);
begin
Memo1Change(Memo1)
end;
procedure TForm8.Memo1Change(Sender: TObject);
Var i,j: Integer;
EncodeText: String;
Skipped: Boolean;
begin
if Sender = Memo1
then begin
EncodeText := '';
for i := 1 to Length(Memo1.Text)
do begin
Skipped := True;
for j := 1 to Length(ACodeTable[CodeTable.ItemIndex])
do if Memo1.Text[i] = ACodeTable[CodeTable.ItemIndex,j, 1]
then begin
EncodeText := EncodeText + ACodeTable[CodeTable.ItemIndex, j, 2];
Skipped := False;
Break;
end;
if Skipped
then EncodeText := EncodeText + Memo1.Text[i];
end;
Memo2.Text := EncodeText;
end
else begin
end;
end;
end.Код:
object Form8: TForm8
Left = 0
Top = 0
Caption = 'Form8'
ClientHeight = 339
ClientWidth = 584
Color = clBtnFace
DoubleBuffered = True
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object Memo1: TMemo
Left = 8
Top = 47
Width = 568
Height = 138
TabOrder = 0
OnChange = Memo1Change
end
object Memo2: TMemo
Left = 8
Top = 191
Width = 568
Height = 138
Lines.Strings = (
'')
TabOrder = 1
end
object CodeTable: TRadioGroup
Left = 8
Top = 0
Width = 153
Height = 41
Caption = #1042#1099#1073#1086#1088' '#1082#1086#1076#1080#1088#1086#1074#1082#1080
Columns = 2
ItemIndex = 0
Items.Strings = (
'Translit'
#1071#1087#1086#1085#1089#1082#1080#1081)
TabOrder = 2
OnClick = CodeTableClick
end
end |
|
#5
|
|||
|
|||
|
спасибо... а как сделать чтоб пробелы еще делались? а то в одном окне делаешь пробел во втором не делается... и копирование вставка тоже не работает
|
|
#6
|
||||
|
||||
|
Видимо скопировали что-то с ошибками. У меня пробелы и любые символы нормально добавляются, как собственно и вставка из буфера.
|