View previous topic :: View next topic |
Author |
Message |
Starina
Joined: 06 Nov 2007 Posts: 13
|
(Separately) Posted: Wed Nov 07, 2007 17:29 Post subject: |
|
|
По поводу перехвата клавиш для Lister'а.
Необходимо использовать интерфейс IDocHostUIHandler, там есть специальный метод.
Немного информации по этому интерфейсу есть в DRKB3.0 |
|
Back to top |
|
 |
Alextp

Joined: 06 Feb 2005 Posts: 4957
|
(Separately) Posted: Wed Nov 07, 2007 17:45 Post subject: |
|
|
Спасибо. Посмотрю |
|
Back to top |
|
 |
Starina
Joined: 06 Nov 2007 Posts: 13
|
(Separately) Posted: Thu Nov 08, 2007 11:45 Post subject: |
|
|
Выкачал новую версию.
1) Из-за реорганизации временных папок вот какая проблема:
файлы fb2 в кодировке windows-1251 с русскими буквами в названии не открываются.
Потому что когда создается временный xml-файл и в него записывается путь, то всегда используется функция UTF8Encode,
что естественно для русских букв с кодировкой windows-1251 выдает абракадабру.
2) Если нужна помощь в освоении IDocHostUIHandler-интерфейса, то могу попытаться помочь. |
|
Back to top |
|
 |
Alextp

Joined: 06 Feb 2005 Posts: 4957
|
(Separately) Posted: Thu Nov 08, 2007 15:42 Post subject: |
|
|
1) Подтверждаю
Надо что-то делать. При кодировке xml "windows-1251" надо записывать все в ANSI.
Какие бывают еще кодировки в FB?
2) Да, нужна. _________________ UniViewer - CudaText - LogViewer
|
|
Back to top |
|
 |
Ник
Joined: 15 Dec 2004 Posts: 1256 Location: Москва
|
(Separately) Posted: Thu Nov 08, 2007 16:04 Post subject: |
|
|
FB2 - это стандарт, там всё прописано на сайте:
http://www.fictionbook.org/index.php/%D0%9E%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5_%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D0%B0_FB2_%D0%BE%D1%82_Sclex
Quote: | Общая структура документа. Кодировки
FB2-документ состоит из объявления XML и корневого элемента <FictionBook>. То есть выглядит это так:
<?xml version="1.0" encoding="windows-1251"?>
<FictionBook xmlns="http://www.gribuser.ru/xml/fictionbook/2.0"
xmlns:l="http://www.w3.org/1999/xlink">
...
</FictionBook>
Как видно, в первой строке в значении атрибута encoding надо правильно указать кодировку документа. В приведенном примере это windows-1251, а в другом случае могла бы быть и utf-8. utf-8 также является кодировкой по умолчанию, использующейся в случае отсутствия атрибута encoding или всего XML-объявления.
Ниже указано, какая кодировка каким языкам соответствует:
windows-1251 - английский и кириллица (русский, болгарский и т.д.)
windows-1252 - западно-европейские языки (английский, французский, испанский и т.д.)
windows-1250 - английский и восточно-европейские (польский, чешский и т.д.) |
_________________ Xubuntu |
|
Back to top |
|
 |
Starina
Joined: 06 Nov 2007 Posts: 13
|
(Separately) Posted: Thu Nov 08, 2007 16:54 Post subject: |
|
|
1) может придумать другое построение временных папок?
2) Английская статья с небольшим примером:
http://www.delphidabbler.com/articles?article=18
Также нашел компонент, которых этот интерфейс реализует EmbeddedWB:
http://www.bsalsa.com/
И вот как можно использовать метод:
Code: |
type
TCustomizedWebBrowser = class(TWebBrowser, IDocHostUIHandler)
...
function TCustomizedWebBrowser.TranslateAccelerator(const lpMsg: PMSG;
const pguidCmdGroup: PGUID; const nCmdID: DWORD): HRESULT;
begin
Result := S_FALSE;
with lpMsg^ do
if (message = WM_KEYDOWN) and (GetKeyState(VK_CONTROL) >= 0) then
begin
MessageDlg(Char(wParam), mtWarning, [mbOK], 0);
Result := S_OK;
end
end;
|
Пока все, что смог. |
|
Back to top |
|
 |
