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

Вниз

копирование файлов   Найти похожие ветки 

 
vdddslep ©   (2004-10-29 15:03) [0]

написал прогу котороя должнеа себя копировать на диск с:\

использую поблочное копирование

// процедура копирования файлов поблочно

procedure FileCopy(oldname,newname:string);//;canvas:TCanvas);

var
 OldF,NewF:file;                      // старое и новое имя файла
 NumRead,NumWritten:Integer;         // читаем пишем
 Buf:array[1..2048] of Char;         //буффер

begin
   AssignFile(NewF, NewName);           { открываем файл куда будем копировать }
   Rewrite(NewF,1);                    { побайтово size = 1 }
   AssignFile(OldF, OldName);           { открываем файл который будем копировать }
   rewrite(oldf,1);                     { побайтово = 1 //важно}

//    Canvas.TextOut(10, 10, "Copying " + IntToStr(FileSize(FromF))+ " bytes...");

     repeat                                            // вход в цикл копирования
       BlockRead(OldF, Buf, SizeOf(Buf), NumRead);     {указател ,буфер, количества записей которое следует прочесть ,реально прочло байт}
       BlockWrite(NewF, Buf, NumRead, NumWritten);
     until (NumRead = 0) or (NumWritten <> NumRead);   // ok всё скопировано выходим из цикла

       CloseFile(OldF);                                 // закрываем оба файла
       CloseFile(NewF);
end;

получаю полный путь к запущенной программе

GetModuleFileName(hInstance, TheFileName, sizeof(TheFileName));

{дискриптор модуля запущенного файла, буфер для пути, максимальное количество извлекаемых символов}
  den2:=TheFileName;

вызываю функцию копирования и программ апишет ошибку что небожет открыть файл (запущенный )

что делать ????


 
Добрый дядька ©   (2004-10-29 15:11) [1]

Интересно, а зачем ты оба файла открываешь на запись?

PS.
Сразу же, предупреждая следующий вопрос, отвечу:
Перед Reset() добавь строчку  FileMode := 0;


 
vdddslep ©   (2004-10-29 15:18) [2]

Огромное спасибо

ура заработало примного благодарен
я 6 часов мучался немог понять в чем дело

а что это за волшебный такой
FileMode := 0;

что он делает ????


 
Добрый дядька ©   (2004-10-29 15:32) [3]

>vdddslep ©   (29.10.04 15:18)

На процедуре Reset нажми F1.
Далее по ссылкам найдешь FileMode и значения, которые эта переменная может принимать.
По умолчанию FilMode=2 (ReadWrite)

Режим FilMode=0 - файл открывается толтько для чтения.


 
vdddslep ©   (2004-10-29 16:17) [4]

ok еще раз спасибо



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

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

Наверх




Память: 0.47 MB
Время: 0.03 c
1-1099316514
denis24
2004-11-01 16:41
2004.11.14
Цвет Popupmenu


14-1098668960
Думкин
2004-10-25 05:49
2004.11.14
С днем рождения! 25 октября


1-1099343328
ospa
2004-11-02 00:08
2004.11.14
как перехватить нажатие клавиш на клавиатуре?


1-1099387163
Ozone
2004-11-02 12:19
2004.11.14
Hint


14-1098978925
Alex*
2004-10-28 19:55
2004.11.14
А чем теперь архивы форумов распоковывают