Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.12.2009, 18:35   #1
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию Можно ли имея F:TextFile определить...

...открыт ли он в данный момент с помощью AssignFile(...); Rewrite(F);?
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 12.12.2009, 19:15   #2
DeDoK
Форумчанин
 
Аватар для DeDoK
 
Регистрация: 05.11.2007
Сообщений: 392
По умолчанию

всмысле вам надо узнать КАК открыт файл?
DeDoK вне форума Ответить с цитированием
Старый 12.12.2009, 19:19   #3
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Цитата:
procedure AssignFile ( var FileHandle : TextFile; const FileName : string ) ;

Процедура AssignFile назначает значение FileName значению FileHandle при подготовке к чтению или записи этого файла.

Версия 1

Берет тип переменной текстового файла как дескриптор. Когда файл открыт он обрабатывается как textfile.

Если имя файла пустая строка, то доступ к файлу осушествляется через стандартные потоки input и output.

Версия 2

Берет бинарный тип файла как дескриптор. Файл обрабатывается как двоичный файл.

В обоих случаях, когда файл открыт с помощью Append, Reset или ReWrite предполагается, что он находится в текущем каталоге.

Примечания
FileHandle не должен быть перепутанным с дескриптором файла, используемым для файла низкого уровня, обращающегося с подпрограммами типа FileOpen и FileRead.
имея хэндл файла, можно узнать занят-ли он (-1).
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 12.12.2009 в 19:22.
raxp вне форума Ответить с цитированием
Старый 12.12.2009, 19:38   #4
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Цитата:
имея хэндл файла, можно узнать занят-ли он (-1).
А можете указать метод проверки? А то мне не совсем понятно...
Цитата:
всмысле вам надо узнать КАК открыт файл?
Нет. Мне надо узнать, открыт ли файл вообще. Метод мне известен точно - rewrite
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 12.12.2009, 21:25   #5
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

если узнать открыт ли он вообще rewrite-ом или reset-ом, то проще и быстрее попытаться получить к нему доступ через FileOpen
Код:
FileHandle:= FileOpen(FileName, fmOpenRead)
если = -1 то, открыт.
Код:
procedure TForm1.SpeedButton1Click(Sender: TObject);
var s: string;
begin
 AssignFile(f, 'Test.txt');
 ReWrite(f);
 //WriteLn(f, '111');

 //CloseFile(f); // специально не закрываем имитируя занятость
end;


function lock_file(filename:string):boolean;
var iFileHandle: Integer;
begin
 result:=false;
 //
 if fileexists(FileName) then begin
  iFileHandle:= FileOpen(FileName, fmOpenRead);
  FileClose(iFileHandle);
  if iFileHandle=-1 then result:=false
   else result:=true;
 end;
end;
procedure TForm1.SpeedButton2Click(Sender: TObject); // проверяем занят-ли
begin
 if lock_file('Test.txt') then caption:= '1'
  else caption:= '0'
end;
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 12.12.2009, 21:31   #6
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Спасибо, попробую.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Можно ли по видео определить скорость? vorotila Помощь студентам 17 04.07.2015 14:48
можно ли определить код цвета с помощью дельфи ? kakawkin Общие вопросы Delphi 2 12.11.2009 16:34
Подсчитать количество дней имея дату Dj_smart Общие вопросы Delphi 7 23.03.2009 12:46
Как преобразовать TextFile в String? DragonionS Паскаль, Turbo Pascal, PascalABC.NET 1 06.06.2007 18:38
Back to the TextFile Albenous Общие вопросы Delphi 7 12.02.2007 19:33