Page 17 of 24

Posted: Tue Nov 11, 2014 5:53 pm
by Cuprum
Skif_off, VladSh
Спасибо!

Posted: Mon Nov 24, 2014 2:36 pm
by Cuprum
Стоит задача относительно заданного пути создать несколько подпапок, вложенных одна в другую. В принципе на Jscript решается так:

Code: Select all

// Здесь
// initalPath - путь, внутри которого надо сделать подпапки
// subFolders - список подпапок в виде массива

function createSubFolders(initalPath, subFolders) {
	var fso = new ActiveXObject("Scripting.FileSystemObject");
	var length = subFolders.length;
	var i;

		for (i = 0; i < length; i++) {
			initalPath = initalPath + subFolders[i] + "\\";
			if ( fso.FolderExists(initalPath) ) {
				continue;
			} else {
				fso.CreateFolder(initalPath);
			}
		}
}

Любопытно, есть ли какой способ избежать цикла (может какими-то внутренними средствами AkelPad можно) чтобы в функцию сразу передать нужный путь в виде строки наподобие "initalPath\subfolder1\subfolder2\" ?

Posted: Mon Nov 24, 2014 3:11 pm
by FeyFre
Шелловский костыль SHCreateDirectoryEx

Posted: Mon Nov 24, 2014 6:07 pm
by Cuprum
FeyFre
Там для С++, это не то, да и не все версии винды поддерживают.

Ладно, пусть будет цикл, так понятнее..

Posted: Mon Nov 24, 2014 6:36 pm
by YuS
Cuprum wrote:FeyFre
Там для С++, это не то, да и не все версии винды поддерживают.

Ладно, пусть будет цикл, так понятнее..
Не совсем понятно, зачем AP должен выполнять функции не свойственные редактору, но ведь там вроде бы есть

Code: Select all

AkelPad.Exec
и в винде достаточно просто создать необходимый набор подпапок, например так:

Code: Select all

md .\1\2\3\4\5
Может быть это то, что требуется?

Posted: Mon Nov 24, 2014 7:17 pm
by KDJ
Cuprum

Code: Select all

if (AkelPad.Exec("cmd /c md c:\\a\\b\\c\\d", "", 1))
  WScript.Echo("Error");

Posted: Mon Nov 24, 2014 7:49 pm
by Cuprum
YuS
Не совсем понятно, зачем AP должен выполнять функции не свойственные редактору, но ведь там вроде бы есть
Пожалуй да, редактору это вряд ли надо.

YuS, KDJ спасибо за способ, узнал новое. Все-таки останусь на цикле, а то тут командное окно мельтешит ;)

Posted: Mon Nov 24, 2014 8:14 pm
by KDJ
Cuprum
To hide console window, you can use Run method of WshShell object:

Code: Select all

var WshShell = new ActiveXObject("WScript.Shell");
if (WshShell.Run("cmd /c md c:\\a\\b\\c\\d", 0 /*hide window*/, 1 /*return error*/))
   WScript.Echo("Error");

Posted: Mon Nov 24, 2014 8:20 pm
by FeyFre
Cuprum, честное слово, ты как первый раз замужем.

Code: Select all

var oSys = AkelPad.SystemFunction();
oSys.Call("shell32::SHCreateDirectoryEx" + _TCHAR, 0/*или AkelPad.GetMainWnd()*/, "диск:\\путь\\к\\каталогу\\вася\\пупкин\\штрих\\который\\нужно\\создать", 0);

Прошу помочь.

Posted: Sun Mar 15, 2015 9:13 pm
by aleksey.k
Доброго времени суток.
Пожалуйста, помогите реализовать такую задачу:
необходимо скопировать в новое окно значение смещения всех строк файла, от начала каждой новой строки.
Мне это очень важно, заранее благодарен всем кто поможет.

Posted: Sun Mar 15, 2015 10:04 pm
by opk44
aleksey.k
1. UPD: удалено
2. Переформулируйте ТЗ. Мне, например, не удалось понять о каких таких смещениях идет речь.

Posted: Mon Mar 16, 2015 5:18 pm
by aleksey.k
Простите, что неясно выразился.

Речь о "смещение в символах". Нужно автоматически пересчитать всё количество символов (в том числе и таких как, например "перевод строки", то есть тотально всё) от начала каждой новой строки и вывести в новое окно только цифры: строка-количество символов в строке; следующая строка плюс предыдущая, и так далее...

Должно выглядеть так, допустим в первой 9 символов и символ перевода строки, далее 10 + количество символов следующей строки и так далее:

10
133
284

Posted: Mon Mar 16, 2015 7:25 pm
by KDJ
aleksey.k
Simple script for not too large files:

Code: Select all

var aLine  = AkelPad.GetTextRange(0, -1).split("\r");
var nTotal = 0;
var sText  = "";
var i;

for (i = 0; i < aLine.length; ++i)
{
  nTotal += aLine[i].length;
  if (i < aLine.length - 1)
    ++nTotal;
  sText += nTotal + "\r";
}

AkelPad.Command(4101 /*IDM_FILE_NEW*/, 1 /*lParam*/);
AkelPad.ReplaceSel(sText);

Thank you

Posted: Mon Mar 16, 2015 7:56 pm
by aleksey.k
KDJ
Это просто изумительно. Всё именно так как я себе представлял. Огромная благодарность. :)
Thank you so much.

Posted: Tue Mar 17, 2015 4:20 am
by Lenchik
aleksey.k, расскажите, пожалуйста, для каких задач такой скрипт оказывается полезен? А то мало ли, вдруг стоит добавить себе в коллекцию.