Не находит файл в папке с проектом
По какой-то причине, программа не может найти файл, который находится в папке с самим проектом. Прилагается код программы, а также скрин папки с проектом
unit Main;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type
TFormMain = class(TForm)
Button1: TButton;
Button2: TButton;
Memo1: TMemo;
StartButton: TButton;
procedure StartButtonClick(Sender: TObject);
end;
TWay = record
F:TextFile;
end;
const
n=3;
var
FormMain: TFormMain;
MainArray:array[1..n,1..n] of TWay;
implementation
{$R *.dfm}
procedure TFormMain.StartButtonClick(Sender: TObject);
var
i: Integer;
j: Integer;
s:string;
begin
for i := 1 to n do
begin
AssignFile(MainArray[1,i].F,IntToStr(i)+'.txt');
end;
Reset(MainArray[1,1].F);
While not Eof(MainArray[1,1].F) do
begin
Readln(MainArray[1,1].F, s);
Memo1.Text:=Memo1.Text+s;
end;
end;
end.
Ответы (2 шт):
Проблема заключалась в неверном указании пути, был пропущен один обратный слеш перед IntToStr(i)
Проект по умолчанию собирает EXE не прямо в папку проекта, а в
.\$(Platform)\$(Config). В вашем случае, вероятно, это\Win32\Debug\. Соответственно никаких1.txtтам в папке рядом нету. Это видно на вашем скриншоте. Решение - либо поменять папку сборки на-пусто-, либо указывать правильный относительный путь..\..\IntToStr(i) + '.txt'(т.е. подняться на 2 уровня выше).Вот так выглядят настройки проекта по умолчанию:
-
могу прописать абсолютный вот так:
'C:\Users\User\Desktop\Аисд лабы 2 сем\Лаба 1'+IntToStr(i)+'.txt'
Результат не изменится
Тут очевидно просто ошибка в пути - пропущен слеш после Лаба 1 и перед именем файла.


