при выводе в тхт получаются иероглифы. как зделать по-нормальному?
TXT чем открываешь? Windows-Блокнотом? Сохраняется-то в CP866, значит и просматривать надо в этой же кодировке...
но блокнот же такой не поддерживает!
тоесть никак нельзя?
или какой-то навороченій редактор устанавливать?
http://forum.sources.ru/index.php?showtopic=41972&view=findpost&p=690195 , используй функцию OemToAnsi, которая там описана... Может, сработает... А может и нет, если псевдографика вообще не поддерживается Win-кодировкой
P.S. Нет, не сработает... Нет псевдографики в Win-кодировке... Открывай Far-ом, или еще чем-нибудь, что позволяет работать с CP866...
WordPad умеет ОЕМ
Можешь моей утилитой открывать через локальную менюшку. IBM 866 у неё родная кодировка.
http://kran100.narod.ru/hkj/gleanor103.zip
вот, сделал такую программку на делфи.
меняет текст при неправильной расскладке клавиатуры.
Koder.zip ( 233.41 килобайт )
Кол-во скачиваний: 407
в файл выводит все хорошо, а если вводить английские символы(в первый мемо), потом скопировать русские(из второго мемо) и вставить их, например, в тот же блокнот - получаются иероглифы. почему?
Ты бы код показал, может чего и посоветовали бы, а так, просто догадываться - не очень интересно...
извините, не тот архив выложил. исправился.
Проверить не могу, негде. Но попробуй в том Memo, куда пишется результат, установить CharSet в Russian, тогда не должно быть того, о чем ты говоришь...
P.S. Перенести тему в Дельфи? (здесь уже не теория, а реализация пошла все-таки...)
charset не помогает.
английская расскладка всегда зорошо получается, а русская никак.
кстати, если я ввел русской расскладкой, перевел в английскую, а потом опять в русскую - все хорошо, но при непосредственном переводе из английской в русскую получаются иероглифы.
извините за навязчивость, но помогите мне с этой проблемой.
нигде не могу найти ничего про такую особенность мемо.
Про какую особенность? Телепаты - в отпуске. Ты пишешь, что
заменил. надеюсь в этот раз уже на то что надо
особенность такова, что строка при выводе в файл сохраняется в нормальной кодировке, а если эту же строку вывести в мемо, скопировать и вставить в блокнот - получаются иероглифы.
вроде виндоз русский. Borland Delphi Enterprise 7.
Ты вынудил меня просто зайти под Windows...
Попытаюсь воспроизвести описанное тобой поведение... Смотри, что происходит: WinXP SP3, английская, запускаю твой EXE-шник и пытаюсь результат перекодировки скопировать в NotePad. Результат http://picasaweb.google.com/volvo71/Programs#5350601127438314898
Как это понимать? Где проблема?
если не ошибаюсь у меня SP2 русский. при выполнении аналогичных действий - все равно закарлючки, даже нотепад скачал - и в нем тоже (даже ворд не понимает).
кстати, расскажи как это ты так видео делаешь?
У меня возникла подобная проблема, поэтому решил написать сюда:)
Есть у меня, значит, программа, и запускаю я её на удалённом сервере, на котором стоит испанский Windows Server 2003. Следовательно, в программе русские надписи не отображаются, и то, что она выводит в текстовик, тоже получается в странной кодировке. Русифицировать Windows тамошний варианта нет. Что можно сделать?
Использовать Unicode-компоненты тоже нет варианта? TMS, например. Или Дельфи 2009, в которой наконец-то VCL Юникодный... В частности,
Memo1.Lines.SaveToFile('test.txt', TEncoding.Unicode);мне только что сохранило содержимое Memo1 в Юникодный файл, все три языка читаются оттуда прекрасно...
вот результат моей проги:
может виндоз уже замученый - надо переустановить (иногда помогает - решает всякие глюки) ?
Не надо ничего переустанавливать, проблема не там, где ты думаешь... Почитай статью:
DRKB -> Системные функции и WinAPI -> Windows -> Буфер обмена -> Буфер обмена и строки (текст) -> Поместить/получить строку из буфера обмена (Заплатка к стандартным)
По-моему, как раз твой случай. Попробуй сначала повесить копирование в Clipboard на нажатие кнопки, и проверить, правильно ли работает. Если правильно - будешь добавлять HotKey, и по нажатию Ctrl+C делать то же самое...
type
TForm1 = class(TForm)
// ...
private
procedure WMHotKey(var Message: TMessage); message WM_HOTKEY; // Вот так
end;
Может, у тебя изначально стояла какая-то пришибленная сборка от какого-нибудь Zver'я?
Volvo, спасибо, компоненты такие правда работают..
Кстати, когда я в 16:53 зашёл в топ, то последние 2 сообщения не отобразились почему то..
Volvo, вот сделал заплатку для буфера, сделал горячую клавишу ctrl+c, а сделать еще горячие клавиши ctrl+x,ctrl+a не получается.
Koder.rar ( 629.68 килобайт )
Кол-во скачиваний: 357
Помоги пожалуйста.
Добавлено через 5 мин.
И еще вопросик: как сделать эту же заплатку, когда нажимаешь на мемо правой кнопкой мыши и выбираешь копировать или вырезать? Создать собственное контекстное меню или есть вариант полегче?
И еще вопрос: я заметил, что даже если проект сверут, hotkey все равно работает! это можно как-то отключить?
const, а потом регистрируешь их (а в процедуре WMHotKey - проверяешь, какой хоткей пришел, и указываешь, что надо сделать):
HK_COPY = 1;
HK_SELECTALL = 2;
HK_CUT = 3;
MyHotKeyCopy = ord('C');
MyHotKeySelectAll = ord('A');
MyHotKeyCut = ord('X');
procedure TForm1.WMHotKey(var Msg: TWMHotKey);Если надо и контекстное меню, то те же операции повесишь на PopupMenu, тогда проще будет не выполнять действия сразу в обработчике WMHotKey, а вызывать процедуры меню...
begin
case Msg.HotKey of
HK_COPY:
PutStringIntoClipBoard(form1.MemoTo.Text);
HK_SELECTALL:
Form1.MemoTo.SelectAll;
HK_CUT:
; // тут добавишь, чего тебе надо. Копирование в буфер и очистка Memo
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
RegisterHotKey(Form1.Handle, HK_COPY, MOD_CONTROL, MyHotKeyCopy);
RegisterHotKey(Form1.Handle, HK_SELECTALL, MOD_CONTROL, MyHotKeySelectAll);
RegisterHotKey(Form1.Handle, HK_CUT, MOD_CONTROL, MyHotKeyCut);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
UnRegisterHotKey(Form1.Handle, HK_COPY);
UnRegisterHotKey(Form1.Handle, HK_SELECTALL);
UnRegisterHotKey(Form1.Handle, HK_CUT);
end;
Да, создать свой PopupMenu... Кстати, если тебе надо, чтобы горячие клавиши работали только когда твоя программа активна (а не свернута и не в фоне) - проще будет добавить на форму TActionList и добавить в него три TAction (не стандартные, а именно простые, нажатием Ins а не Ctrl+Ins!!!). На каждый из них навесить по HotKey-ю, и в обработчике OnExecute написать нужные действия.
Тогда при создании PopupMenu достаточно просто выбрать Action, дальше Дельфи все сделает сама.