Помогите написать скрипт

Russian main discussion
  • Author
  • Message
Offline
Posts: 6
Joined: Sun Jan 15, 2012 4:05 am

Post by Allid »

Infocatcher
Спасибо!

Offline
Posts: 1862
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

DV wrote:Могут быть проблемы с переносом строк, однако сама лаконичность скрипта просто заставляет прослезиться :)
Там же, вроде, "\r" по умолчанию отдает.

DV
Offline
Posts: 1250
Joined: Thu Nov 16, 2006 11:53 am
Location: Kyiv, Ukraine

Post by DV »

Infocatcher wrote:Там же, вроде, "\r" по умолчанию отдает.
Это да. Но я ещё думал о том, что скрипт меняет порядок строк. Хотя этот момент не был оговорен в условии задачи: нужно ли сохранять изначальный порядок строк, инвертируя символы в каждой строке, или же проинвертировать всё, включая и порядок строк.
Мысль в тему:
Способность говорить сложно о простом приходит с многолетней практикой. Это очень полезно для философов, психологов, юристов и т.п. Но не для программистов: тут всё наоборот. Чем проще input, тем эффективней output.

Offline
Posts: 1862
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

DV wrote:нужно ли сохранять изначальный порядок строк
А, это.
Жаль, что мелкомягкие не приделали еще Array.map().

Чтобы было:
reverseEachLine.js

Code: Select all

var lines = AkelPad.GetSelText().split("\r");
for(var i = 0, l = lines.length; i < l; ++i)
	lines[i] = lines[i].split("").reverse().join("");
AkelPad.ReplaceSel(lines.join("\r"));
DV wrote:Мысль в тему
Известное дело: усложнять просто, упрощать – сложно. :)

Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

Жаль, что мелкомягкие не приделали еще Array.map().
Ну а что мешает приведенную по ссылке реализацию скопипастить в скрипт? Даже редактировать не нужно будет.

Offline
Posts: 1862
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

FeyFre
Да как-то смысла особого нет, для одного-то применения. :)

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

DV wrote:Мысль в тему...
есть

Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

Да как-то смысла особого нет, для одного-то применения.
То то я смотрю в каждом втором скрипте вместо

Code: Select all

AkelPad.Include("win32\\user32.js")
var IDC_DOWORK = 1234;
AkelPad.SendMessage(hwnd,WM_COMMAND,MAKEWPARAM(IDC_DOWORK,BN_CLICKED),0,0);
делают какое-то непонятное, абсолютно нечитаемое и не поддерживаемое

Code: Select all

AkelPad.SendMessage(hwnd,237,1234,0,0);
(Уже не говорю о постоянных магических смещениях относительно каких-то там указателей)

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

FeyFre
Ну то дело вкуса. Мне удобнее цифири писать с обязательной докой возле них.
В констах безусловно есть достоинство - в одном месте определил и всё, и меняешь потом в одном месте, если что-то поменялось. Но мне не нравится, что для вытягивания 1-2 констант надо подгружать весь файл.. грамотнее бы разбивку организовать.
FeyFre wrote:(Уже не говорю о постоянных магических смещениях относительно каких-то там указателей)
А вот это поддерживаю - сильно усложняет и чтение, и программинг, и поддержку кода.

Offline
Posts: 1862
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

FeyFre wrote:(Уже не говорю о постоянных магических смещениях относительно каких-то там указателей)
Это же js, тут все привыкли к ословодству. :D
Хотя, по большому счету, сюрпризы от новых версий Оперы обычно куда внезапнее. :)

Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

VladSh
А вот уже который раз сажусь за создание AkelDll.js и AkelEdit.js
А какой раз я сажусь за врапперы вокруг указателей на часто используемые структуры(вместо var name = AkelPad.MemRead(mem+_X64?160:144,DT_DWORD) делать что-то типа var pFrameData = FRAMEDATA(mem); var name = pFrameData.lpszFileName )
Но мне не нравится, что для вытягивания 1-2 констант надо подгружать весь файл.
Ну кто ж виноват что пишите примитивные скрипты? Моим скриптам приходится 2-з десятка констант использовать, минимум.
грамотнее бы разбивку организовать.
Ага, а потом сбивку? Включение базового прокси header-файла Windows SDK windows.h приводит к включению ещё 58 header файлов(исключая C-шные header-ы, декораторы деклараций и выравниватели памяти в структурах), в которых собственно и определяется вся начинка(это только базовый функционал). Если хорошенько попросить препроцессор, то это число сокращается до 19-ти, а если очень попросить то до 17. Тут вопрос встает: а стоит ли оно того?
Ну то дело вкуса. Мне удобнее цифири писать с обязательной докой возле них.
Типа так 273 /*WM_COMMAND*/ ? Ну, ну. У меня на 10 строчек 20 таких случаев, и вот внезапно мне приспичило закомментировать эти строчки. `/*` вначале и `*/` в конце. Угадайте что у меня получится? Правильно, комментарий дотянется до превого же `*/` и на этом закончится.

Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

