4D v14.3

Get 4D folder

Home

 
4D v14.3
Get 4D folder

Get 4D folder 


 

Get 4D folder ( {folder}{;}{*} ) -> Function result 
Parameter Type   Description
folder  Longint in Folder type (if omitted = active 4D folder)
Operator in Return folder of host database
Function result  String in Pathname to 4D Folder

The Get 4D folder command returns the pathname to the active 4D folder of the current application, or to the 4D environment folder specified by the folder parameter, if passed. This command allows you to get the actual pathname of the folders used by the 4D application. By using this command, you ensure that your code will work on any platform running any localized system.

In folder, you can pass one of the following constants, which are located in the “4D Environment” theme:

Constant Type Value
4D Client database folder Longint 3
Active 4D Folder Longint 0
Current resources folder Longint 6
Database folder Longint 4
Database folder Unix syntax Longint 5
Extras folder Longint 2
HTML Root folder Longint 8
Licenses folder Longint 1
Logs folder Longint 7

You will find below a description of each folder:

Preliminary notes about folder names:

  • {Disk} is the disk where the system is installed.
  • The word User represents the name of the user that opened the session.

The 4D environment uses the 4D folder to store the following information:

  • Preferences files used by the 4D environment applications
  • Shortcuts.xml file (custom keyboard shortcuts)
  • Macros v2 folder (macro commands of Method editor)
  • Favorites v11, Favorites v12 or Favorites v13 folder (pathnames for local and remote databases that have been opened)

The 4D folder is created by default at the following location:

  • On Windows 7 and higher: {Disk}:\Users\Current user\AppData\Roaming\4D
  • On OS X: {Disk}:Users:Current user:Library:Application Support:4D

Folder containing the Licenses files of the machine.
The Licenses folder is placed at the following location:

  • On Windows 7 and higher: {Disk}:\ProgramData\4D\Licenses
  • On OS X: {Disk}:Library:Application Support:4D:Licenses

Notes:

  • In the case of an application merged with 4D Volume Desktop, the licenses folder is included in the package of the application.
  • If the licenses folder cannot be created in the system because of a lack of authorization, it is created at the following locations:
    • On Windows 7 and higher: {Disk}:\Users\Current user\AppData\Roaming\4D\Licenses
    • On OS X: {Disk}:Users:Current user:Library:Application Support:4D:Licenses

Folder with customized contents downloaded to each client machine.

Compatibility Note: Beginning with version 11.2 of 4D v11 SQL, it is no longer advisable to use the Extras folder for customized communication between the server and remote machines. It is now recommended to use the Resources folder for this purpose (see the description of the current Resources folder below). The Extras folder is nevertheless still supported by 4D Server so as to maintain the compatibility of existing applications.

Note: If the Extras folder does not exist for the database, executing the Get 4D folder command with the Extras Folder constant will create it.

4D database folder created on each 4D client machine for storing files and folders related to the database (resources, plug-ins, Resources folder, etc.).
The 4D Client Database Folder is placed at the following location on each client machine:

  • On Windows 7 and higher: {Disk}:\Users\Current user\AppData\Local\4D\DatabaseName_Address
  • On OS X: {Disk}:Users:User:Library:Caches:4D:DatabaseName_Address:

Folder containing the database structure file. The pathname is expressed using the standard syntax of the current platform.
With the 4D Client application, this constant is strictly equivalent to the previous 4D Client Database Folder constant: the command returns the pathname of the folder created locally.

Folder containing the database structure file. This constant designates the same folder as the previous one but the pathname returned is expressed using the Unix syntax (Posix), of the type /Users/... This syntax is mainly used when you use the LAUNCH EXTERNAL PROCESS command under OS X.

Resources folder of the database. This folder contains the additional items (pictures, texts) used for the database interface. A component can have its own Resources folder. The Resources folder is located next to the database structure file.
In client/server mode, this folder can be used to organize the transfer of custom data (pictures, files, subfolders, etc.) between the server machine and the client machines. The contents of this folder are automatically updated on each client machine when it connects. All referencing mechanisms associated with the Resources folder are supported in client/server mode (.lproj folder, XLIFF, pictures, and so on). In addition, 4D provides various tools that can be used to manage and update this folder dynamically, more particularly a resources explorer.

Note: If the Resources folder does not exist for the database, executing the Get 4D folder command with the Current Resources folder constant will create it.

The Logs folder of the database. This folder centralizes the log files of the current database. It is created at the same level as the structure file and contains the following log files:

  • database conversion,
  • Web server requests,
  • data verification and repair,
  • structure verification and repair,
  • backup/restore activities journal,
  • command debugging,
  • 4D Server requests (generated on client machines and on the server).

Note: If the Logs folder does not exist for the database, executing the Get 4D folder command with the Logs Folder constant will create it.

Current HTML root folder of the database. The pathname returned is expressed with the standard syntax of the current platform. The HTML root folder is the folder in which the 4D Web server looks for the requested Web pages and files. By default, it is named WebFolder and is placed next to the structure file (or its local copy in the case of 4D in remote mode). Its location can be set on theWeb/Configuration page of the Preferences or dynamically via the WEB SET ROOT FOLDER command.

If the Get 4D folder command is called from a remote 4D, the path returned is that of the remote machine, not that of 4D Server.

The optional * parameter is useful in the case of an architecture using components: it can be used to determine the database (host or component) for which you want to get the folder pathname. This parameter is only valid for Database Folder, Database Folder Unix Syntax and Current Resources folder folders. It is ignored in all other cases.
When the command is called from a component:

  • If the * parameter is passed, the command returns the pathname of the host database folder,
  • If the * parameter is not passed, the command returns the pathname of the component folder.
    The database folder (Database Folder and Database Folder Unix Syntax) returned differs according to the type of the component architecture:
    • In the case of a .4dbase folder/package, the command returns the pathname of the .4dbase folder/package,
    • In the case of a .4db or .4dc file, the command returns the pathname of the “Components” folder,
    • In the case of an alias or shortcut, the command returns the pathname of the folder containing the original matrix database. The result differs according to the format of this database (.4dbase folder/package or .4db/.4dc file), as described above.
    When the command is called from the host database, it always returns the pathname of the host database folder, regardless of whether or not the * parameter is passed.

During the startup of a single-user database, you want to load (or create) your own settings in a file located in the 4D folder. To do so, in the On Startup database method, you can write code similar to this:

 MAP FILE TYPES("PREF";"PRF";"Preferences file")
  ` Map PREF Mac OS file type to .PRF Windows file extension
 $vsPrefDocName:=Get 4D folder+"MyPrefs" ` Build pathname to the Preferences file
  ` Check if the file exists
 If(Test path name($vsPrefDocName+(".PRF"*Num(On Windows)))#Is a document)
    $vtPrefDocRef:=Create document($vsPrefDocName;"PREF") ` If not, create it
 Else
    $vtPrefDocRef:=Open document($vsPrefDocName;"PREF") ` If so, open it
 End if
 If(OK=1)
  ` Process document contents
    CLOSE DOCUMENT($vtPrefDocRef)
 Else
  ` Handle error
 End if

This example illustrates the use of the Database Folder Unix Syntax constant under Mac OS to list the contents of the database folder:

 $posixpath:="\""+Get 4D folder(Database folder Unix syntax)+"\""
 $myfolder:="ls -l "+$posixpath
 $in:=""
 $out:=""
 $err:=""
 LAUNCH EXTERNAL PROCESS($myfolder;$in;$out;$err)

Note: Under Mac OS, it is necessary to put pathnames in quotes when they contain the names of files or folders with spaces in them. The escape sequence "\" can be used to insert the quotation mark character into the string. You can also use the statement Char(Double quote).

If the folder parameter is invalid or if the pathname returned is empty, the OK system variable is set to 0.

 
PROPERTIES 

Product: 4D
Theme: 4D Environment
Number: 485

The OK variable is changed by the commandDifferent in remote mode

 
HISTORY 

Modified: 4D v11 SQL Release 2
Modified: 4D v13

 
SEE ALSO 

COMPONENT LIST
System folder
Temporary folder
Test path name
WEB SET ROOT FOLDER

 
TAGS 

Folder

 
ARTICLE USAGE

4D Language Reference ( 4D v14 R2)
4D Language Reference ( 4D v14 R3)
4D Language Reference ( 4D v14.3)
4D Language Reference ( 4D v14 R4)

Inherited from : Get 4D folder ( 4D v11 SQL Release 6)
Parent of : Get 4D folder ( 4D v13.5)