![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ошибка при создании файла
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 то где?