Главная страница
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.04 c
1-1080889492
still_swamp
2004-04-02 11:04
2004.04.18
D8 и ADO


7-1076592347
BJValentine
2004-02-12 16:25
2004.04.18
Трудности с DLL


14-1080042117
gty
2004-03-23 14:41
2004.04.18
Как в excel преобразовать столбец в строку?


3-1079681670
Anka
2004-03-19 10:34
2004.04.18
Сетевая версия БД


3-1080121143
Dimedrol
2004-03-24 12:39
2004.04.18
Создаю процедуру, FB говорит - parameter mismatch.