4D v12.4SET RESOURCE |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v12.4
SET RESOURCE
|
SET RESOURCE ( resTipo ; resID ; resDados {; resArquivo} ) | ||||||||
Parâmetro | Tipo | Descrição | ||||||
resTipo | cadeia |
![]() |
Tipo de resource de 4 caracteres | |||||
resID | Inteiro longo |
![]() |
Número de resource ID | |||||
resDados | BLOB |
![]() |
Novo conteúdo do resource | |||||
resArquivo | DocRef |
![]() |
Número de arquivo de referência do resource ou arquivo de resource atual, se omitido | |||||
O comando SET RESOURCE cria ou reescreve o recurso cujo tipo e número é passado em resTipo e resNum com os dados passados no BLOB resDados.
Importante: deve passar uma cadeia de 4 caracteres em resTipo.
Se não for possível escrever o recurso, a variável OK assume o valor 0 (zero).
Se passar um número de referência de arquivo de recursos válido em resArquivo, o recurso é adicionado a esse arquivo. Se não passa resArquivo, o recurso é adicionado ao primeiro arquivo da fila de arquivos de recursos (o último arquivo de recurso aberto).
Nota: um recurso pode ter um tamanho de vários megabytes.
Lembre que está trabalhando com recursos de Mac OS. Qualquer que seja a plataforma usada, os valores internos dos recursos como inteiros longos são armazenados usando a ordenação de bytes ("byte ordering") de McIntosh. Em windows, os dados dos recursos padrão (tais como os recursos listas de cadeias e os recursos de imagens) a ordem dos bytes é invertida automaticamente quando for necessário. Por outro lado, se criar e usar suas próprias estruturas de dados internos, você que terá que realizar a inversão de bytes dos dados quando escrever em um BLOB (por exemplo, passando Macintosh byte ordering a um comando tal como LONGINT TO BLOB).
Durante uma sessão 4D, você conserva as preferências do usuário nas variáveis interprocesso. Para salvar essas preferências de sessão para sessão, pode:
1. Utilizar os comandos SAVE VARIABLES e LOAD VARIABLES para guardar e recuperar as variáveis nos documentos de variáveis em disco.
2. Utilize os comandos VARIABLE TO BLOB, BLOB TO DOCUMENT, DOCUMENT TO BLOB e BLOB TO VARIABLE para guardar e recuperar as variáveis nos documentos BLOB em disco.
3. Utilize os comandos VARIABLE TO BLOB, SET RESOURCE, GET RESOURCE e BLOB TO VARIABLE para guardar e recuperar as variáveis em arquivos de recursos em disco.
Esse é um exemplo do terceiro método.
No Método banco de dados On Exit escreve:
` Método de banco On Exit
If(Test path name("DB_Prefs")#Is a document)
$vhResArchivo:=Create resource file("DB_Prefs")
Else
$vhResArchivo:=Open resource file("DB_Prefs")
End if
If(OK=1)
VARIABLE TO BLOB(◊vbAutoRepite;$vxPrefData)
VARIABLE TO BLOB(◊vlCurTabla;$vxPrefData;*)
VARIABLE TO BLOB(◊asDfltOpcion;$vxPrefData;*)
` etc...
SET RESOURCE("PREF";26500;$vxPrefData;$vhResArquivo)
CLOSE RESOURCE FILE($vhResArquivo)
End if
No Método banco de dados On Startup escreve:
` Método de banco On Startup
C_BOOLEAN(◊vbAutoRepete)
C_LONGINT(◊vlCurTabela)
$vbDone:=False
$vhResArchivo:=Open resource file("DB_Prefs")
If(OK=1)
GET RESOURCE("PREF";26500;$vxPrefData;$vhResArquivo)
If(OK=1)
$vlOffset:=0
BLOB TO VARIABLE($vxPrefData;◊vbAutoRepete;$vlOffset)
BLOB TO VARIABLE($vxPrefData;◊vlCurTabela;$vlOffset)
BLOB TO VARIABLE($vxPrefData;◊asDfltOpção;$vlOffset)
` etc.
$vbDone:=True
End if
CLOSE RESOURCE FILE($vhResArquivo)
End if
If(Not($vbDone))
◊vbAutoRepetir:=False
◊vlCurTabela:=0
ARRAY STRING(127;◊asDfltOpcao;0)
End if
Se o recurso tiver sido escrito, a variável sistema OK toma o valor 1, do contrário toma o valor 0 (zero).
Produto: 4D
Tema: Recursos
Número
509
Criado por: 4D v6