![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблемы с кодировкой. [XP]
programmer90 © (2008-09-10 12:33:00)Здравствуйте уважаемые мастера. Ох уж эти кодировки....
Проблема такова при копировании из мемо в буфер обмена, и при вставке например в блокнот, русские буквы неверно отображаются.
А точно чнаю что надо перекодировать, даже знаю откуда куда из Win1251 в Dos 866.
Так вот до того как возникла эта трабла, я использовал такой код
PChr := Memo[AdvPageControl1.ActivePageIndex].Lines.GetText;Этот код был специально написан чтобы привыполнении 16-битных програм через командную строку Русские буквы правильно отображались. После того как я приминил этот код , вдруг почему-то буфер обмена стал глючить.Как это исправить?
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);
Заранее спс.
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]где в коде обращение к буферу обмена?
что значит "буфер обмена стал глючить"?