DataFlex
DataFlex
Implement Preprocessor #include with StringBuilder
Demonstrates how to implement #include with a Chilkat StringBuilder.Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Handle hoSbSrc
Boolean iSuccess
String sFilePath
Handle hoSbIncludeFile
String sTemp1
Boolean bTemp1
// First build a string that has a preprocessor include
Get Create (RefClass(cComChilkatStringBuilder)) To hoSbSrc
If (Not(IsComObjectCreated(hoSbSrc))) Begin
Send CreateComObject of hoSbSrc
End
Get ComAppend Of hoSbSrc "1" + (character(13)) + (character(10)) + "2" + (character(13)) + (character(10)) + "3" + (character(13)) + (character(10)) To iSuccess
Get ComAppend Of hoSbSrc "#include <qa_data/txt/helloWorld.txt>" + (character(13)) + (character(10)) To iSuccess
Get ComAppend Of hoSbSrc "4" + (character(13)) + (character(10)) + "5" + (character(13)) + (character(10)) To iSuccess
Get ComGetAsString Of hoSbSrc To sTemp1
Showln sTemp1
// sbSrc contains:
// 1
// 2
// 3
// #include <qa_data/txt/helloWorld.txt>
// 4
// 5
// The qa_data/txt/helloWorld.txt file contains "Hello World!"
Get ComGetAfterBetween Of hoSbSrc "#include" "<" ">" To sFilePath
Get ComLastMethodSuccess Of hoSbSrc To bTemp1
If (bTemp1 <> True) Begin
Showln "No #include's found."
Procedure_Return
End
Showln "filePath: " sFilePath
// Load the contents of the filePath
Get Create (RefClass(cComChilkatStringBuilder)) To hoSbIncludeFile
If (Not(IsComObjectCreated(hoSbIncludeFile))) Begin
Send CreateComObject of hoSbIncludeFile
End
Get ComLoadFile Of hoSbIncludeFile sFilePath "utf-8" To iSuccess
// Replace the first occurrence of #include <...> line with the contents of the include file.
Get ComGetAsString Of hoSbIncludeFile To sTemp1
Get ComReplaceAllBetween Of hoSbSrc "#include" ">" sTemp1 True To iSuccess
Get ComGetAsString Of hoSbSrc To sTemp1
Showln sTemp1
// sbSrce now contains:
// 1
// 2
// 3
// Hello World!
// 4
// 5
End_Procedure