Boa tarde.
Eu e alguns amigos trabalhamos em um script um tanto grande, e para facilitar as coisas a gente separou ele em partes e usamos o #include para executar essas partes dentro do script.
Porem quando for compilar eu queria substituir esses includes pelo próprio script, eu não sou muito bom trabalhando em scripts para procurar e substituir coisas.
Caso for possível também, retirar todos os comentários do script (pois a gente usa isso como um chat e acaba ocupando muito espaço).
Mesclar scripts Topic is solved
Moderator: Gio
- juanmuscaria
- Posts: 65
- Joined: 29 Oct 2017, 10:53
- Location: Brazil
- Contact:
Re: Mesclar scripts
Boa noite Juanmuscaria.
Acredito que o ahk2exe (o compilador padrão) faz a inserção dos #include automaticamente durante a compilação. Assim, você deve ter como resposta um único executável que já vai rodar sem precisar dos outros scripts.
E sobre retirar os comentários, acredito que o compilador também já faz isso automaticamente, mas se você quiser tirar antes da compilação, tem este script antigo do usuário awannaknow que pode ajudá-lo.
Remover comentários: Para usar o script abaixo, basta executá-lo, e depois clicar em um arquivo .ahk qualquer e arrastar até a janela que se abriu. O script salvará um novo arquivo na pasta do original com o nome seguido de (NoComments). Esse novo arquivo é o mesmo que você arrastou, porém sem os comentários.
Acredito que o ahk2exe (o compilador padrão) faz a inserção dos #include automaticamente durante a compilação. Assim, você deve ter como resposta um único executável que já vai rodar sem precisar dos outros scripts.
E sobre retirar os comentários, acredito que o compilador também já faz isso automaticamente, mas se você quiser tirar antes da compilação, tem este script antigo do usuário awannaknow que pode ajudá-lo.
Remover comentários: Para usar o script abaixo, basta executá-lo, e depois clicar em um arquivo .ahk qualquer e arrastar até a janela que se abriu. O script salvará um novo arquivo na pasta do original com o nome seguido de (NoComments). Esse novo arquivo é o mesmo que você arrastou, porém sem os comentários.
Code: Select all
/*
------------- AHK No Comments ---------------
By awannaknow
http://www.autohotkey.net/~awannaknow/
AHK_L 32 UTF8
-is surely AHK Classic Compatible. Has to be tested Yet !
-----------------------------------------------------
*/
/*
------------- Friday 14th of October 2011 ----------
I Passed by and liked what Nazzal had done : AHKCaser
http://www.autohotkey.com/forum/topic72146.html&highlight=ahkcaser
I used his idea to make this one.
That's my second Software !
-----------------------;-) ----------------------------
Just drop file/folders and all comments in .ahk files will be removed. Close with Escape Keyboard Key.
Destination files in the same folder as source files.
Source Files not modified.
New files named :
SourceFileName(NoComments).ahk
Back up your files just in case.
------------------------------------------------------
*/
/*
----------------------------- Credits -----------------------------
Special thanks to all knowledgeable Members which helped me, to say the least, or participated in any way or from which I borrowed code from their previous works, to get it done.
Truly, I only bring the idea and all the real work was done by :
Frankie, [VxE], Morpheus
A special thanks to rbrtryn which did most of the work and even find this app name.
----- Feel free to contact me if I forgot to mention your name -----
*/
/*
----------------------------- AutoHotKey -----------------------------
Of course nothing of this would have been possible without AutoHotKey aka AHK :
http://www.autohotkey.com
Created by : Chris Mallet
And all new Versions/Branch
created by Lexicos
*/
#NoEnv
#Persistent
#SingleInstance Force
SetWorkingDir %A_ScriptDir%
SendMode Input
Gui, +AlwaysOnTop -Border
Gui, Font, s13
Gui, Color, Olive
Gui, Add, Pic, x10 y15 icon2, %A_AhkPath%
Gui, Add, Text, x+0 y-10 cwhite w295 h45 gGuiMove +Center, `nAHK No Comments
Gui, Font, s10
Gui, Add, Text, xp y+0 h30 Wp cWhite gGuiMove vDrop +Center, Drop files and folders
Gui, Show, y0 w355 h65 NoActivate, AHK No Comments
Return
GuiMove:
PostMessage, 0xA1, 2,,, A
Return
GuiDropfiles:
Gui, Color, 88B000
Gui, -E0x10
GuiControl, ,Dropped, Please wait . . .
Loop, Parse, A_GuiEvent, `n, `r
{
If (! InStr(FileExist(A_Loopfield), "D")) {
If (! RegExMatch(A_LoopField, ".ahk$"))
Continue
AHKFileNoComments := RegExReplace(A_LoopField, "(\\.*)\.", "$1(NoComments).")
Strip(A_LoopField, AHKFileNoComments)
}
Else {
Loop % A_LoopField "\*.ahk",0,1
{
If (! RegExMatch(A_LoopFileFullPath, ".ahk$"))
Continue
AHKFileNoComments := RegExReplace(A_LoopFileFullPath, "(\\.*)\.", "$1(NoComments).")
Strip(A_LoopFileFullPath, AHKFileNoComments)
}
}
}
Gui, Color, Olive
GuiControl, ,Drop, Drop files and folders
Gui, +E0x10
Return
GuiEscape:
ExitApp
Strip( in, out )
{
Loop Read, %in%, %out%
{
TwoChars := SubStr(LTrim(A_LoopReadline), 1, 2)
If (TwoChars = "/*") {
BlockComment := True
Continue
}
If (TwoChars = "*/") {
BlockComment := False
ReadLine := RegExReplace(A_LoopReadLine, "\*/\s*")
If (Trim(ReadLine) <> "") {
FileAppend %ReadLine% `n
}
Continue
}
If (BlockComment) {
Continue
}
If (InStr(A_LoopReadline, ";")) {
ReadLine := RegExReplace(A_LoopReadline, "^;.*$|\s+;.*$")
If (Trim(ReadLine) <> "") {
FileAppend %ReadLine% `n
}
Continue
}
FileAppend %A_LoopReadLine% `n
}
}
"What is suitable automation? Whatever saves your day for the greater matters."
Barcoder - Create QR Codes and other Barcodes using only Autohotkey !!
Archmage Gray - A fantasy shooter game fully coded in AutoHotkey
Barcoder - Create QR Codes and other Barcodes using only Autohotkey !!
Archmage Gray - A fantasy shooter game fully coded in AutoHotkey
- juanmuscaria
- Posts: 65
- Joined: 29 Oct 2017, 10:53
- Location: Brazil
- Contact:
Re: Mesclar scripts
É que esse script seria compilado dentro de um projeto em c++ e não poderia ter os #include para poder funcionar corretamente
Ms acho que vou ter que fazer isso na mão
Ms acho que vou ter que fazer isso na mão
Re: Mesclar scripts Topic is solved
Bom, nesse caso, você também poderia criar um parser simples, que fizesse as substituições para você sempre que encontrasse uma linha com #include.
Seria mais ou menos assim:
1. Criar uma variável para a nova versão do arquivo (arquivofinal, por exemplo)
2. Ler o arquivo original (FileRead) em uma outra variável (arquivooriginal, por exemplo)
3. Separar o arquivos por linha (StringSplit, linha_, arquivooriginal, `n)
4. Verificar o conteúdo dos 8 primeiros caracteres de cada linha para disparar a rotina de alteração (If (SubStr(Linha_%A_Index%, 1, 8) = "#include"))
4.1 Se o if resultou negativo, concatenar a linha atual na variável do arquivo final sem #includes (arquivofinal := arquivofinal . linha_%A_Index%)
4.2 Se o if resultou positivo, isolar a string do caminho do arquivo, e depois ler ele com FileRead. O conteúdo será então inserido no arquivo sem #includes no lugar da linha atual (FileRead o arquivo do caminho e depois concatena o resultado na variável arquivofinal. Verificar a necessidade de concatenar também um linefeed `n antes ou depois do lugar).
5. Salvar o arquivo final (FileAppend)
6. Abrir ele para ver se salvou corretamente.
Seria mais ou menos assim:
1. Criar uma variável para a nova versão do arquivo (arquivofinal, por exemplo)
2. Ler o arquivo original (FileRead) em uma outra variável (arquivooriginal, por exemplo)
3. Separar o arquivos por linha (StringSplit, linha_, arquivooriginal, `n)
4. Verificar o conteúdo dos 8 primeiros caracteres de cada linha para disparar a rotina de alteração (If (SubStr(Linha_%A_Index%, 1, 8) = "#include"))
4.1 Se o if resultou negativo, concatenar a linha atual na variável do arquivo final sem #includes (arquivofinal := arquivofinal . linha_%A_Index%)
4.2 Se o if resultou positivo, isolar a string do caminho do arquivo, e depois ler ele com FileRead. O conteúdo será então inserido no arquivo sem #includes no lugar da linha atual (FileRead o arquivo do caminho e depois concatena o resultado na variável arquivofinal. Verificar a necessidade de concatenar também um linefeed `n antes ou depois do lugar).
5. Salvar o arquivo final (FileAppend)
6. Abrir ele para ver se salvou corretamente.
"What is suitable automation? Whatever saves your day for the greater matters."
Barcoder - Create QR Codes and other Barcodes using only Autohotkey !!
Archmage Gray - A fantasy shooter game fully coded in AutoHotkey
Barcoder - Create QR Codes and other Barcodes using only Autohotkey !!
Archmage Gray - A fantasy shooter game fully coded in AutoHotkey
Return to “Ajuda e Suporte Geral”
Who is online
Users browsing this forum: No registered users and 9 guests