Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.18;
Скачать: CL | DM;

Вниз

Почему-то возникает File Access Denied   Найти похожие ветки 

 
zif   (2004-04-04 13:10) [0]

В определенной папке лежит файл, порезанный на несколько кусков. Его нужно собрать, т.е. побайтно склеить все части.

Вот мой код, который выдает ошибку File Access Denied:

var
mask: String;
SR: TSearchRec;
i: integer;
Buf: array of Byte;
FI, FO: File;

begin
mask := Edit1.Text + "*";
if mask = "" then mask := "*.*";
memo1.lines.clear;

if FindFirst(mask, faAnyFile, SR)=0 then

AssignFile(FI, Edit1.Text + SR.Name + "final");
Rewrite(FI, 1);

repeat
 begin
  memo1.Lines.add(SR.Name);

 end
until FindNext(SR)<>0;
FindClose(SR);

for i:=1 to memo1.lines.count do begin
  AssignFile(FO, Edit1.Text + memo1.lines[i]);
  Reset(FO, 1); //строка, где выдается ошибка!!!
  SetLength(Buf, FileSize(FO));
  BlockRead(FO, Buf, FileSize(FO));
  BlockWrite(FI, Buf, FileSize(FO));
  Buf := NIL;
  CloseFile(FO);
                                 end;
CloseFile(FI);

Ну откуда здесь может взяться эта ошибка?!!


 
Cobalt ©   (2004-04-04 14:28) [1]

А что находится в  
Edit1.Text + memo1.lines[i]?


 
zif   (2004-04-04 14:45) [2]

Сорри...
Список названий файлов, которые программе нужно объеденить в один файл.


 
Anatoly Podgoretsky ©   (2004-04-04 14:46) [3]

Об этом мы предполалаем, но что говорит отладчик


 
Unknown user ©   (2004-04-04 15:39) [4]

2 zif. Код ужасный. Проверь что возвращает Edit1.Text + memo1.lines[i]. Используй TFileStream. Не выделяй под Buf сразу столько памяти, ведь файлы бывают и по 1Гиг, читай и пиши блоками фиксированной длины, для выделения памяти лучше использовать GetMem. Используй конструкции try .. finally везде где получаешь дескрипторы либо выделяешь память. Все.


 
Camypau   (2004-04-04 20:50) [5]

а доступ к файлу есть?
попробуй его открыть в фаре и посмотреть или поставь
FileMode := 0; // открыть только в режиме доступа на чтение
и лучше уж тут писать просто Reset(FO);
если пишется что Access Denied значит имя файла таки верное

p.s.
mask := Edit1.Text + "*";
if mask = "" then mask := "*.*;
Гениальный код :)



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

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

Наверх




Память: 0.48 MB
Время: 0.033 c
3-1079703410
Zilog
2004-03-19 16:36
2004.04.18
ComboBox с записями из БД


1-1080734716
Серж
2004-03-31 16:05
2004.04.18
кто-нить ставил супер RX-Lib JVCL (project Jedi)?


14-1080332230
Три х
2004-03-26 23:17
2004.04.18
Брысь :)


1-1080945586
KyRo
2004-04-03 02:39
2004.04.18
Как узнать имена файлов ?


1-1080626314
Amirka
2004-03-30 09:58
2004.04.18
Setup в приложении