Форум: "Начинающим";
Текущий архив: 2006.06.11;
Скачать: [xml.tar.bz2];
Вниз
определить, были ли вызваны 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.011 c