Lade...
 

CX_FILE_SOURCE_RANGE::Rewrite

CX_FILE_SOURCE_RANGE::Rewrite

Beschreibung:

Diese Methode überschreibt den Quellcodebereich in der Datei mit dem übergebenen Inhalt. Der Dateiinhalt vor und hinter dem zu überschreibenden Quellcodebereich bleibt dabei unverändert.

Im Anschluss an Rewrite wird die Position des Quellcodebereichs angepasst, sodass der Quellcodebereich im Anschluss den neu geschriebenen Textbereich reflektiert. Read wird im Anschluss an Rewrite immer den an Rewrite übergebenen STRING zurückgeben.

Ein leerer Quellcodebereich (Start-Position = End-Position) stellt für Rewrite eine Einfügeposition dar. Falls Rewrite auf einem Quellcodebereich mit start=(10:3), end=(10:3) aufgerufen wird, dann wird der übergebene String ab dem 4. Zeichen in der 11. Zeile eingefügt.

Wird für die Start- oder Endposition eine Zeilennummer angegeben, die in der Datei nicht existiert (weil die Datei kleiner ist), dann repräsentiert diese Position die Position hinter dem letzten Zeichen der Datei. Auf diese Weise kann der Inhalt einer Datei ab einer Position bis zum Dateiende überschrieben werden oder Inhalt hinten an eine Datei angefügt werden.

Falls dieser Quellcodebereich ungültig ist oder die Datei nicht zum Schreiben geöffnet werden kann, wird eine Fehlermeldung ausgegeben.

Achtung: Mehrere Rewrite-Operationen sind nur auf dem gleichen CX_FILE_SOURCE_RANGE-Objekt wohl definiert. Weder Widgets, noch Module, noch andere CX_FILE_SOURCE_RANGE-Objekte werden über die Änderung der Datei informiert, sodass deren Zeileninformationen im Anschluss komplett falsch sein können.

Code-Beispiel:
// Remove current widget from its source file
"" NULL Widget Call(GetSourceRange) Call(Rewrite)

// Append a comment to source file
Var(range)
CreateTransObject(CX_FILE_SOURCE_RANGE) -> range
"evaluate.cxp" range Put(File())  // implicitly sets EndLine() to max line
0x7FFFFFFF range Put(StartLine()) // set start line to max line
"// some comment \n" range Call(Rewrite)
range String // "(file=\"Y:\\classix\\Evaluate\\projects\\evaluate.cxp\", range=(start=134:0, end=135:0))"

// read the comment back
FALSE range Call(Read) // "// some comment \n"


// delete the comment again
"" range Call(Rewrite)
range String // "(file=\"Y:\\classix\\Evaluate\\projects\\evaluate.cxp\", range=(start=134:0, end=134:0))"
Stack
Stack Position Objekttyp Kurzbeschreibung
Stack(In) Top CX_FILE_SOURCE_RANGE Der Codebereich
  Top-1 STRING Der zu schreibende Text
Stack(Out) Top    
Funktionsaufruf: Call(Rewrite)