LoadStringFromFile into compiled script (so available on system that doesn't have the file)? [duplicate]

萝らか妹 提交于 2019-12-06 14:43:48

You can add this compile time macro before your code block:

#pragma parseroption -p- 


#define FileHandle
#define FileLine
#define FileName
#define Result
#sub ProcessFileLine
  #define FileLine = FileRead(FileHandle) 
  #if Len(Result) > 0 && !FileEof(FileHandle)
    #expr Result = Result + "#10#13 +  \n"
  #endif
  #if FileLine != '\0'
    #expr Result = Result + "'" + FileLine + "'"
  #endif
#endsub
#sub ProcessFile
  #for {FileHandle = FileOpen(FileName); \
    FileHandle && !FileEof(FileHandle); ""} \
    ProcessFileLine
  #if FileHandle
    #expr FileClose(FileHandle)
  #endif   
#endsub

#define ReadFileAsStr(str AFileName) \
  Result = '', FileName = AFileName, ProcessFile, Result

This macro outputs file content as string constant. This works for most RTF files, but some characters inside RTF can broke this code. To fix this you need to escape ', " and may be some other characters inside ProcessFileLine sub.

Then you can use this macro in [Code] block this way:

RichEditViewer.RTFText := {#emit ReadFileAsStr("custom.rtf")};
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!