Delphi 7 I\O Error 103 на повторное открытие файла для записи
Имеется функция обработки файла, в процессе работы которой формируется временный файл. После окончания работы функции временный файл удаляется. Ошибка возникает при повторном вызове функции (без перезапуска программы). При этом повторный вызов создает файл с нулевым размером.
function Windguru_Transfer_DB (
InputFileName : string;
OutputFileName : string;
LogMemo : TMemo;
ListOut : TStringList;
SGridOut : TStringGrid;
FlagSave : Boolean) : Boolean;
label ExitFunction;
const DumpFileName : string = 'dump.file'; // Имя временного файла
var FileDump : TextFile; // Переменная временного файла
// ... продолжение описания
begin
// ... инициализация переменных
{$I-} // открываем на запись
AssignFile (FileDump, DumpFileName);
Rewrite (FileDump); // - здесь возникает ошибка при повторном вызове функции
{$I+}
// ... подготовка к чтению исходного файла
while not Eof (FileIn) do
begin
// здесь читаем исходный файл и записываем информацию во временный файл
end;
{$I-} // закрываем временный файл
CloseFile (FileDump);
{$I+}
// ... проверка прочтенных параметров
Reset (FileDump); // открываем файл для чтения
// ... читаем и обрабатываем информацию
CloseFile (FileDump); // закрываем временный файл
// ... передаем полученные данные
{$I-}
Erase (FileDump); // удаляем временный файл
{$I+}
end;
Ответы (1 шт):
Автор решения: csdeant
→ Ссылка
Ответ оказался банальным - лишнее закрытие другого файла (конечного). В итоге оказались перекрытыми открытие как временного, так и другого исходного файла. О подобных проблемах в Интернете уже неоднократно писали, но внятного и исчерпывающего ответа я не нашел.