Alextp

Joined: 06 Feb 2005 Posts: 4957
|
(Separately) Posted: Thu Nov 08, 2007 18:36 Post subject: |
|
|
Ник wrote: | FB2 - это стандарт, там всё прописано на сайте:
|
OK, спасибо. Значит, если encoding <> "UTF-8", можно просто считать, что файл в ANSI. Если пренебрегать кодировками windows-1252 и т.д. Они наверное, нечасто в русских книгах встречаются  _________________ UniViewer - CudaText - LogViewer
|
|
Back to top |
|
 |
Alextp

Joined: 06 Feb 2005 Posts: 4957
|
|
Back to top |
|
 |
Starina
Joined: 06 Nov 2007 Posts: 13
|
(Separately) Posted: Fri Nov 09, 2007 10:54 Post subject: |
|
|
Первое, что приходит в голуву это приводить все имена файлов к английским буквам (незнаю будет это проще или нет?) |
|
Back to top |
|
 |
Alextp

Joined: 06 Feb 2005 Posts: 4957
|
(Separately) Posted: Fri Nov 09, 2007 14:54 Post subject: |
|
|
Starina wrote: | Первое, что приходит в голуву это приводить все имена файлов к английским буквам (незнаю будет это проще или нет?) |
1 А если имя %TEMP% папки русское?
2 А если есть два файла "Dobycha.fb2" и "Добыча.fb2"? _________________ UniViewer - CudaText - LogViewer
|
|
Back to top |
|
 |
Ник
Joined: 15 Dec 2004 Posts: 1256 Location: Москва
|
(Separately) Posted: Fri Nov 09, 2007 15:05 Post subject: |
|
|
А генерировать на базе имени файла случайный неповторяющийся набор цифр и латинских букв в качестве имени временной директории и временного файла?
Типа MD5 от имени? _________________ Xubuntu |
|
Back to top |
|
 |
Alextp

Joined: 06 Feb 2005 Posts: 4957
|
(Separately) Posted: Fri Nov 09, 2007 15:09 Post subject: |
|
|
Ник wrote: | А генерировать на базе имени файла случайный неповторяющийся набор цифр и латинских букв в качестве имени временной директории |
А если п-лю разрешена запись только в %TEMP% (но не в C:\)? _________________ UniViewer - CudaText - LogViewer
|
|
Back to top |
|
 |
Ник
Joined: 15 Dec 2004 Posts: 1256 Location: Москва
|
(Separately) Posted: Fri Nov 09, 2007 15:35 Post subject: |
|
|
То есть проблема в кодировке имени папки %TEMP% ?
Или можно внутри неё делать дополнительные папки с "правильной" кодировкой имени? _________________ Xubuntu |
|
Back to top |
|
 |
Alextp

Joined: 06 Feb 2005 Posts: 4957
|
(Separately) Posted: Fri Nov 09, 2007 15:40 Post subject: |
|
|
Ник wrote: | То есть проблема в кодировке имени папки %TEMP% ?
|
Да. Потому что в xml пишется полное имя xsl файла. А он, xsl, в %TEMP%. _________________ UniViewer - CudaText - LogViewer
|
|
Back to top |
|
 |
Ник
Joined: 15 Dec 2004 Posts: 1256 Location: Москва
|
(Separately) Posted: Fri Nov 09, 2007 16:57 Post subject: |
|
|
Не понял - он же для всех файлов одинаковый - на фига он там, а не в директории плагина? _________________ Xubuntu |
|
Back to top |
|
 |
|