Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проблемы с ;КОДИРОВКОЙ ; текста ; !!! ; ;- ;как изменить её ???


KvORubin ©   (2002-04-23 18:53:00) 

У меня есть вот такой вопрос:
Попробуйте в TheBate изменить кодировку, скопировать текст
и вставить его в TMemo1 или TRichEdit1 и прочитать текст.

Как изменить charset так, чтоб можно было прочитать содержимое???

Все мои попытки сделать это не дали результатов, я пробовал изменить
шрифты и попереберать значения charset - никаких положительных
результатов к сожалению это не дало.

Что делать, каким образом TheBat меняет кодировку ???

Допустим в TRichEdit1 попал текст с другой кодировкой или
же пришло почтовое сообщение в другой кодировке, что нужно сделать
для того, чтоб прочитать этот текст ???


Chris   (2002-04-24 13:45:00) [1]

Могу предложить свой вариант.

Скопировать текст из письма в Memo1 и поиграться кодировками...

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, ClipBrd;

type
TForm1 = class(TForm)
GroupBox1: TGroupBox;
Splitter1: TSplitter;
GroupBox2: TGroupBox;
Button1: TButton;
Button2: TButton;
Memo1: TMemo;
Memo2: TMemo;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
Label1: TLabel;
ComboBox1: TComboBox;
ComboBox2: TComboBox;
Label2: TLabel;
procedure MSplitter1(Sender: TObject);
procedure FormReSize(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Memo1Change(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure ComboBox2Change(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.MSplitter1(Sender: TObject);
begin
if GroupBox1.Width<Splitter1.MinSize then
GroupBox1.Width:=Splitter1.MinSize;
FormReSize(Self);
end;

procedure TForm1.FormReSize(Sender: TObject);
begin
Button1.Width:=GroupBox1.Width-16;
Button2.Width:=GroupBox2.Width-16;
Memo1.Width:=GroupBox1.Width-16;
Memo1.Height:=GroupBox1.Height-Memo1.Top-8;
Memo2.Width:=GroupBox2.Width-16;
Memo2.Height:=GroupBox2.Height-Memo1.Top-8;
Label1.Left:=Splitter1.Left+5;
ComboBox1.Left:=Splitter1.Left+3;
Label2.Left:=Splitter1.Left+5;
ComboBox2.Left:=Splitter1.Left+3;
end;

procedure TForm1.FormCreate(Sender: TObject);
var s: string;
i: integer;
begin
Button1.Caption:="Открыть";
Button2.Caption:="Сохранить в буфер";
Button2.Enabled:=False;
ComboBox1.Items.Clear;
ComboBox1.Items.Add("Windows-1251");
ComboBox1.Items.Add("KOI8-R");
ComboBox2.Items.Assign(ComboBox1.Items);
if ParamCount>0 then
begin
s:="";
for i:=1 to ParamCount do
s:=s+" "+ParamStr(i);
Delete(s,1,1);
OpenDialog1.FileName:=s;
Button1.Caption:="Файл: "+s;
Memo1.Lines.LoadFromFile(s);
end;
end;

const
Codirovka: array [0..1] of string = (
//Win
"?ЁёАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя",
//Koi8-r
"ёЁ?юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ"
);
procedure TForm1.Memo1Change(Sender: TObject);
var i: integer;
begin
Memo2.Lines.Clear;
for i:=1 to length(Memo1.Text) do
if pos(Memo1.Text[i],Codirovka[ComboBox1.ItemIndex])>0 then
Memo2.Text:=Memo2.Text+Codirovka[ComboBox2.ItemIndex][pos(Memo1.Text[i],Codirovka[ComboBox1.ItemIndex])]
else
Memo2.Text:=Memo2.Text+Memo1.Text[i];
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
Memo1.Lines.LoadFromFile(OpenDialog1.FileName);
end;

procedure TForm1.ComboBox2Change(Sender: TObject);
begin
Memo1Change(Self);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
ClipBoard.AsText:=Memo1.Text;
end;

end.


Anatoly Podgoretsky   (2002-04-24 13:41:00) [2]

На моем сайте есть и перекодировщик и некоторые таблицы, как правило их хватает


KvORubin   (2002-04-24 13:33:00) [3]

ну как это сделать???


KvORubin   (2002-04-23 19:21:00) [4]

Да, у меня была такая таблица, я её потерял,, может есть у кого такая таблица, которая переведёт любую кодировку в удобоваримочитаемую ???


Cobalt   (2002-04-23 18:57:00) [5]

Нужно вручную (используя таблицы перекодировок) переводить каждый символ (ты смотришь, как правило, в кодировке Win1251).
Откуда брать таблицы перекодировок - этого я не знаю ;(


Наверх

Титульная страница Поиск, карта сайта Написать письмо