Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.11.11;
Скачать: CL | DM;

Вниз

"Кракозябры" при вставке из буфера   Найти похожие ветки 

 
allrussia ©   (2007-10-08 14:48) [0]

1. Создаю новый проект, кидаю на форму memo или edit
2. Пишу там некоторые строки на русском языке
3. Запускаю проект, выделяю текст
4. Копирую выделенный текст из memo или edit в буфер
5. Вставляю в word, блокнот или адресную строку explorer

Вижу кракозябры ?!

При этом заметил одну особенность: если переключить расклыдку на русский, то все кoпируется ОК. Раньше такого не было. Глюк delphi или ОС?


 
clickmaker ©   (2007-10-08 15:04) [1]

копируй в unicode


 
vpbar ©   (2007-10-08 15:10) [2]

Кажется ОС. Ты из одного блокнота в другой скопируй, если в них языки разные.
Кстати а как это вылечить для всей системы сразу? Кто нибудь знает?


 
Gydvin ©   (2007-10-08 15:16) [3]


> копируй в unicode

Пытался я лечить эту штуку ткам образом. При англиской раскладке, русский текст конвертит не корректно. Та же ерунда.


 
clickmaker ©   (2007-10-08 15:18) [4]


> [3] Gydvin ©   (08.10.07 15:16)

а как конвертил?


 
Gydvin ©   (2007-10-08 15:28) [5]

Я не в буфер обмена копировал а в html файл в utf8 коды. Если на русской раскладке конфертишь при просмотре в браузере - все нормально, если на английской - те же крякозябры


 
Grom PE ©   (2007-10-08 15:33) [6]

> vpbar ©   (08.10.07 15:10) [2]
> как это вылечить для всей системы сразу?


Насколько я помню, так:
Запускаем regedit, заходим в
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage
и исправляем значение ключа "1252" с "c_1252.nls" на "c_1251.nls".
После этого перезагружаемся. Проблем не замечал.


 
allrussia ©   (2007-10-08 15:35) [7]

2clickmaker
- копируй в unicode

- требуется копировать Ctrl+C стандартно зачем гимор изобретать

2vpbar
- Из одного блокнота в другой все нормально...


 
vpbar ©   (2007-10-08 15:37) [8]

>>Grom PE ©   (08.10.07 15:33) [6]
Встречал такое решение. Только не помню пробовал или нет. Но помню что его ругали, причем кажется на этом форуме.
ЗЫ. Как будет возможность перегрузиться - попробую.


 
Хельг ©   (2007-10-08 15:37) [9]

Лечица это так:
заходите в реестр, ищете ветку
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Nls\CodePage]

и устанавливаем значения параметров "1250" "1251" "1252" "1253" равными "c_1251.nls"


 
Desdechado ©   (2007-10-08 15:41) [10]

> Глюк delphi или ОС?
Это не глюк, это фича. Появилась в WinXP SP2.

Вот так [9] не делай, не сможешь работать с европейскими языками.


 
Anatoly Podgoretsky ©   (2007-10-08 16:07) [11]

> vpbar  (08.10.2007 15:37:08)  [8]

Решение [6] и [9] это диверсия.


 
Gydvin ©   (2007-10-08 16:17) [12]


> Это не глюк, это фича. Появилась в WinXP SP2.

Да не, гораздо раньше


 
allrussia ©   (2007-10-08 16:18) [13]

2Grom PE, 2Хельг

Спасибо, помогло.

Setup.reg

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage]
"1250"="c_1251.nls"
"1251"="c_1251.nls"
"1252"="c_1251.nls"
"1253"="c_1251.nls"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontSubstitutes]
"System,0"="Arial,204"
"Fixedsys,0"="Fixedsys,204"
"Small Fonts,0"="Small Fonts,204"
"MS Serif,0"="MS Serif,204"
"MS Sans Serif,0"="MS Sans Serif,204"
"Courier,0"="Courier New,204"
"Arial Cyr,0"="Arial,204"
"Courier New Cyr,0"="Courier New,204"
"Times New Roman Cyr,0"="Times New Roman,204"
"Helv,0"="MS Sans Serif,204"
"Tms Rmn,0"="MS Serif,204"
"Arial,0"="Arial,204"


 
vpbar ©   (2007-10-08 16:22) [14]

>>Anatoly Podgoretsky ©   (08.10.07 16:07) [11]
Значит точно тут ругали это решение :)
А не знаете как решить без диверсий?


 
Вася Правильный   (2007-10-08 16:41) [15]


> Лечица это так:

одно лечим, другое калечим

- Лечу от всех болезней.
- Ну-ну, от всех не улетишь.


 
clickmaker ©   (2007-10-08 17:01) [16]


> [13] allrussia ©   (08.10.07 16:18)

ну... для дома-для семьи, оно может и решение. Только какого-нить грека или немца за комп не пускай )


 
MetalFan ©   (2007-10-08 20:22) [17]

[11],[16] +1!
решение было у меня такое:
 function SetClipboardText( const AText: string ): Boolean;
 var
   h:THandle;
 begin
   Clipboard.Open;
   Clipboard.AsText := AText;
   h := Clipboard.GetAsHandle(CF_TEXT);
   SetClipboardData(CF_LOCALE, h);
   Clipboard.Close;
 end;


 
Dib@zol ©   (2007-10-08 20:34) [18]

Вот. Моё целиком, поятому возможно где-то накосячил. Однако меня никогда не подводило.

procedure PutToClipboard(S:string);
var
 L : Cardinal;
 H : HGLOBAL;
 P : Pointer;
 C : PChar;
begin
 OpenClipboard(0);
 EmptyClipboard;
 L:=Length(S)+1;
 H:=GlobalAlloc(GMEM_MOVEABLE or GMEM_DDESHARE, L);
 P:=GlobalLock(H);
 GetMem(C, L);
 C:=PChar(S);
 CopyMemory(P, C, L);
 GlobalUnlock(H);
 SetClipboardData(CF_TEXT, H);
 CloseClipboard;
end;


 
REA   (2007-10-10 09:34) [19]

unit RusClipboard;

interface

uses Clipbrd;

type
 TRusClipboard = class(TClipboard)
 private
   procedure SetCodePage(const CodePage: longint);
 public
   procedure Open; override;
   procedure Close; override;
 end;

implementation

uses Windows;

{ TRusClipboard }

procedure TRusClipboard.Close;
begin
 SetCodePage($0419);
 inherited;
end;

procedure TRusClipboard.Open;
begin
 inherited;
 SetCodePage($0419);
end;

procedure TRusClipboard.SetCodePage(const CodePage: longint);
var
 Data: THandle;
 DataPtr: Pointer;
begin
 Data:= GlobalAlloc(GMEM_MOVEABLE + GMEM_DDESHARE, 4);
 try
   DataPtr := GlobalLock(Data);
   try
     Move(CodePage, DataPtr^, 4);
     SetClipboardData(CF_LOCALE, Data);
   finally
     GlobalUnlock(Data);
   end;
 except
   GlobalFree(Data);
 end;
end;

var
 NewClipboard: TClipboard;
 OldClipboard: TClipboard;

initialization
 NewClipboard := TRusClipboard.Create;
 OldClipboard := SetClipboard(NewClipboard);
 OldClipboard.Free;

end.



Страницы: 1 вся ветка

Текущий архив: 2007.11.11;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.02 c
2-1192521779
Ega23
2007-10-16 12:02
2007.11.11
Как поменять дату файла?


2-1192805649
dreamse
2007-10-19 18:54
2007.11.11
Подскажите как скопировать в переменную последнии несколько


1-1187258884
Klopan
2007-08-16 14:08
2007.11.11
Object TreeView


6-1173173691
inex
2007-03-06 12:34
2007.11.11
простенький сканер сети


15-1192012226
Dennis I. Komarov
2007-10-10 14:30
2007.11.11
2 x ADSL