#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. Спасибо, это очень, очень проницательный комментарий.