Scripts discussion (1)

Discuss and announce AkelPad plugins
Locked
  • Author
  • Message
Offline
Posts: 874
Joined: Sat Jan 16, 2010 2:03 pm

Post by opk44 »

Andrey_A_A wrote:
А как записываешь в файл?
скрипт vbs
FSO.OpenTextFile(sFile, 2).Write Text
У метода OpenTextFile 4 параметра.
Syntax

Code: Select all

 oFileSysObj.OpenTextFile(FileName[, IOMode[, Create[, Format]]])
В Вашем примере указано только 2, т.е. остальные два принимаются дефолтными: 3 = флаг создания файла (тип Boolean) (если его не обнаружено, то по умолчанию false), 4 = A constant specifying ASCII or Unicode format (тип Long) (по умолчанию = 0, т.е. формат ASCII)
Const TristateUseDefault = -2 ' Opens as System default
Const TristateTrue = -1 ' Opens as Unicode
Const TristateFalse = 0 ' Opens as ASCII

Попробуйте что-то вроде этого:

Code: Select all

Const ForReading = 1, ForWriting = 2, ForAppending = 8
Const TristateFalse = 0, TriStateTrue = -1, TristateUseDefault = -2

strText = "Спасибочки"
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile("c:\test.txt", ForAppending, True, TristateUseDefault)

objFile.Write strText
objFile.Close
или используйте TriStateTrue (-1) вместо TristateUseDefault (-2), если точно уверены, что файл будет юникодным.

KDJ
Offline
Posts: 1949
Joined: Sat Mar 06, 2010 7:40 pm
Location: Poland

Post by KDJ »

VladSh wrote:KDJ
I propose to transform InsertFolderName.js into SHBrowseForFolder.js, which make the function SHBrowseForFolder() and put in ...\Scripts\Include\... It will be very convenient.
Done: BrowseForFolder_function.js

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

Post by VladSh »

KDJ
Thank you! Perfect!

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

Post by FeyFre »

KDJ
Just for note: today translator.js determined as possible virus by CureIt.

KDJ
Offline
Posts: 1949
Joined: Sat Mar 06, 2010 7:40 pm
Location: Poland

Post by KDJ »

FeyFre
And this is interesting. Only the DrWeb found the virus.
http://www.virustotal.com/file-scan/rep ... 1308780851

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

Post by FeyFre »

KDJ
Yes, exactly this CureIt said.
This means it is not virus, but has virus-like pattern, like: .js file which lays deeply in Windows directory, and it uses XMLHTTPRequest to communicate outside system. And it is good it detected it(because exactly today a got virus, which uses WHS(.vbs script) to distribute itself which was located in windows\system32 directory).
False positive alarm is better than false negative.
Probably we should obfuscate script in some manner, to prevent it to be treated as "ASCII C++ program text, with CRLF line terminators"(from your VT link)

PS: once in past DrWeb detected virus in .bat file which I wrote myself a few minutes earlier(contained only two for statements).

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

Post by VladSh »

Instructor
Часто бывает нужно скопировать выделение или всё содержимое текущей вкладки в новую. Так вот команда

Code: Select all

AkelPad.Command(4101 /*IDM_FILE_NEW*/);
создаёт файл в кодировке, которая указана в настройках программы, вследствие чего незаметно для пользователя "портится" кодировка при сохранении... Определяется опытным путём, т.е. когда где-то этот новый файл не работает так, как надо. Уходит много времени на разбор таких ситуаций...

Хотелось бы:
1. чтобы была возможность при создании новой вкладки опционально задавать параметры nCodePage и bBOM.
2. (для случаев сохранения) чтобы код

Code: Select all

AkelPad.SaveFile(AkelPad.GetEditWnd(), pInitialFile, nCodePage, bBOM);
сохранял файл именно с nCodePage, bBOM, которые передаются в скрипте, а не брал эти значения из текущей вкладки, как происходит сейчас (брать текущие надо когда эти параметры опущены).

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

Post by FeyFre »

VladSh
В поле nCodePage поля EDITINFO структуры вкладки установить интересующую сразу после создания?

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

Post by VladSh »

FeyFre
Если бы был метод, возвращающий объект структуры EDITINFO, по аналогии с oSys, oSet, это было бы удобно. Но удобнее и правильнее всё-таки командовать этим при создании вкладки, чем менять потом.

В идеале хотелось бы и объект для работы со структурами EDITINFO (это поможет для возможности задания имени и расширения новому файлу, а потом считывания этой инфы при сохранении, да и ещё для многого чего...), и то, что изложено мной выше.

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

Post by FeyFre »

VladSh
Ну вообще при создании нового документа АР нету потребности занть кодировку, ибо хранение всё-равно происходит во внутреннем формате. Так работает АР с интерфейса.

Объект то создать можно, это совсем не проблема. Просто не факт что "задания имени и расширения новому файлу" и прочие параметры полезны и будут учтены АР. Толкьо пробовать надо.

Offline
Site Admin
Posts: 6403
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

VladSh

Code: Select all

AkelPad.Command(4101 /*IDM_FILE_NEW*/);
AkelPad.SaveFile(0, "", 65001, 1);
AkelHistory-Rus.txt wrote:AkelPad 4.4.4 (19.06.2010)
--------------------------
Добавлено: быстрое сохранение или переоткрытие нового, не сохраненного документа в другой кодировке теперь приводит к изменению текущей кодировки.

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

Post by VladSh »

Instructor
Гляньте пожалуйста SaveAs.js, там где коммент "//внешнее сохранение файла", я эту строку коментил и вставлял Вашу, и ставил её перед моей, изменял её, чтобы передавались мои nCodePage, bBOM.. в любых вариантах не работает.

Offline
Site Admin
Posts: 6403
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

VladSh

Code: Select all

         if (pCurrentFile) 
          { 
             AkelPad.Command(4101 /*IDM_FILE_NEW*/);         //создание (закладки) для сохранения выделения отдельным файлом
             AkelPad.SaveFile(0, "", nCodePage, bBOM);
             AkelPad.ReplaceSel(pAllText); 
          }
Добавлено:
Смотря на код добавление "AkelPad.SaveFile(0, "", nCodePage, bBOM)" не должно влиять. Кстати у меня вылетел AkelPad после вызова SaveAs.js.

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

Post by VladSh »

Instructor
Кодировка и так работает:

Code: Select all

AkelPad.SaveFile(0, pInitialFile, nCodePage, bBOM);
а "формат новой строки" Unix или Win - слетает.
Last edited by VladSh on Thu Jun 23, 2011 12:55 pm, edited 1 time in total.

Offline
Site Admin
Posts: 6403
Joined: Thu Jul 06, 2006 7:20 am

Post by Instructor »

VladSh
Видимо ошибка в скрипте SaveAs.js возникает от некорректного формата передаваемой переменной pFilter функции FileDialog:
См. lpstrFilter "http://msdn.microsoft.com/en-us/library ... s.85).aspx"
Locked