4D v16.3METHOD SET CODE |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v16.3
METHOD SET CODE
|
METHOD SET CODE ( rota ; codigo {; *} ) | ||||||||
Parâmetro | Tipo | Descrição | ||||||
rota | Texto, Array texto |
![]() |
Texto ou array texto que contém uma ou mais rotas de método | |||||
codigo | Texto, Array texto |
![]() |
Código dos métodos designados | |||||
* | Operador |
![]() |
Se passado = o comando aplica ao banco de dados local quando é executado de um componente (parâmetro ignorado fora deste contexto) | |||||
O comando METHOD SET CODE modifica o código dos métodos designados pelo parâmetro rota com o conteúdo passado no parâmetro codigo. Este comando pode acessar ao código de todos os tipos de métodos: métodos de banco, triggers, métodos projeto, métodos formulário e métodos objeto.
No caso de um método projeto: se o método existir no banco, seu conteúdo é substituído; se não existir, é criado com os seus conteúdos.
Pode usar dois tipos de sintaxe, baseadas em arrays texto ou em variáveis texto:
C_TEXT(tVpath) // variáveis texto
C_TEXT(tVcode)
METHOD SET CODE(tVpath;tVcode) // código de um só método
ARRAY TEXT(arrPaths;0) // arrays texto
ARRAY TEXT(arrCodes;0)
METHOD SET CODE(arrPaths;arrCodes) // código de vários métodos
Não é possível misturar as duas sintaxes.
Se passar uma rota de acesso errada, o comando não faz nada.
Quando se chama METHOD SET CODE, os atributos dos métodos se reinicializam por padrão. No entanto, se a primeira linha do codigo de um método contém metadados válidos (expressados em JSON), são usados para definir os atributos do método e a primeira linha não é inserida. Exemplo de metadados:
// %attributes = {"invisible":true,"lang":"fr","folder":"Security"}
Nota: Estes metadados são gerados automaticamente pelo comando METHOD GET CODE. Para saber mais sobre atributos suportados, veja o comando METHOD SET ATTRIBUTES.
Concernente a propriedade "folder" dos metadados:
Pode executar o comando de uma componente, mas neste caso você deve passar o parâmetro * porque o acesso ao código do componente é somente leitura. Se omitir o parâmetro * neste contexto, o erro -9763 é gerado.
Este exemplo exporta e importa a totalidade dos métodos projeto de uma aplicação:
$root_t:=Get 4D folder(Database folder)+"methods"+Folder separator
ARRAY TEXT($fileNames_at;0)
CONFIRM("Import or export methods?";"Import";"Export")
If(OK=1)
DOCUMENT LIST($root_t;$fileNames_at)
For($loop_l;1;Size of array($fileNames_at))
$filename_t:=$fileNames_at{$loop_l}
DOCUMENT TO BLOB($root_t+$filename_t;$blob_x)
METHOD SET CODE($filename_t;BLOB to text($blob_x;UTF8 text without length))
End for
Else
If(Test path name($root_t)#Is a folder)
CREATE FOLDER($root_t;*)
End if
METHOD GET PATHS(Path project method;$fileNames_at)
METHOD GET CODE($fileNames_at;$code_at)
For($loop_l;1;Size of array($fileNames_at))
$filename_t:=$fileNames_at{$loop_l}
SET BLOB SIZE($blob_x;0)
TEXT TO BLOB($code_at{$loop_l};$blob_x;UTF8 text without length)
BLOB TO DOCUMENT($root_t+$filename_t;$blob_x)
End for
End if
SHOW ON DISK($root_t)
Produto: 4D
Tema: Accesso aos Objetos de Design
Número
1194
Criado por: 4D v13
Modificado: 4D v14
Modificado: 4D v15
Manual de linguagem 4D ( 4D v16)
Manual de linguagem 4D ( 4D v16.1)
Manual de linguagem 4D ( 4D v16.2)
Manual de linguagem 4D ( 4D v16.3)