1. Уважаемые гости и пользователи форума.
    Администрация настоятельно рекомендует не регистрировать несколько аккаунтов для одного пользователя. При выявлении наличия мультиаккаунтов будут заблокированы все учетные записи данного пользователя.
    Аккаунты, зарегистрированные на временную почту будут также заблокированы.

DLL ISDone 0.6 final

Библиотека для распаковки arc, 7z, rar, pcf, srep архивов в InnoSetup.

  1. Старожил

    Регистрация:
    6 сен 2011
    Сообщения:
    19
    Симпатии:
    1
    А скопировать именно заданий файл?
     
  2. Новичок

    Регистрация:
    17 сен 2017
    Сообщения:
    12
    Симпатии:
    3
    как то так
    Код (Text):
    CopyDir(ExpandConstant('{app}\путь_к_копируемому_файлу_\filename.txt'), ExpandConstant('{app}\куда_нам_надо_скопировать_файл'));
     
  3. Старожил

    Регистрация:
    6 сен 2011
    Сообщения:
    19
    Симпатии:
    1
    if not ISArcExtract ( 0, 0, ExpandConstant('{tmp}\ukr.bin'), ExpandConstant('{app}\'), '', true, '', ExpandConstant('{tmp}\arc.ini'), ExpandConstant('{tmp}\'), notPCFonFLY{PCFonFLY}) then break;
    CopyDir(ExpandConstant('{app}\update\update.rpf'), ExpandConstant('{app}\update_backup'));
    MoveDir(ExpandConstant('{app}\update\update.rpf'), ExpandConstant('{app}\'));
    if not ISxDeltaExtract ( 0, 0, 0, 640, ExpandConstant('{app}\update.rpf'), ExpandConstant('{app}\update.dif'), ExpandConstant('{app}\update\update.rpf'), true, true) then break;
    Вот как задал и неработаєт.
     
  4. Новичок

    Регистрация:
    17 сен 2017
    Сообщения:
    12
    Симпатии:
    3
    для MoveDir нужна процедура
    на всякий случай, MoveDir - это перенос файла/папки, CopyDir - это копирование файла/папки
    Код (Text):

    procedure MoveDir(const fromDir, toDir:String);
    var
      searchResult : TFindRec;
    begin            
      if fromDir[Length(fromDir)]<>'\' then fromDir:=fromDir+'\';  
      if toDir[Length(toDir)]<>'\' then toDir:=toDir+'\';
      ForceDirectories(toDir);
      if FindFirst(fromDir+'*.*', searchResult) then
      begin
        repeat    
          Application.ProcessMessages();
          if (searchResult.Attributes and FILE_ATTRIBUTE_DIRECTORY ) <> FILE_ATTRIBUTE_DIRECTORY  then
          begin  
            if FileExists(toDir+searchResult.name) then
              DeleteFile(toDir+searchResult.name);
            RenameFile(fromDir+searchResult.name, toDir+searchResult.name);
          end else if (searchResult.Name <> '..') and (searchResult.Name <> '.') then
            MoveDir(fromDir + searchResult.Name, toDir + searchResult.Name);
        until not FindNext(searchResult);
        FindClose(searchResult);
      end;
    end;
     
     
  5. Старожил

    Регистрация:
    6 сен 2011
    Сообщения:
    19
    Симпатии:
    1
    Код (Text):
    procedure CopyDir(const fromDir, toDir:String);
    var
      searchResult : TFindRec;
    begin
      if fromDir[Length(fromDir)]<>'\' then fromDir:=fromDir+'\';
      if toDir[Length(toDir)]<>'\' then toDir:=toDir+'\';
      ForceDirectories(toDir);
      if FindFirst(fromDir+'*.*', searchResult) then
      begin
        repeat
          Application.ProcessMessages();
          if (searchResult.Attributes and FILE_ATTRIBUTE_DIRECTORY ) <> FILE_ATTRIBUTE_DIRECTORY  then
          begin
            if FileExists(toDir+searchResult.name) then
              DeleteFile(toDir+searchResult.name);
            FileCopy(fromDir+searchResult.name, toDir+searchResult.name, false);
          end else if (searchResult.Name <> '..') and (searchResult.Name <> '.') then
            CopyDir(fromDir + searchResult.Name, toDir + searchResult.Name);
        until not FindNext(searchResult);
        FindClose(searchResult);
      end;
    end;

    procedure MoveDir(const fromDir, toDir:String);
    var
      searchResult : TFindRec;
    begin
      if fromDir[Length(fromDir)]<>'\' then fromDir:=fromDir+'\';
      if toDir[Length(toDir)]<>'\' then toDir:=toDir+'\';
      ForceDirectories(toDir);
      if FindFirst(fromDir+'*.*', searchResult) then
      begin
        repeat
          Application.ProcessMessages();
          if (searchResult.Attributes and FILE_ATTRIBUTE_DIRECTORY ) <> FILE_ATTRIBUTE_DIRECTORY  then
          begin
            if FileExists(toDir+searchResult.name) then
              DeleteFile(toDir+searchResult.name);
            FileCopy(fromDir+searchResult.name, toDir+searchResult.name, false);
          end else if (searchResult.Name <> '..') and (searchResult.Name <> '.') then
            MoveDir(fromDir + searchResult.Name, toDir + searchResult.Name);
        until not FindNext(searchResult);
        FindClose(searchResult);
      end;
    end;
     
  6. Старожил

    Регистрация:
    6 сен 2011
    Сообщения:
    19
    Симпатии:
    1
    папку копируєт нормально но вот файл нехочет.
     
  7. Новичок

    Регистрация:
    17 сен 2017
    Сообщения:
    12
    Симпатии:
    3
    сори мой косяк
    Код (Text):

            FileCopy(ExpandConstant('{app}\путь_к_копируемому_файлу_\filename.txt'), ExpandConstant('{app}\\куда_нам_надо_скопировать_файл'), false);
     
    stalqer нравится это.
  8. Старожил

    Регистрация:
    6 сен 2011
    Сообщения:
    19
    Симпатии:
    1
    FileCopy(ExpandConstant('{app}\update\update.rpf'), ExpandConstant('{app}\update_backup\update.rpf'), false);
    Так работаєт

    А как переместить один файл?
    И за что отвечаєт --> , false);
     
    Последнее редактирование модератором: 19 июн 2018
  9. Old Men Проверенный

    Регистрация:
    17 июн 2011
    Сообщения:
    444
    Симпатии:
    415
    Пол:
    Мужской
    stalqer, из справки
    Pascal Scripting: FileCopy
    Прототип:

    function FileCopy(const ExistingFile, NewFile: String; const FailIfExists: Boolean): Boolean;

    Описание:
    Копирует ExistingFile в NewFile, сохраняя отметки времени и атрибуты файла.
    Если FailIfExists является True, то функция не выполнится, если NewFile уже существует, иначе просто перезапишет файл.
    При удачном выполнении возвращает True, иначе False.
     

    Вложения:

    • ISetup.zip
      Размер файла:
      1,1 МБ
      Просмотров:
      15
    YURSHAT нравится это.
  10. Ветеран Модератор

    Регистрация:
    26 июн 2011
    Сообщения:
    1.129
    Симпатии:
    721
    stalqer, достаточно нажать под сообщением, "мне нравится" / человек увидит, что его сообщение вам помогло, ну или было полезным для вас. Спасибо.
     
    YURSHAT и stalqer нравится это.

Поделиться этой страницей