Форум: "Основная";
Текущий архив: 2002.12.12;
Скачать: [xml.tar.bz2];
ВнизAssignFile(FS, Найти похожие ветки
← →
BadBlock (2002-11-25 05:19) [0]Не уверен, что пишу точно по теме конференции.. но все же:
Что есть:
в теле процедуры объявляю переменную как текстовый файл, тоесть:
var
FS : TextFile;
дальше привязываю ее к пути ...
begin
AssignFile(FS, "c:\что-то там.тхт");
дальше все работает... и появляется кнопка "сначала"
идет обращение к той же процедуре, но путь теперь уже может быть другим... (он его из файла читает)
Компилятор мя посылает...
Что надо:
Либо Затирание всех переменных, которые есть в программе... (и этой соотв. тоже)
Либо возможность убрать только эту привязку...
Либо возможность изменить эту привязку...
То есть мне интересно есть ли что нибудь наподобии функции типа скажемUnAssign
илиAssignFile := false
...
Вот. Надеюсь меня поняли... буду благодарен за любую помощь.
Chester
← →
trotski (2002-11-25 05:56) [1]Если ты открывал файл, то надо не забыть сделать closefile() , а потом просто снова assignFile(). То есть ты снова ассоциируешь файловую переменную с файлом на диске.
← →
keymaster (2002-11-25 06:00) [2]
Procedure MyProc;
var
FS : TextFile;
begin
AssignFile(FS, "C:\a.txt");
Reset(FS);
********
CloseFile(FS);
AssignFile(FS, "C:\b.txt");
Reset(FS);
********
CloseFile(FS);
end;
должно так работать :)
← →
BadBlock (2002-11-25 06:11) [3]CloseFile привязки не снимает!
← →
Song (2002-11-25 07:25) [4]Что-то я первый раз слышу, что нельзя пересвязать файловую переменную с другим файлом после закрытия текущей сессии работы.
← →
Anatoly Podgoretsky (2002-11-25 08:14) [5]Вот это покажи "Компилятор мя посылает..."
← →
mrcat (2002-11-25 14:19) [6]procedure Reset(var F [: File; RecSize: Word ] );
If F is a text file, F becomes read-only.
← →
BadBlock (2002-11-27 03:46) [7]мдя... помощи хоть пруд пруди...
хоть ктоб один дельный совет дал...
Функция ClosFile просто закрывает файл, чтоб с ним другие файловые переменные могли работать, привязку первой переменной эта функция не снимает.. блин! Это вообще возможно или нет, мне ктонибудь скажет?
← →
2ПлохойБлок (2002-11-27 04:38) [8]Не строй из себя слишком умного. Просто приведи ошибки и связанные с ними строки кода. Или точнее наоборот - строки и ошибки.
← →
mumu (2002-11-27 05:48) [9]2BadBlock (25.11.02 06:11)
>CloseFile привязки не снимает!
Документация Delphi:
~~~~~~~~~~~~~~~~~~~~~~~~~
ищем "CloseFile procedure"
Описание:
procedure CloseFile(var F);
Use the CloseFile procedure instead of Close to terminate
the association between a file variable and an external disk file.
F is a file variable of any file type opened using Reset, Rewrite,
or Append. The external file associated with F is completely
updated and then closed, freeing the file handle for reuse.
Перевод:
Используйте процедуру CloseFile взамен Close для разрыва
ассоциации между файловой переменной и файлом на диске.
F является файловой переменной для любого типа файла открытого
с применением Reset, Rewrite, или Append. Внешний файл
ассоциированный с F полностью обновляется и затем закрывается,
ОСВОБОЖДАЯ дескриптор файла для ПОВТОРНОГО ИСПОЛЬЗОВАНИЯ.
← →
Anatoly Podgoretsky (2002-11-27 08:13) [10]BadBlock (27.11.02 03:46)
Помощь тебе явно не нужна, так как ты не собираешься говорить об ошибке компилятора
← →
BadBlock (2002-11-28 04:00) [11]Цитирую...
Фаронов В.В.
"Процедуры и функции для работы файлами..."
Procedure CloseFile (var F); - Закрывает файл, однако связь файловой переменной F с именем файла, устаноленная ранее процедурой AssignFile, сохраняется. .... Поскольку связь файла с файловой переменной сохраняется, файл можно повторно открыть (тобишь запускать процедуры reset и тд.. прим. мое) без дополнительного использования процедуры AssignFile.
Конец цитаты...
По поводу текста ошибки компилятора... в общих чертах - переменная уже ассигнована... точный текст - завтра, послезавтра... вот.
← →
mumu (2002-11-28 10:01) [12]2BadBlock (28.11.02 04:00)
>...
>Procedure CloseFile (var F); - Закрывает файл, однако
>связь файловой переменной F с именем файла, установленная
>ранее процедурой AssignFile, сохраняется.
Не вижу проблем. Файловая переменная и дескриптор файла
вещи разные.
Дело в том, что файловая переменная это, грубо говоря,
указатель на строку типа "c:\a.txt", а дескриптор файла
это указатель на объект файл.
Выполняя функцию открытия файла, мы связываем
файловую переменную и дескриптор файла.
Функция CloseFile разрывает эту связь и делает
дескриптор файла недействительным. Попросту
говоря, объект "файл" удаляется, но сама то файловая
переменная осталась и имеет значение (c:\a.txt).
Поэтому ее можно повторно связать со вновь созданным
дескриптором файла, вызвав функцию открытия файла.
Необходимость в
>функции типа скажем UnAssign
>или AssignFile := false ...
отсутствует, потому что повторное применение AssignFile
к файловой переменной приводит к изменению ее значения.
← →
BadBlock (2002-12-02 04:11) [13]Проблема решена. всем спасибо.
Отдельное спасибо - Anatoly Podgoretsky.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.12.12;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.005 c