Page 25 of 74

Posted: Mon Nov 22, 2010 7:49 pm
by FeyFre
Infocatcher
Ну это Инструктору решать(да и не забудьте, что существует ещё и VBScript и прочие языки, которые могут и не поддерживать такие навороты)

Code: Select all

try
{
	if(!DoSome10())
		throw 10;
	if(!DoSome20())
		throw 20;
	if(!DoSome30())
		throw 30;
	if(!DoSome40())
		throw 40;
	if(!DoSome50())
		throw 50;
	//! Если всё хорошо, то тоже выбрасываем исключение, что-бы почистить всё
	//! Конечно если нужно. В приципе чистку можно сделать и тут без выброса исключения
	//! но в некоторых случаях получим дублирование кода
	throw 50;
}
catch (e)
{
	if(typeof(e)=="number")
	{
		switch(e)
		{
		case 50: //Clanup 50
		case 40: //Clanup 40
		case 30: //Clanup 30
		case 20: //Clanup 20
		case 10: //Clanup 10
		default: //! Сюда попасть не должны только если пришли с другог case-а.
		}
	}
	else //! Неожидаемое(не наше) исключение
	{
		throw e;
		//! Пускаем исключение дальше.
		//! В том числе сюдой пройду ошибки синтаксиса, а прочие RunTime
		//! И Akel их поймает как будто этого try{}catch{} блока не было(место в исходнике покажет правильно)
	}
}

Posted: Mon Nov 22, 2010 10:47 pm
by Infocatcher
FeyFre
Вроде бы, наворотов пока нет, но нужна возможность использовать функции в качестве данных. Впрочем, можно ведь передавать имя глобальной функции, если язык не может передать саму функцию или ссылку на нее.
А я думал про подключение готовых модулей. Вот как с хранением настроек в INI – чтобы в самом конце модуль мог проверить, не нужно ли сохраниться.

Posted: Tue Nov 23, 2010 9:36 am
by FeyFre
но нужна возможность использовать функции в качестве данных.
Вот этого по-моему VBScript не умеет(могу ошибаться, давно его не лапал). Я в принципе потому и забил на хотелку по-поводу доработки CALLBACK-а забил.

Posted: Sun Nov 28, 2010 12:59 am
by Infocatcher

Code: Select all

WScript.Echo(typeof AkelPad.InputBox(AkelPad.GetMainWnd(), WScript.ScriptName, "Type something", ""));
AkelPad.InputBox всегда возвращает "string", неудобно. Как при этом узнать, что пользователь нажал отмену?
window.prompt() в таких случаях возвращает null.

И мне снова подсказывают:
Если null будешь просить, проси сразу и password prompt
:D
(см. viewtopic.php?p=10021#p10021)

Posted: Sun Nov 28, 2010 6:05 am
by Instructor
Infocatcher
AkelPad.InputBox всегда возвращает "string", неудобно. Как при этом узнать, что пользователь нажал отмену?
Реализовано. При нажатии отмены typeof будет undefined.
...password prompt
Ну это уже своим диалогом.

Posted: Sun Nov 28, 2010 12:48 pm
by Infocatcher
Instructor wrote:
...password prompt
Ну это уже своим диалогом.
Это как? Моя без примера не понимать. :D
Впрочем, практика показывает, что все это ни разу не быстро, так что подобные вещи лучше делать на чем-нибудь более быстром.

Posted: Thu Dec 02, 2010 7:14 am
by Instructor
Изменено: при нажатии отмена метод InputBox возвращает "undefined".
Исправлено: MemCopy с типом DT_WORD, DT_BYTE.

Changed: when cancel button is pushed, InputBox method returns "undefined".
Fixed: MemCopy with type DT_WORD, DT_BYTE.


Scripts plugin v7.4

Posted: Sun Dec 05, 2010 8:48 pm
by KDJ
I need a function that gets the text in columns.
For example:
AkelPad.GetTextRangeColumn(Start, End[, nNewLine])
where
Start = [nLineStart, nColumnStart]
End = [nLineEnd, nColumnEnd]
or
Start = nOffsetStart
End = nOffsetEnd
Is it possible to do this?

Posted: Sun Dec 05, 2010 9:20 pm
by FeyFre
KDJ, definitely yes :)
AkelEdit message AEM_GETTEXTRANGE
There is usage example in source of AkelPad (AkelEdit.h)

Posted: Sun Dec 05, 2010 9:51 pm
by KDJ
FeyFre
Well, I thought that Instructor can do such a function in Scripts plugin.

Posted: Mon Dec 06, 2010 7:15 pm
by Infocatcher
Для случая, когда скрипт реализует немодальное окошко, очень хотелось бы возможность одновременного запуска нескольких скриптов.
А ведь раньше что-то такое было, и mutex'ы были, кажется. :)

Posted: Tue Dec 07, 2010 12:38 pm
by Fr0sT
Насчет функции, которая бы выполнялась при определенном событии: можно жестко зафиксировать их названия, например, scriptOnStart, scriptOnFinish, scriptOnBreak и при выполнении скрипта смотреть, если они реализованы, то вызывать, если же нет - то и нехай.

Posted: Tue Dec 07, 2010 3:37 pm
by Instructor
KDJ
I need a function that gets the text in columns.
SetSel -> AEM_UPDATESEL with AESELT_COLUMNON -> GetSelText

Posted: Tue Dec 07, 2010 3:56 pm
by VladSh
Infocatcher wrote:А ведь раньше что-то такое было, и mutex'ы были, кажется. :)
Из-за этого было море багов.
Fr0sT wrote:Насчет функции, которая бы выполнялась при определенном событии: можно жестко зафиксировать их названия, например, scriptOnStart, scriptOnFinish, scriptOnBreak и при выполнении скрипта смотреть, если они реализованы, то вызывать, если же нет - то и нехай.
Это лучше в Scripts-плагин отдельными функциями добавить, чтобы можно было галками отмечать "к исполнению". Ну или не отмечать, кому не надо.
И ещё бы в командную строку параметр, который мог бы подменять наименование скрипта при загрузке.

Posted: Tue Dec 07, 2010 5:35 pm
by FeyFre
Для случая, когда скрипт реализует немодальное окошко, очень хотелось бы возможность одновременного запуска нескольких скриптов.
А ведь раньше что-то такое было, и mutex'ы были, кажется.
Ну дык сейчас тоже запускаются и работают несколько одних и тех же скриптов.
(Другое дело что это не эксплуатируется в полную силу. Есть у меня одна идейка).