Lade...
 

CX_FILE_SOURCE_RANGE::ReadFromString

CX_FILE_SOURCE_RANGE::ReadFromString

230177
Beschreibung:

Diese Methode arbeitet ähnlich wie Read mit dem Unterschied, dass der Quellcodebereich nicht aus einer Datei ausgelesen wird, sondern der übergebene STRING-Parameter als Dateiinhalt interpretiert wird und der Quellcodebereich aus diesem STRING ausgelesen wird.

Da der Quellcodebereich aus einem STRING ausgelesen wird, hat ReadFromString im Gegensatz zu Read auch keinen Parameter, der steuert, ob #include-Anweisungen interpretiert werden sollen und der Dateiname dieses Quellcodebereichs wird hierbei nicht beachtet, sodass er auch leer sein oder auf eine nicht existierende Datei verweisen kann.

ReadFromString eignet sich besonders gut, falls mehrere Quellcodebereiche aus der gleichen Datei ausgelesen werden sollen. Dann kann die gesamte Datei einmalig eingelesen und die Bereiche im Anschluss aus diesem String ausgelesen werden, was den Vorgang erheblich beschleunigt, da es nur noch einen einzigen Dateizugriff gibt.

Hinweis: Falls der Quellcodebereich aus einem Teilbereich des Quellcodes ausgelesen werden soll (Bsp: Der Codebereich eines String-Widgets, aus dem Quellcode der umschließenden Gruppe), dann lässt sich hierfür per RelativeTo ein Quellcodebereich berechnen, dessen Zeilennummerierung relativ zu dem umschließenden Bereich ist.


Code-Beispiel:
// Read multiple ranges from a single file (under the assumption that all ranges point into the same file)
Var(fileRange, fileSource)
CreateTransObject(CX_FILE_SOURCE_RANGE) -> fileRange
fileName fileRange Put(File())
FALSE fileRange Call(Read) -> fileSource

ranges iterate {
  LocalVar(range) -> range
  fileSource range Call(ReadFromString) 
  // ... do something with the source
}
Stack
Stack Positionn Objekttyp Kurzbeschreibung
Stack(In) Top CX_FILE_SOURCE_RANGE Der Quellcodebereich, der aus dem String gelesen werden soll
  Top-1 STRING Der String aus welchem der Quellcodebereich ausgelesen werden soll
Stack(Out) Top STRING Der ausgelesene Quellcodebereich
Funktionsaufruf: Call(ReadFromString)