Файл не найден в Delphi (FMX)

#delphi #firemonkey

#delphi #firemonkey

Вопрос:

Я пытаюсь загрузить кучу строк из текстового файла, расположенного в том же каталоге, что и .dproj, и Delphi не может найти файл, из которого я пытаюсь прочитать. код выглядит следующим образом:

     procedure TFoPrincipale.Button2Click(Sender: TObject);
var monFich : TextFile;
    Sligne : string;
begin
try
AssignFile(monFich, 'docText.txt');
Reset(monFich); 
except
      showmessage('Le fichier est introuvable');
      exit;
end;

  while not Eof (monFich) do
  begin
    Readln(monFich, Sligne);
    Memo1.Lines.Add(Sligne);
  end;

CloseFile(monFich);

end;
 

Текстовый файл

Комментарии:

1. Вы не указываете путь к файлу, и я вижу там подпапку Win32. Ваш исполняемый файл, скорее всего, находится в этой подпапке, и я подозреваю, что это будет его рабочий каталог. Попробуйте сначала указать полный путь в имени файла

2. да, он работает, когда я перемещаю его в Win32 Debug, я попробую указать полный путь к нему и дать вам обратную связь. Спасибо, приятель

3. Взгляните на концепцию «Рабочий / текущий каталог», а также на то, как динамически получить требуемый путь

4. Никогда не используйте относительные пути.

5. @AndreasRejbrand Если только вы не пишете приложение conosle

Ответ №1:

Если вы используете параметры проекта по умолчанию, то исполняемый файл вашего приложения компилируется не в каталог проекта, а во Win32Debug вложенную папку или Win32Release папки вашего проекта.

Поэтому вы должны учитывать относительный путь к вашему файлу. В вашем случае нужный файл находится во второй родительской папке папки, в которой находится ваш исполняемый файл.

Я рекомендую вам сначала получить путь к исполняемому файлу, используя ExtractFilePath(Application.ExeName) .

Затем вы можете использовать TDirectory.GetParent() для перемещения вверх по цепочке каталогов, пока не дойдете до нужного каталога.

Комментарии:

1. Спасибо, это очень, очень проницательный комментарий.