Главная страница
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.031 c
3-1080104496
Максим
2004-03-24 08:01
2004.04.18
Вычленение данных из строки


4-1076441706
Novichok
2004-02-10 22:35
2004.04.18
как запустить exe из Stream


9-1066159078
Sacred
2003-10-14 23:17
2004.04.18
GLScene!!! Как подрузить обьекты из другой сцены(*.gls)?


1-1080128088
Rawman
2004-03-24 14:34
2004.04.18
DBGridEh, кто работал с ним подскажите (EhLib)


1-1080699443
Zakalibit
2004-03-31 06:17
2004.04.18
Синхронизация VCL с другими потоками