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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.08.2010, 13:38   #1
Дворник
Заблокирован
 
Регистрация: 03.08.2010
Сообщений: 30
По умолчанию FileCreate() создает файл и не допускает к нему...

использую для создания файлов простую операцию FileCreate.
использую в цикле, поскольку необходимо создавать несколько файлов:

вот
Цитата:
for i := 0 to 3 do
begin
FileCreate(WAY + '\Advertisment\' + LEText + '\Base[SG2Col' + IntToStr(i) + '].tml');
end;
все здорово создает, но как только пытаюсь программу получить доступ к только что созданным файлам, выдает ошибку: мол не возможно получить доступ к файлу, поскольку он занят другим процессом?!

как только перезапускаю программу, уже доет доступ к файлу. типа процесса уже нет!

в чем беда ?
Дворник вне форума Ответить с цитированием
Старый 20.08.2010, 13:49   #2
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Попробуй после создания файла закрыть его, а потом открыть вновь для уже определенной файловой операции...
Перемешивай дело с бездельем и не сойдешь с ума...
Grag вне форума Ответить с цитированием
Старый 20.08.2010, 13:50   #3
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

по окончании работы с файлом его необходимо закрывать FileClose

Код:
handlefile:=filecreate(....);
.....
fileClose(handlefile);
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 20.08.2010, 13:52   #4
ex.cluz
Участник клуба
 
Аватар для ex.cluz
 
Регистрация: 15.01.2010
Сообщений: 1,325
По умолчанию

Их позакрывать сначало надо, т.к. функция FileCreate создает новый файл и открывает его для чтения и записи без учета разделяемых ресурсов.

Поэтому лучше через хэндлы:
Код:
var

FileHandle, i: Integer;
begin
for i := 0 to 3 do 
  begin
    FileHandle:= FileCreate( WAY + '\Advertisment\' + LEText + '\Base[SG2Col' + IntToStr(i) + '].tml'z');
    FileClose( FileHandle);
  end;

end;
Грибы - они разные. Один тебя накормит, другой тебе кино покажет...
Редактор журнала "
[ПРОграммист]"
Yan's Home Digital Lab
ex.cluz вне форума Ответить с цитированием
Старый 20.08.2010, 13:53   #5
DIgorevich
Погулять вышел
Участник клуба
 
Аватар для DIgorevich
 
Регистрация: 17.05.2010
Сообщений: 1,573
По умолчанию

чтобы его закрыть, надо как-то его указывать. Мне думается, что при создании надо присваивать файл какой-либо переменной.
Код:
var
  x:file;
Begin
  for i := 0 to 3 do
begin
x:=FileCreate(WAY + '\Advertisment\' + LEText + '\Base[SG2Col' + IntToStr(i) + '].tml');
x.Savetofile(WAY + '\Advertisment\' + LEText + '\Base[SG2Col' + IntToStr(i) + '].tml');
x.free;

end; 
end;
Никогда не знаешь, где тебе повезет... (Фрай)
DIgorevich вне форума Ответить с цитированием
Старый 20.08.2010, 13:57   #6
blazonic
Videor venisse
Пользователь
 
Регистрация: 23.03.2010
Сообщений: 58
По умолчанию

Беда, похоже, в том, что файлы нужно не только создавать, но ещё и закрывать типа FileClose и похоже в том же цикле, в котором создаёте, если дальше в программе нигде их больше не используете.
Вы далее в программе используете FileClose или каким-либо другим способом закрываете созданные в цикле файлы?

Пардон, пока писал сообщение не обновил страницу и не заметил, что уже насоветовали правильные решения проблемы.
Кстати, вместо x.free подойдёт ещё CloseFile
Facimus opus communis

Последний раз редактировалось blazonic; 20.08.2010 в 14:04. Причина: дополнение к тексту
blazonic вне форума Ответить с цитированием
Старый 20.08.2010, 14:53   #7
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

DIgorevich: ничё, что FileCreate возвращает описатель (дескриптор), а не объект?
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 20.08.2010, 15:02   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
DIgorevich
В какой это версии Делфи у типа file появились свойства и методы?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.08.2010, 15:13   #9
ex.cluz
Участник клуба
 
Аватар для ex.cluz
 
Регистрация: 15.01.2010
Сообщений: 1,325
По умолчанию

Товарищи, хватит над соплеменником издеваться , ну сморозил глупость, с кем не бывает?
У нас другая задача - ТС помочь, а не запутать его вконец.
Грибы - они разные. Один тебя накормит, другой тебе кино покажет...
Редактор журнала "
[ПРОграммист]"
Yan's Home Digital Lab
ex.cluz вне форума Ответить с цитированием
Старый 20.08.2010, 15:25   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
ex.cluz
Ты будешь удивлен, но я всерьез подумал что в новых делфи тип файла переделали в объект. мало ли...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запрос, который создает новую таблицу Olya2131 Microsoft Office Access 4 08.06.2010 20:27
программа создает блоксхемы powerlifting Фриланс 3 13.07.2009 11:28
Составить программу, которая создает и выводит на экран файл. STEELKUZNECOV Помощь студентам 1 30.05.2009 09:50
Interbase не открывает и не создает БД, переустановка не помогает.. Алёна БД в Delphi 1 13.02.2008 22:05