Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.04.18;
Скачать: [xml.tar.bz2];

Вниз

Почему-то возникает 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.035 c
1-1080545461
nv-vetal
2004-03-29 11:31
2004.04.18
ShowMessage. Как в появившемся окне нажать кнопку Ок программно?


3-1079876881
Anarki
2004-03-21 16:48
2004.04.18
QReport - как узнать общее число страниц?


9-1061530372
KeepeR
2003-08-22 09:32
2004.04.18
Онлайновая игра на Delphi


14-1080424867
Soft
2004-03-28 01:01
2004.04.18
Черная метка, чертова метка, мне...


14-1080116643
Alex_Bredin
2004-03-24 11:24
2004.04.18
Еврофутбол





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский