Difference between revisions of "preprocessFile"

From Bohemia Interactive Community
Jump to navigation Jump to search
m (note format)
m (Text replacement - "[[Category:Scripting Commands ArmA|" to "[[Category:Scripting Commands Armed Assault|")
(11 intermediate revisions by 5 users not shown)
Line 1: Line 1:
{{Command|= Comments
+
{{Command|Comments=
 
____________________________________________________________________________________________
 
____________________________________________________________________________________________
  
| ofpr |= Game name
+
| ofpr |Game name=
  
|1.85|= Game version
+
|1.85|Game version=
 
____________________________________________________________________________________________
 
____________________________________________________________________________________________
  
| Reads and processes the content of the specified file. Preprocessor is C-like, supports comments using // or /* and */ and macros defined with #define.<br>Due to the hard-drive access this command executes (and the lack of caching) this command should not be used in time-critical script loops. |= Description
+
| Reads and processes the content of the specified file. Preprocessor is C-like, supports comments using // or /* and */ and [[PreProcessor Commands]].<br>Due to the hard-drive access this command executes (and the lack of caching) this command should not be used in time-critical script loops. <br><br>
 +
{{Warning | If the file you are loading is not prepared using UTF-8 encoding and contains some characters [[toArray | with codes]] > 127, they might convert incorrectly}} |DESCRIPTION=
 
____________________________________________________________________________________________
 
____________________________________________________________________________________________
  
| [[String]] <nowiki>=</nowiki> '''preprocessFile''' fileName |= Syntax
+
| [[String]] <nowiki>=</nowiki> '''preprocessFile''' fileName |SYNTAX=
  
|p1= fileName: [[String]] |=Parameter 1
+
|p1= fileName: [[String]] |PARAMETER1=
  
| [[String]] |= Return value
+
| [[String]] |RETURNVALUE=
 
____________________________________________________________________________________________
 
____________________________________________________________________________________________
 
   
 
   
|x1= <code>_content = [[preprocessFile]] "myFunction.sqf";</code> |= Example 1
+
|x1= <code>_content = [[preprocessFile]] "myFunction.sqf";</code> |EXAMPLE1=
 
____________________________________________________________________________________________
 
____________________________________________________________________________________________
  
| [[preprocessFileLineNumbers]], [[loadFile]], [[Function]], [[SQF syntax]], [[call]], [[spawn]], [[execVM]], [[PreProcessor Commands]] |= See also
+
| [[preprocessFileLineNumbers]], [[loadFile]], [[Function]], [[SQF syntax]], [[call]], [[spawn]], [[execVM]], [[PreProcessor Commands]] |SEEALSO=
  
 
}}
 
}}
Line 29: Line 30:
  
 
<dd class="notedate">Posted on March 4, 2008
 
<dd class="notedate">Posted on March 4, 2008
<dt class="note">'''[[User:Alef|Alef]]'''
+
<dt class="note">[[User:Alef|Alef]]
 
<dd class="note">File path is always relative to mission directory. If script dir\a.sqf includes dir\b.sqf, use "dir\b.sqf" and not "b.sqf".
 
<dd class="note">File path is always relative to mission directory. If script dir\a.sqf includes dir\b.sqf, use "dir\b.sqf" and not "b.sqf".
  
 
<dd class="notedate">Posted on July 8, 2011
 
<dd class="notedate">Posted on July 8, 2011
<dt class="note">'''[[User:kju|kju]]'''
+
<dt class="note">[[User:kju|kju]]
 
<dd class="note">Use [[preprocessFileLineNumbers]] instead as it provides more context information on error.
 
<dd class="note">Use [[preprocessFileLineNumbers]] instead as it provides more context information on error.
  
 
<dd class="notedate">Posted on December 17, 2013
 
<dd class="notedate">Posted on December 17, 2013
<dt class="note">'''[[User:Killzone_Kid|Killzone_Kid]]'''
+
<dt class="note">[[User:Killzone_Kid|Killzone_Kid]]
 
<dd class="note">The main difference between [[preprocessFile]] and [[preprocessFileLineNumbers]] is that the latter adds #line directive to the target file, which allows to log the __LINE__ error happened at and the __FILE__ error happened in.
 
<dd class="note">The main difference between [[preprocessFile]] and [[preprocessFileLineNumbers]] is that the latter adds #line directive to the target file, which allows to log the __LINE__ error happened at and the __FILE__ error happened in.
  
Line 43: Line 44:
  
 
<dd class="notedate">Posted on July 25, 2014
 
<dd class="notedate">Posted on July 25, 2014
<dt class="note">'''[[User:BrotherhoodOfHam|BrotherhoodOfHam]]'''
+
<dt class="note">[[User:BrotherhoodOfHam|BrotherhoodOfHam]]
<dd class="note"><br/>Essentially what the preprocessFile command does is it refers to the contents of a file as a string:<br/>
+
<dd class="note"><br>Essentially what the preprocessFile command does is it refers to the contents of a file as a string:<br>
 
