Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1148347973
Призрак
2006-05-23 05:32
2006.06.11
"промотать" Edit в конец


2-1148569160
Atamansha
2006-05-25 18:59
2006.06.11
TStringGrid


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


15-1148094593
bara-igor
2006-05-20 07:09
2006.06.11
Юникоды Delphi


1-1146809331
Handle
2006-05-05 10:08
2006.06.11
EOutOfResources





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский