Вниз
Скачать: CL | DM;

Ошибка при создании файла   Найти похожие ветки 

← →
Cardinalius ©   (2007-09-15 17:15) [0]

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

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;


← →
Cj ©   (2007-09-15 17:19) [1]

А Free то где?


← →
Cardinalius ©   (2007-09-15 17:24) [2]

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

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


← →
Anatoly Podgoretsky ©   (2007-09-15 17:45) [3]

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

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


← →
Cardinalius ©   (2007-09-15 17:49) [4]

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


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


← →
Anatoly Podgoretsky ©   (2007-09-15 17:52) [5]

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

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


← →
Cardinalius ©   (2007-09-15 17:56) [6]

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

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


← →
Anatoly Podgoretsky ©   (2007-09-15 17:59) [7]

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

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


← →
Cardinalius ©   (2007-09-15 18:03) [8]

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

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


← →
Anatoly Podgoretsky ©   (2007-09-15 18:04) [9]

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

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


← →
Cardinalius ©   (2007-09-15 18:11) [10]

> [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:45) [11]

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

До создания


← →
Cardinalius ©   (2007-09-15 18:53) [12]

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

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


← →
Anatoly Podgoretsky ©   (2007-09-15 19:34) [13]

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

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


← →
Cardinalius ©   (2007-09-15 19:45) [14]

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



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

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.017 c
1-1185813272
fdooch
2007-07-30 20:34
2007.10.14
Глобальный хук WH_MOUSE_LL


11-1161271270
ANTPro
2006-10-19 19:21
2007.10.14
SVN


2-1190379982
Kolan
2007-09-21 17:06
2007.10.14
Почему Free не делает nil объекту?


9-1161037863
wrl
2006-10-17 02:31
2007.10.14
Подскажите ссылочку на описание формата VRML *.wrl ?


2-1190211725
azl
2007-09-19 18:22
2007.10.14
Как программно добавить новый пункт меню в PopupMenu?




   Наверх