Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   EInoutError: Datei nicht gefunden (https://www.delphipraxis.net/185797-einouterror-datei-nicht-gefunden.html)

DualCoreCpu 7. Jul 2015 10:47

EInoutError: Datei nicht gefunden
 
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 .

baumina 7. Jul 2015 10:57

AW: EInoutError: Datei nicht gefunden
 
Würdest du das mal debuggen und uns verraten wo der Fehler auftritt?

DeddyH 7. Jul 2015 11:04

AW: EInoutError: Datei nicht gefunden
 
Zitat:

Delphi-Quellcode:
PathOfTemplate := GetCurrentDir + DirSeparator + 'Templates'; //Pfad meiner Vorlagen

Ob das mal richtig ist?

[edit]War vielleicht eher das gemeint?
Delphi-Quellcode:
PathOfTemplate := ExtractFilePath(ParamStr(0)) + 'Templates';
[/edit]

DualCoreCpu 7. Jul 2015 11:08

AW: EInoutError: Datei nicht gefunden
 
Zitat:

Zitat von DeddyH (Beitrag 1307965)
Zitat:

Delphi-Quellcode:
PathOfTemplate := GetCurrentDir + DirSeparator + 'Templates'; //Pfad meiner Vorlagen

Ob das mal richtig ist?

[edit]War vielleicht eher das gemeint?
Delphi-Quellcode:
PathOfTemplate := ExtractFilePath(ParamStr(0)) + 'Templates';
[/edit]

Danke, werd ich testen.


Zitat:

Zitat von baumina
Würdest du das mal debuggen und uns verraten wo der Fehler auftritt?

Ok, werd ich machen, falls Deddys Hinweis nichts bringen sollte.


[EDIT]
Deddys Hinweis ist bereits die Lösung!
[/EDIT]

p80286 7. Jul 2015 12:03

AW: EInoutError: Datei nicht gefunden
 
Zitat:

Zitat von DualCoreCpu (Beitrag 1307966)
[EDIT]
Deddys Hinweis ist bereits die Lösung!
[/EDIT]

Etwas anderes würde mich doch sehr verwundern.
Für Dich wäre es aber besser, wenn Du wirklich mal den Debugger angeworfen hättest.

Gruß
K-H


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:14 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz