Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Ошибка при создании файла


Cardinalius ©   (2007-09-15 17:15:00) 

При вызове данной процедуры программа вылетает с ошибкой: "Файл занят другим процессом"

procedure TfmMain.ClientSocket1Connect(Sender: TObject;
 Socket: TCustomWinSocket);
begin
 fStream:= TFileStream.Create('Receive.fil', fmCreate);
end;

Добавлю еще на всякий случай процедуру чтения :)

procedure TfmMain.ClientSocket1Read(Sender: TObject;
 Socket: TCustomWinSocket);
var
 count :Integer;
 buffer: Array [0..MAX_BUF_SIZE] of Char;
begin
 repeat
   Socket.Lock;
   count:= Socket.ReceiveBuf(buffer,SizeOf(buffer));
   if count > 0 then
     fStream.WriteBuffer(buffer,count);
   Socket.Unlock;
  until (count <= 0);
end;


Cardinalius   (2007-09-15 19:45:00) [1]

Ошибка в строке:
fStream:= TFileStream.Create('Receive.fil', fmCreate);?
Я уже прочитал всю справку и всю инфу какая у меня есть по TFileStream, но что-то не могу найти ошибки :(


Anatoly Podgoretsky   (2007-09-15 19:34:00) [2]

> Cardinalius  (15.09.2007 18:53:12)  [12]

Он не создается.
А, чтобы избежать надо найти ошибку в программ, она же (программа) у тебя есть?


Cardinalius   (2007-09-15 18:53:00) [3]

> [11] Anatoly Podgoretsky ©   (15.09.07 18:45)
> > Cardinalius  (15.09.2007 18:11:10)  [10]
>
> До создания

Приятно поговорить с умным человеком :) Тогда почему файл все же создается, почему возникает ошибка и как ее избежать?


Anatoly Podgoretsky   (2007-09-15 18:45:00) [4]

> Cardinalius  (15.09.2007 18:11:10)  [10]

До создания


Cardinalius   (2007-09-15 18:11:00) [5]

> [9] Anatoly Podgoretsky ©   (15.09.07 18:04)
> > Cardinalius  (15.09.2007 18:03:08)  [8]
>
> С какой это стати?

Цитирую ошибку: "Cannot create file "c:\Receive.fil" процесс не может получить доступ к файлу, т.к. этот файл занят другим процессом.
Ну и как понимать "Cannot create file" если файл физически создан? Т.е. ошибка возникает уже после создания файла. Почему?


Anatoly Podgoretsky   (2007-09-15 18:04:00) [6]

> Cardinalius  (15.09.2007 18:03:08)  [8]

С какой это стати?


Cardinalius   (2007-09-15 18:03:00) [7]

> [7] Anatoly Podgoretsky ©   (15.09.07 17:59)
> > Cardinalius  (15.09.2007 17:56:06)  [6]
>
> А запись то тут причем, ты же на создание жалуешься.

Вероятно я не так выразился. Файл физически создается на диске, но имеет размер 0б. Хотя по идее должен быть копией переданного по сети файла...


Anatoly Podgoretsky   (2007-09-15 17:59:00) [8]

> Cardinalius  (15.09.2007 17:56:06)  [6]

А запись то тут причем, ты же на создание жалуешься.


Cardinalius   (2007-09-15 17:56:00) [9]

> [5] Anatoly Podgoretsky ©   (15.09.07 17:52)
> > Cardinalius  (15.09.2007 17:49:04)  [4]
>
> Это твой процесс.

Ну и как тогда мне записать в файл, если он уже занят моим процессом?


Anatoly Podgoretsky   (2007-09-15 17:52:00) [10]

> Cardinalius  (15.09.2007 17:49:04)  [4]

Это твой процесс.


Cardinalius   (2007-09-15 17:49:00) [11]

> [3] Anatoly Podgoretsky ©   (15.09.07 17:45)
> > Cardinalius  (15.09.2007 17:15:00)  [0]
>
> Значит так и есть.


Ну такого же не может быть (по крайней мере не должно). Какой такой процесс может запретить мне доступ на запись к файлу, который я создал и который уже открыт на запись? Или я чего-то недопонимаю?


Anatoly Podgoretsky   (2007-09-15 17:45:00) [12]

> Cardinalius  (15.09.2007 17:15:00)  [0]

Значит так и есть.


Cardinalius   (2007-09-15 17:24:00) [13]

> [1] Cj ©   (15.09.07 17:19)
> А Free то где?

А fStream.Free при дисконнекте.


Cj   (2007-09-15 17:19:00) [14]

А Free то где?


Наверх

Титульная страница Поиск, карта сайта Написать письмо