Хотя, по большому счету, сюрпризы от новых версий Оперы обычно куда внезапнее.
Оо какие сюрпризы?? Опера полностью удовлетворяет ECMA262 5.1 минус мелкое исключение(parseInt() по прежнему распознает строки начинающиеся с 0 как восьмеричные, хотя стандарт запретил это.) А больше сюрпризов и нету.
тут все привыкли к ословодству.
Говорим за себя.

Offline
Posts: 1862
Joined: Mon Aug 06, 2007 1:07 pm
Contact:

Post by Infocatcher »

FeyFre wrote:Оо какие сюрпризы?? Опера полностью удовлетворяет ECMA262 5.1 минус мелкое исключение(parseInt() по прежнему распознает строки начинающиеся с 0 как восьмеричные, хотя стандарт запретил это.) А больше сюрпризов и нету.
Да разные, я только изредка веб-разработками занимаюсь и записей не веду.
А сюрпризы обычно на уровне взаимодействия с DOM – то не перерисуется что-нибудь после изменения, то еще что-нибудь.
А потом они могут изменить приведение нативных функций к строке и выдать вместо "[native code]" "/* source code not available */", а потом вернуть как было (вроде, вернули, не проверял).
Или <noscript> вдруг сломают, и он перестанет отображаться (сейчас уже работает).
Дело не столько в реальных проблемах, сколько в их неожиданности. А вот в IE как было все по-своему сделано, так и работает. Через не то место, но вполне стабильно. Хотя 9-й версии хоть что-то менять стали типа поддержки addEventListener().
http://www.google.ru/search?as_q=%D0%BD ... ascript.ru
Но реальных проблем актуальных версий назвать сразу не могу. :)

Offline
Posts: 3217
Joined: Wed Nov 29, 2006 1:19 pm
Location: Киев, Русь
Contact:

Post by VladSh »

FeyFre wrote:Ну кто ж виноват что пишите примитивные скрипты?
Никто не виноват, я их пишу такими специально :) Потому что исхожу всегда из принципа достаточности, - считаю, что пихать где не попадя вызовы WinAPI, это извращение. Взять большинство скриптов с диалогами, - вроде всё красивенько так.. а работать неудобно, т.к. чаще всего нужно именно запустить скрипт с часто используемыми параметрами из меню/тулбара/хоткея, а не постоянно разглядывать диалоги с кучей чекбоксов и радиобаттонов... Мои скрипты как раз и доказывают, что 95% задач прекрасно решаются без "пушки по воробьям"; 'примитивность', т.е. простота, в этом случае только плюс.

> Opera
Пример: window.getSelection() ещё в 10.10 сломали (не работало в search-полях и т.п.), с 11.50 в полях поправили, но на странице продолжает глючить.

Offline
Posts: 2247
Joined: Tue Aug 07, 2007 2:03 pm
Location: Vinnitsa, Ukraine

Post by FeyFre »

Пример: window.getSelection() ещё в 10.10 сломали (не работало в search-полях и т.п.), с 11.50 в полях поправили, но на странице продолжает глючить.
А ткните мне пальцем в стандарт. А то я что-то не нашел. Вот нашел
1.2. Not in This Specification

This section is not normative.

This specification does not include the following features, which are also found on the Window object in some implementations. It is possible they will defined by other specifications or found in a future version of this specification.
History
ISSUE-59: Should Window 1.0 include history?
Access to frames by name
ISSUE-60: Should Window Object 1.0 include access to frames by name (window.frames)?
Opening new windows
Manipulating UI of existing windows
Window size and position information
Client information ("window.navigator")
Window events
Printing
Focus
Selection
Editing
Networking APIs
Handling of binary data
Post Reply