![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как при перекодировке из Win 1251 в KOI8 избавиться от значений? [D7, XP]
Mark86rus © (2006-04-28 17:55:00)дело состоит вот в чем! Я при помощи TcpClient1 забираю информацию с сервера, она на нем хранится в кодировке Win 1251! Перекодировку в KOI8 я сделал, но в конце текста есть три знака ентера! Внимание вопрос: "Как избаиться от этих ентеров???"
KilkennyCaT (2006-04-29 21:26:00) [1]кавычки лишние, а вот пожалуйстанехватает...
Mark86rus (2006-04-29 21:22:00) [2]раз такие "умные" тоды свои коды прилагайти, а то воздух портить много ума не надо!
ЛшдлуттнСфе (2006-04-29 21:13:00) [3]что в лоб, что по лбу...
Mark86rus (2006-04-29 21:04:00) [4]Ладно ладно уговорили!
memo1.Text:=KoiToWin(memo1.Lines.Strings[0]);
так вся строчка и обновляется!
ЛшдлуттнСфе (2006-04-29 20:50:00) [5]
> [5] Desdechado © (29.04.06 20:43)
и не говори... особенно понравилось бесконечное конвертирование всего мемо, вместо конвертирования лишь новой строки...
Desdechado (2006-04-29 20:43:00) [6]зашибись...
Mark86rus (2006-04-29 00:36:00) [7]Все сделал! вот такую строку надо было
Memo1.Text:=copy(memo1.text, 0, length(memo1.text)-5);
,где -5 в моем случае срезание с конца 3-х "ентеров"!!!
всем кто помогал спасибо!
тему мона закрывать!
Mark86rus (2006-04-28 19:11:00) [8]где именно это выполнить?
//--------------------------------
type
TConvertChars = array[ #128..#255] of char;
TForm1 = class(TForm)
TcpClient1: TTcpClient;
Memo1: TMemo;
Timer1: TTimer;
procedure Timer1Timer(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
const
Koi: Array[0..66] of Char = ('T', 'Ё', 'ё', 'А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ж',
'З', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р',
'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ъ',
'Ы', 'Ь', 'Э', 'Ю', 'Я', 'а', 'б', 'в', 'г', 'д',
'е', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о',
'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш',
'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я');
Win: Array[0..66] of Char = ('ё', 'Ё', 'T', 'ю', 'а', 'б', 'ц', 'д', 'е', 'ф',
'г', 'х', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п',
'я', 'р', 'с', 'т', 'у', 'ж', 'в', 'ь', 'ы', 'з',
'ш', 'э', 'щ', 'ч', 'ъ', 'Ю', 'А', 'Б', 'Ц', 'Д',
'Е', 'Ф', 'Г', 'Х', 'И', 'Й', 'К', 'Л', 'М', 'Н',
'О', 'П', 'Я', 'Р', 'С', 'Т', 'У', 'Ж', 'В', 'Ь',
'Ы', 'З', 'Ш', 'Э', 'Щ', 'Ч', 'Ъ');
implementation
{$R *.dfm}
Function KoiToWin(Str: string): string;
var
i, j, Index: Integer;
Begin
Result := '';
For i := 1 to Length(Str) do
Begin
Index := -1;
For j := Low(Win) to High(Win) do
If Koi[j] = Str[i] Then
Begin
Index := j;
Break;
End;
If Index = -1
Then Result := Result + Str[i]
Else Result := Result + Win[Index];
End;
End;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
TcpClient1.connect;
memo1.Lines.Clear;
memo1.Lines.Add(TcpClient1.Receiveln(#13#10));
memo1.Text:=KoiToWin(memo1.Text);
TcpClient1.Disconnect;
end;
end.
Desdechado (2006-04-28 18:57:00) [9]Trim до перекодировки
AlexanderMS (2006-04-28 18:38:00) [10]
> "Как избаиться от этих ентеров???"
Каких "ентеров"?
Просто "#13" или с переводом каретки ("#13#10")?
В любом случае так:
Delete(строка, начало удаления, кол-во символов).
Для первого:
Delete(строка, length(строка) - 3, 3)
Для второго:
Delete(строка, length(строка) - 6, 6)