Главная страница
    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.5 MB
Время: 0.04 c
2-1192530303
Dark_blue
2007-10-16 14:25
2007.11.11
Алгоритм шифрования


2-1192781260
Abcdef123
2007-10-19 12:07
2007.11.11
Как грамотрее написать вот такой код


6-1173167422
dron9205
2007-03-06 10:50
2007.11.11
Передача информации через com-порт


2-1192969619
Lebedev
2007-10-21 16:26
2007.11.11
Caption RadioGroup должен переходить на новую строку.


2-1193036940
_user_
2007-10-22 11:09
2007.11.11
Как учесть масштаб в свойствах экрана (96, 120... т/дюйм)?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский