Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2007.11.11;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.047 c
2-1192522713
webpauk
2007-10-16 12:18
2007.11.11
Тип данных


6-1173444998
vlavich
2007-03-09 15:56
2007.11.11
Проблема с установкой RAS соединения


15-1191043444
Washington
2007-09-29 09:24
2007.11.11
Delphi vs. VB


3-1183576692
lavrenty
2007-07-04 23:18
2007.11.11
Не срабатывает Refresh


15-1191250150
Andy BitOff
2007-10-01 18:49
2007.11.11
Запрос SQL. Создание, оптимизация.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский