Форум: "Прочее";
Текущий архив: 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.regWindows 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.046 c