Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.06.11;
Скачать: CL | DM;

Вниз

определить, были ли вызваны reset или rewrite   Найти похожие ветки 

 
Mr tray   (2006-05-27 00:41) [0]

Есть var f:file of mytype; Как определить, были ли вызваны reset(f) или rewrite(f), не применяя переменных для запоминания. А то closefile(f) без предыдущих reset(f) или rewrite(f) дает ошибку.


 
Rial ©   (2006-05-27 00:49) [1]

Используй

Var HFile:Integer;
begin
...
HFile:=FileCreate(FileName);
FileOpen(FileName,fmOpenWrite[ or fmDenyRead or fmDenyWrite]);
...
FileRead(HFile,Buffer,SizeOf(Buffer));
...
FileClose(HFile);

Окрыть можно так:
HFile:=FileOpen(FileName,fmOpenRead or fmDenyWrite);

Короче, смотри F1, и не делай так:
HFile:=FileCreate(FileName);
HFile:=FileOpen(FileName,fmOpenWrite[ or fmDenyRead or fmDenyWrite]);

Кстати, так и работать твоя программа станет быстрее,
и от кучи глюков, связанных с использованием
Reset
избавишься.


 
Mr tray   (2006-05-27 01:05) [2]

ясно, спасибо, посмотрим


 
begin...end ©   (2006-05-27 06:19) [3]

> Mr tray   (27.05.06 00:41)

var
 F: File; // file of, TextFile
begin
 ...
 case TFileRec(F).Mode of
   fmInput:    ...    ; // Файл открыт для чтения
   fmOutput:   ...    ; // Файл открыт для записи
   fmInOut:    ...    ; // Файл открыт для чтения и записи
   fmClosed:   ...    ; // Файл закрыт
 end;
 ...
end

> Rial ©   (27.05.06 00:49) [1]

> и от кучи глюков, связанных с использованием
> Reset
> избавишься.

Не затруднит пояснить, какая куча глюков, связанных с использованием Reset, имеется в виду?


 
Rial ©   (2006-05-27 15:40) [4]

Rest
> > Rial ©   (27.05.06 00:49) [1]
>
> > и от кучи глюков, связанных с использованием
> > Reset
> > избавишься.
>
> Не затруднит пояснить, какая куча глюков, связанных с использованием
> Reset, имеется в виду?


Эта гадость перекочевала еще с Pascal под DOS.
При выполении Reset происходит попытка открыть файл и на чтение,
и на запись.
Поэтому такой подход не прокатит при чтении файла с устройства
ReadOnly, например CD или DVD устройство.
Тогда спасало только Int 21h с возможностью установки прав на открытие.
А под Win32 же выхода не видно вовсе.


 
begin...end ©   (2006-05-27 15:44) [5]

> Rial ©   (27.05.06 15:40) [4]

Читать справку по Reset.


 
palva ©   (2006-05-27 15:50) [6]

Тогда спасало только Int 21h с возможностью установки прав на открытие.
А под Win32 же выхода не видно вовсе.

Спасает
FileMode := 0    // System.FileMode := 0


 
Rial ©   (2006-05-27 15:57) [7]

Аааа.
Просто ни разу не использовал его в Delphi :))
Да и зачем, тоже не понятно, он тут нужен ?
Виноват.



Страницы: 1 вся ветка

Текущий архив: 2006.06.11;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.057 c
1-1146100720
vidiv
2006-04-27 05:18
2006.06.11
Как быстро экспортировать RichEdit в свой формат?


2-1148369235
Megabyte
2006-05-23 11:27
2006.06.11
Странности с датой в MSSQL


2-1148210007
Мурзилка
2006-05-21 15:13
2006.06.11
размеры формы


15-1147762292
pavel_guzhanov
2006-05-16 10:51
2006.06.11
Windows & Linux, переустановка Windows


15-1147965330
Cerberus
2006-05-18 19:15
2006.06.11
Компанент для работы с xls файлами.