Example 1:
 
Example 1:
<br/>boop.html:
+
<br>boop.html:
 
<code><t align = 'center' valign = 'middle' shadow = '0' size = '2'>structured text</t></code>
 
<code><t align = 'center' valign = 'middle' shadow = '0' size = '2'>structured text</t></code>
 
init.sqf:
 
init.sqf:
 
<code>_text = [[parseText]] [[preprocessFile]] "boop.html";
 
<code>_text = [[parseText]] [[preprocessFile]] "boop.html";
 
[[hint]] _text;
 
[[hint]] _text;
</code><br/>
+
</code><br>
 
This is especially useful for long strings, and it works on files with any file extension as long as they can be edited with a text editor.
 
This is especially useful for long strings, and it works on files with any file extension as long as they can be edited with a text editor.
<br/>
+
<br>
 
Example 2:
 
Example 2:
<br/>
+
<br>
init.sqf: <br/>
+
init.sqf: <br>
 
<code>[[hint]] [[preprocessFile]] "description.ext";
 
<code>[[hint]] [[preprocessFile]] "description.ext";
 
[[copyToClipboard]] [[preprocessFile]] "mission.sqm";
 
[[copyToClipboard]] [[preprocessFile]] "mission.sqm";
Line 66: Line 67:
 
<h3 style="display:none">Bottom Section</h3>
 
<h3 style="display:none">Bottom Section</h3>
 
[[Category:Scripting Commands|PREPROCESSFILE]]
 
[[Category:Scripting Commands|PREPROCESSFILE]]
 +
[[Category:Scripting Commands OFP 1.99|{{uc:{{PAGENAME}}}}]]
 
[[Category:Scripting Commands OFP 1.96|PREPROCESSFILE]]
 
[[Category:Scripting Commands OFP 1.96|PREPROCESSFILE]]
[[Category:Scripting Commands ArmA|PREPROCESSFILE]]
+
[[Category:Scripting Commands Armed Assault|PREPROCESSFILE]]
[[Category:Scripting Commands ArmA2|{{uc:{{PAGENAME}}}}]]
+
[[Category:Scripting Commands Arma 2|{{uc:{{PAGENAME}}}}]]
 
[[Category:Scripting Commands Arma 3|{{uc:{{PAGENAME}}}}]]
 
[[Category:Scripting Commands Arma 3|{{uc:{{PAGENAME}}}}]]
[[Category:Scripting_Commands_Take_On_Helicopters|{{uc:{{PAGENAME}}}}]]
+
[[Category:Scripting Commands Take On Helicopters|{{uc:{{PAGENAME}}}}]]

Revision as of 19:37, 3 June 2020

Introduced with Operation Flashpoint: Resistance version 1.851.85
Hover & click on the images for descriptions

Description

Description:
Reads and processes the content of the specified file. Preprocessor is C-like, supports comments using // or /* and */ and PreProcessor Commands.
Due to the hard-drive access this command executes (and the lack of caching) this command should not be used in time-critical script loops.

If the file you are loading is not prepared using UTF-8 encoding and contains some characters with codes > 127, they might convert incorrectly

Syntax

Syntax:
String = preprocessFile fileName
Parameters:
fileName: String
Return Value:
String

Examples

Example 1:
_content = preprocessFile "myFunction.sqf";

Additional Information

See also:
preprocessFileLineNumbersloadFileFunctionSQF syntaxcallspawnexecVMPreProcessor Commands
Groups:
Uncategorised

Notes

i
Only post proven facts here. Report bugs on the Feedback Tracker and discuss on the Arma Discord or on the Forums.

Notes

Posted on March 4, 2008
Alef
File path is always relative to mission directory. If script dir\a.sqf includes dir\b.sqf, use "dir\b.sqf" and not "b.sqf".
Posted on July 8, 2011
kju
Use preprocessFileLineNumbers instead as it provides more context information on error.
Posted on December 17, 2013
Killzone_Kid
The main difference between preprocessFile and preprocessFileLineNumbers is that the latter adds #line directive to the target file, which allows to log the __LINE__ error happened at and the __FILE__ error happened in. PreprocessFile.jpg
Posted on July 25, 2014
BrotherhoodOfHam

Essentially what the preprocessFile command does is it refers to the contents of a file as a string:
Example 1:
boop.html: <t align = 'center' valign = 'middle' shadow = '0' size = '2'>structured text</t> init.sqf: _text = parseText preprocessFile "boop.html"; hint _text;
This is especially useful for long strings, and it works on files with any file extension as long as they can be edited with a text editor.
Example 2:
init.sqf:
hint preprocessFile "description.ext"; copyToClipboard preprocessFile "mission.sqm"; The above is all valid. However, using *.jpg or any other files saved in an image format is not possible.

Bottom Section