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

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

Проблемы с кодировкой. [XP]


programmer90 ©   (2008-09-10 12:33:00) 

Здравствуйте уважаемые мастера. Ох уж эти кодировки....
Проблема такова при копировании из мемо в буфер обмена, и при вставке   например в блокнот, русские буквы неверно отображаются.
А точно чнаю что надо перекодировать, даже знаю откуда куда из Win1251 в Dos 866.
Так вот до того как возникла эта трабла, я использовал такой код
PChr := Memo[AdvPageControl1.ActivePageIndex].Lines.GetText;
 AnsiToOem(Pchr,Pchr);
 Memo[AdvPageControl1.ActivePageIndex].Lines.Text := StrPas(Pchr);
 memo[AdvPageControl1.ActivePageIndex].Lines.SaveToFile('C:\Progra~1\FPSE\Project s\file.pas');
 ShellExecute(Handle,'open','cmd','/c  C:\Progra~1\FPSE\bin\i386-win32\fpc C:\Progra~1\FPSE\Projects\file.pas >C:\Progra~1\FPSE\Projects\file.err   && cls && c:\progra~1\fpse\projects\file.exe && pause',nil,1);
  PChr := Memo[AdvPageControl1.ActivePageIndex].Lines.GetText;
 OemTOAnsi(Pchr,Pchr);
 Memo[AdvPageControl1.ActivePageIndex].Lines.Text := StrPas(Pchr);
Этот код был специально написан чтобы привыполнении  16-битных програм через командную строку Русские буквы правильно отображались. После того как я приминил этот код , вдруг почему-то буфер обмена стал глючить.Как это исправить?
Заранее спс.


Anatoly Podgoretsky   (2008-09-10 14:19:00) [1]

> programmer90  (10.09.2008 13:34:14)  [14]

А кого интересует буфер обмена в свете AnsiToOem


Правильный$Вася   (2008-09-10 14:10:00) [2]


> Они находятся в разных обработчиках..

и что?
какой из них раньше выполняется? может, он и портит?


programmer90   (2008-09-10 13:36:00) [3]


> это до твоей перекодироки из [0] или после?

Они находятся в разных обработчиках.... но если вы о том где эти обработчики находятся , то  копирование находится выше


programmer90   (2008-09-10 13:34:00) [4]


> AnsiToOem - For compatibility with 16-bit versions of Windows

Я убедился что компатибельность к буферу обмена не относится)))


Anatoly Podgoretsky   (2008-09-10 13:30:00) [5]

> programmer90  (10.09.2008 12:33:00)  [0]

AnsiToOem - For compatibility with 16-bit versions of Windows


programmer90   (2008-09-10 13:29:00) [6]


> [11]

помогло. большое спасибо.


Amoeba   (2008-09-10 13:22:00) [7]

Проблемы копирования русского текста в clipboard и обратно:
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=780


Правильный$Вася   (2008-09-10 13:12:00) [8]


> memo[advpagecontrol1.ActivePageIndex].CopyToClipBoard;Вот
> обращение.

это до твоей перекодироки из [0] или после?


programmer90   (2008-09-10 13:08:00) [9]

Да кстати при сохрании  мемо в файл, всё нормально.
Я проверил сохранил файл на диске .Поэтому я думаю что проблемы именно с буфером обмена...


programmer90   (2008-09-10 13:05:00) [10]

Да  и в блокноте и мемо оба кириллические. Я там пытался изменить на другие чарсеты, эффекта нет.


programmer90   (2008-09-10 13:03:00) [11]

Я пытался  так сделать

PChr := Memo[AdvPageControl1.ActivePageIndex].Lines.GetText;
AnsiToOem(Pchr,Pchr);{OemToAnsi(Pchr,Pchr);}
Memo[AdvPageControl1.ActivePageIndex].Lines.Text := StrPas(Pchr);
memo[advpagecontrol1.ActivePageIndex].CopyToClipBoard;

Но это не помогло...
Если какие-нибудь средства для работы с буфером обмена, например изменить текстовую информацию ?


brother   (2008-09-10 13:00:00) [12]

> Кажется

когда кажется - крестятся. если точно?


programmer90   (2008-09-10 12:59:00) [13]


> charset у шрифта того, куда копируешь, какой?

Кажется кириллический....


clickmaker   (2008-09-10 12:52:00) [14]

> [3] programmer90   (10.09.08 12:43)

charset у шрифта того, куда копируешь, какой?


programmer90   (2008-09-10 12:43:00) [15]


> где в коде обращение к буферу обмена?

memo[advpagecontrol1.ActivePageIndex].CopyToClipBoard;
Вот обращение.
Код которы был указан в [0] это вроде не имеет прямого отношения к копрованию, это совсем другое событие, просто я уверен что это и явилось причиной....
> что значит "буфер обмена стал глючить"?

Это означает что  копируем это:
begin
writeln('Привет');
End.
,а получаем это:
begin
writeln('Ïðèâåò');
End.


Правильный$Вася   (2008-09-10 12:41:00) [16]

1. The caller is responsible for freeing the returned value using the StrDispose procedure.
2. не вижу использования буфера обмена


clickmaker   (2008-09-10 12:38:00) [17]

где в коде обращение к буферу обмена?
что значит "буфер обмена стал глючить"?


Наверх

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