Страница 11 из 19
Добавлено: Ср ноя 07, 2007 16:29
Starina
По поводу перехвата клавиш для Lister'а.
Необходимо использовать интерфейс IDocHostUIHandler, там есть специальный метод.
Немного информации по этому интерфейсу есть в DRKB3.0
Добавлено: Ср ноя 07, 2007 16:45
Alextp
Спасибо. Посмотрю
Добавлено: Чт ноя 08, 2007 10:45
Starina
Выкачал новую версию.
1) Из-за реорганизации временных папок вот какая проблема:
файлы fb2 в кодировке windows-1251 с русскими буквами в названии не открываются.
Потому что когда создается временный xml-файл и в него записывается путь, то всегда используется функция UTF8Encode,
что естественно для русских букв с кодировкой windows-1251 выдает абракадабру.
2) Если нужна помощь в освоении IDocHostUIHandler-интерфейса, то могу попытаться помочь.
Добавлено: Чт ноя 08, 2007 14:42
Alextp
1) Подтверждаю
Надо что-то делать. При кодировке xml "windows-1251" надо записывать все в ANSI.
Какие бывают еще кодировки в FB?
2) Да, нужна.
Добавлено: Чт ноя 08, 2007 15:04
Ник
FB2 - это стандарт, там всё прописано на сайте:
http://www.fictionbook.org/index.php/%D ... 1%82_Sclex
Общая структура документа. Кодировки
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 - английский и восточно-европейские (польский, чешский и т.д.)
Добавлено: Чт ноя 08, 2007 15:54
Starina
1) может придумать другое построение временных папок?
2) Английская статья с небольшим примером:
http://www.delphidabbler.com/articles?article=18
Также нашел компонент, которых этот интерфейс реализует EmbeddedWB:
http://www.bsalsa.com/
И вот как можно использовать метод:
Код: Выделить всё
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;
Пока все, что смог.
Добавлено: Чт ноя 08, 2007 17:36
Alextp
Ник писал(а):FB2 - это стандарт, там всё прописано на сайте:
OK, спасибо. Значит, если encoding <> "UTF-8", можно просто считать, что файл в ANSI. Если пренебрегать кодировками windows-1252 и т.д. Они наверное, нечасто в русских книгах встречаются

Добавлено: Чт ноя 08, 2007 18:18
Alextp
Версия 1.6.9.
Starina писал(а):1) может придумать другое построение временных папок?
Какое?
Добавлено: Пт ноя 09, 2007 09:54
Starina
Первое, что приходит в голуву это приводить все имена файлов к английским буквам (незнаю будет это проще или нет?)
Добавлено: Пт ноя 09, 2007 13:54
Alextp
Starina писал(а):Первое, что приходит в голуву это приводить все имена файлов к английским буквам (незнаю будет это проще или нет?)
1 А если имя %TEMP% папки русское?
2 А если есть два файла "Dobycha.fb2" и "Добыча.fb2"?
Добавлено: Пт ноя 09, 2007 14:05
Ник
А генерировать на базе имени файла случайный неповторяющийся набор цифр и латинских букв в качестве имени временной директории и временного файла?
Типа MD5 от имени?
Добавлено: Пт ноя 09, 2007 14:09
Alextp
Ник писал(а):А генерировать на базе имени файла случайный неповторяющийся набор цифр и латинских букв в качестве имени временной директории
А если п-лю разрешена запись только в %TEMP% (но не в C:\)?
Добавлено: Пт ноя 09, 2007 14:35
Ник
То есть проблема в кодировке имени папки %TEMP% ?
Или можно внутри неё делать дополнительные папки с "правильной" кодировкой имени?
Добавлено: Пт ноя 09, 2007 14:40
Alextp
Ник писал(а):То есть проблема в кодировке имени папки %TEMP% ?
Да. Потому что в xml пишется
полное имя xsl файла. А он, xsl, в %TEMP%.
Добавлено: Пт ноя 09, 2007 15:57
Ник
Не понял - он же для всех файлов одинаковый - на фига он там, а не в директории плагина?