Page 50 of 97
Posted: Fri Jan 14, 2011 3:25 pm
by FeyFre
И да, к хозяину
InsertFile.js там есть кусочек
Code: Select all
if (lpStructure=AkelPad.MemAlloc(_X64?136:76)) //sizeof(OPENFILENAMEA) or sizeof(OPENFILENAMEW)
Попрошу оставить в комментарие sizeof(OPENFILENAME), ибо я когда первый раз увидел этот комментарий, то сразу же подумал что он поясняет оператор _X64?136:76, и долго ломал голову почему на 64-битной версии используют OPENFILENAMEA а на 32-битной OPENFILENAMEW. Аж потом дошло что комментарий не это поясняет. Какого-нибудь новичка оно может на долго ввести в заблуждение.
Posted: Fri Jan 14, 2011 3:54 pm
by VladSh
FeyFre
Спасибо за доку!
Только непонятно, как передать в структуру lpstrInitialDir...
По идее надо сделать что-то типа:
Code: Select all
if (lpDirBuffer = AkelPad.MemAlloc(256 * _TSIZE))
{
AkelPad.MemCopy(lpDirBuffer, pInitialDir.substr(0, 255), _TSTR);
...
А потом, как его значение запихнуть?
Что означают эти циферки 48:28:
Code: Select all
AkelPad.MemCopy(lpStructure + (_X64?48:28), lpFileBuffer, 2 /*DT_QWORD*/); //lpstrFile
и как получить те, что нужны в моём случае?
Posted: Fri Jan 14, 2011 5:30 pm
by FeyFre
По идее надо сделать что-то типа:
Да.
_X64?48:28
Смещение поля от начала структуры в байтах. в 64-битных архитектурах 64битные адреса, занимают по 8 байт
В вашем случае это будет _X64?68:44
68 = 5*sizeof(DWORD) + 4*sizeof(LPTSTR) + sizeof(HWND) + sizeof(HINSTANCE)
= 5*4 + 4*8+8+8
для 32 бит =5*4+4*4+4+4 = 44
Но для уверенности стоит спросить компилятор смещение(например, не играет ли там роли выравнивание на границу кратную битности или размеру поля).
Posted: Fri Jan 14, 2011 5:56 pm
by VladSh
FeyFre
Спасибо огромнейшее за подробный ответ!!!
Только компилятора у меня никакого нет.. Буду пробовать, надеюсь на попадание
Updated: Всё работает! Спасибо ещё раз! Теперь это выглядит так:
CommonFunctions.js.
По ходу изменил
SaveAs.js.
Posted: Sat Jan 15, 2011 8:41 am
by SVM
Kaк сделать чтобы скрипт getLinks оставлял не только ссылку но и то что есть после неё в строке?
Спасибо.
Posted: Sat Jan 15, 2011 10:36 am
by Infocatcher
SVM wrote:Kaк сделать чтобы скрипт getLinks оставлял не только ссылку но и то что есть после неё в строке?
Этот?
Вот так:
getLinks2.htm (
результат).
Posted: Sat Jan 15, 2011 11:30 am
by SVM
Infocatcher Спасибо!
Posted: Sat Jan 15, 2011 12:28 pm
by Andrey_A_A
Подскажите как в vds убрать перевод на новую строку
Пример:
Text = Text & vbNewLine
а теперь необходимо как-то сделать обратное действие, чтобы Text был без перевода строки
Posted: Sat Jan 15, 2011 12:51 pm
by FeyFre
Andrey_A_A
Функция Mid возвращает указанную часть строки.
Posted: Sat Jan 15, 2011 1:02 pm
by Andrey_A_A
Функция Mid - это не совсем то, что хотелось, может я не так объяснил
есть текст
то есть vbNewLine увеличила текст на одну пустую строку
а мне нужно получить
без перебора всего текста, может есть такая функция...
Posted: Sat Jan 15, 2011 1:06 pm
by FeyFre
Andrey_A_A
str = Left(str, Len(str)-1)
Только строка не должна быть пустой.
Posted: Sat Jan 15, 2011 1:16 pm
by KDJ
Andrey_A_A
Code: Select all
Text = Text & vbNewLine
If (Right(Text, Len(vbNewLine)) = vbNewLine) Then
Text = Left(Text, Len(Text) - Len(vbNewLine))
End If
Posted: Sat Jan 15, 2011 1:47 pm
by Andrey_A_A
KDJ Спасибо, то что надо! Интересное условие, сам бы ни в жись не догадался!
Posted: Sat Jan 15, 2011 2:10 pm
by VladSh
Andrey_A_A wrote:Подскажите как в vds убрать перевод на новую строку
Пример:
Text = Text & vbNewLine
а теперь необходимо как-то сделать обратное действие, чтобы Text был без перевода строки
Andrey_A_A wrote:то есть vbNewLine увеличила текст на одну пустую строку
Проще изначально делать, чтобы не было лишнего перевода строки, т.е. например так:
Instructor
Пользуюсь
ChmKeyword.js, есть парочка неприятностей:
1. При запуске любой chm-доки таким образом
Code: Select all
-"Справочник JS" Call("Scripts::Main", 1, "ChmKeyword.js", "JS.chm")
скрипты, к сожалению, не запускаются, т.е. образуется очередь запущенных скриптов, и только после закрытия доки они тут же все и выполняются. Это очень неудобно... можно ли сделать так, чтобы при открытой доке скрипты выполнялись?
2. При открытии файла VBS.chm почему-то валится AkelPad... (chm-файл сейчас вышлю на почту).
Posted: Sat Jan 15, 2011 2:23 pm
by Infocatcher
VladSh
ChmKeyword.js
В версии 1.3 там добавлено
Code: Select all
if (bCatchEsc)
...
AkelPad.ScriptNoMutex();
У меня с этой версией проблем нет.