Hallo,
ich beschäftige mich gerade mit dem Mystix Texteditor, will den bissl erweitern.
Ich will Dateien laden und in diesen an fe3stgelegter Stelle '${xxxxxx} einen Text reinschreiben, an der Position, wo das Dollarzeichen mit den nachfolgenden geschweiften Klammern steht.
Mein Problem ist, das das für die erste Datei gelingt (dlgChoosePrj.Itemindex=0) aber für folgende nicht mehr. Wenn zum Beispiel dlgChoosePrj.Itemindex=1 ist oder weitere Optionen mit größerem Itemindex ausgewählt werden.
Was muss ich an folgendem Quelltext ändern, damit das Einlesen der *.template immer gelingt?
Delphi-Quellcode:
procedure TMainForm.FileNewExecute(Sender: TObject);
var
PathOfTemplate:
String;
ModulName:
String;
LineNumber: Integer;
NamePos: Integer;
begin
dlgChoosePrj := TdlgChoosePrj.Create(self);
dlgChoosePrj.ShowModal;
PathOfTemplate := GetCurrentDir + DirSeparator + '
Templates';
//Pfad meiner Vorlagen
ChDir(PathOfTemplate);
//hier wird die Exception geworfen!!!! aber nur ab Itemindex von 1 und höher
if dlgChoosePrj.ModalResult = mrOk
then
begin
case dlgChoosePrj.ItemIndex
of
0:
{if IsRegistered('app1.exe') or IsRegistered('app2.exe') then}
begin
DocumentFactory.CloseAll;
DocumentFactory.New;
DocumentFactory.Open('
app12.template');
DocumentFactory.Documents[DocumentFactory.Count-1].FileName := '
file12.cfg';
LineNumber := 0;
while LineNumber < DocumentFactory.Documents[DocumentFactory.Count-1].Editor.Lines.Count
do
begin
//if System.POS('Text-im-File ${zu ersetzender Text}',DocumentFactory.Documents[DocumentFactory.Count-1].Editor.Lines[LineNumber]) > 0 then
begin
ModulName := ExtractFileName(DocumentFactory.Documents[DocumentFactory.Count-1].FileName);
//ModulName := ChangeFileExt(ModulName,'');
ModulName := DeleteFileExt(ModulName);
ReplaceModulName(
'
${zu ersetzender Text}',
ModulName,
LineNumber
);
end;
Inc(LineNumber);
end;
DocumentFactory.Documents[DocumentFactory.Count-1].Save;
end;
1:
if IsRegistered('
app3.exe')
or IsRegistered('
app4.exe')
or IsRegistered('
app41.exe')
then
begin
DocumentFactory.CloseAll;
DocumentFactory.New;
DocumentFactory.Open('
app34.template');
DocumentFactory.Documents[DocumentFactory.Count-1].FileName := '
app34file.cfg';
LineNumber := 0;
while LineNumber < DocumentFactory.Documents[DocumentFactory.Count-1].Editor.Lines.Count
do
begin
//if System.POS('Program ${zu ersetzender Text}',DocumentFactory.Documents[DocumentFactory.Count-1].Editor.Lines[LineNumber]) > 0 then
begin
ModulName := ExtractFileName(DocumentFactory.Documents[DocumentFactory.Count-1].FileName);
//ModulName := ChangeFileExt(ModulName,'');
ModulName := DeleteFileExt(ModulName);
ReplaceModulName(
'
${zu ersetzender Text}',
ModulName,
LineNumber
);
end;
Inc(LineNumber);
end;
DocumentFactory.Documents[DocumentFactory.Count-1].Save;
CurrentDir ist das Verzeichnis des Mystix Editors, meiner Anwendung also.
In diesem Unterverzeichnis existiert ein weiteres mit dem Namen Templates, wo alle Voralgen gespeichert und auch vorhanden sind .