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

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

Как при перекодировке из 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)


Наверх

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