Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.10.14;
Скачать: 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 вся ветка

Текущий архив: 2007.10.14;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.024 c
2-1189676356
gray_falcon
2007-09-13 13:39
2007.10.14
храненилище информации


2-1190029186
bss
2007-09-17 15:39
2007.10.14
Сохранение рисунка в BLOB-поле


4-1175926105
brother
2007-04-07 10:08
2007.10.14
чужое контекстное меню :)


2-1189687949
Havismat
2007-09-13 16:52
2007.10.14
Про окна, вопрос новичка


2-1190098194
artem779
2007-09-18 10:49
2007.10.14
проблема с *.INI