Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

копирование файлов


vdddslep ©   (2004-10-29 15:03:00) 

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

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

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

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;

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

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


vdddslep   (2004-10-29 16:17:00) [1]

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


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

>vdddslep ©   (29.10.04 15:18)

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

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


vdddslep   (2004-10-29 15:18:00) [3]

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

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

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

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


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

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

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо