Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 06.12.2009, 16:54
Kaster Kaster вне форума
Прохожий
 
Регистрация: 15.08.2009
Адрес: На планете Земля
Сообщения: 2
Репутация: 10
Вопрос К вопросу о перечислении путей к файлам...

Вкратце обрисую ситуацию.
Есть такая игра TES4:Oblivion. И есть к ней моды (модификации). Некоторые требуют наличия такого файла, как ArchiveInvalidation.txt. В нем должны перечисляться пути к заменяемым модификацией файлам. Например:
textures/menus/map/world/cyrodiil_resized.dds
textures/menus/map/world_map_arrow_icon.dds
textures/menus/hud/hud_compass_goal.dds

и т.д.
Насколько мне известно можно начинать отсчет хоть от названия диска:
С:/.../file.dds
Моя цель - создать программку, автоматически перечисляющую эти пути (вручную писать долго...).

Вопрос: каким образом можно заставить программу перечислять все пути к файлам, включая в конце концов их самих и их расширение и сохранять это в файл ArchiveInvalidation.txt, желательно - без заменения предыдущего файла, а просто путем его дополнения?..
Например, выбираю я в, например, в ShellTreeView директорию, нажимаю Button и все пути к файлам в ней (директории) заносятся в AI.txt.
...
Ответить с цитированием
  #2  
Старый 06.12.2009, 17:19
Аватар для AleD
AleD AleD вне форума
Активный
 
Регистрация: 21.02.2009
Адрес: г.Краснокаменск
Сообщения: 383
Репутация: 91
По умолчанию

для этой самой кнопки пропиши это:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  dir: String;
  procedure AddFile(const f: String);
  begin
    Memo1.Lines.Add(f); //здесь добавляй найденный файл f куда надо
  end;
  procedure AddDir(const d: String);
  var
    rec: TSearchRec;
    a: Integer;
    b: String;
  begin
    if not(DirectoryExists(d))then Exit;

    a := FindFirst(d+'\*', faAnyFile or not faSymLink, rec);
    while(FindNext(rec)=0)do
    begin
      if(rec.Name='.')or(rec.Name='..')then Continue;

      b := d+'\'+rec.Name;
      if(FileExists(b))then
        AddFile(b)
      else
      if(DirectoryExists(b))then
        AddDir(b);
    end;
  end;
begin
  dir := sShellTreeView1.SelectedFolder.PathName;
  Memo1.Lines.Clear;
  AddDir(dir);
end;
если нужны относительные пути, юзай ExtractRelativePath
может быть 5 минут моего времени стоит хотя бы "+"?
__________________
TAleD = class(TUser)
public
function HelpMe(ASubject, ARequest: String): String;
function GiveMeExample(ASubject: String): TStringList;
procedure WriteReview(APost: Integer; ADescription: TStringList);
end;
Ответить с цитированием
  #3  
Старый 06.12.2009, 17:24
Kaster Kaster вне форума
Прохожий
 
Регистрация: 15.08.2009
Адрес: На планете Земля
Сообщения: 2
Репутация: 10
По умолчанию

Пасиб! Счас проверю... )))
P.S. "+" - это отзыв? Я тут просто недавно... ))))))
Ответить с цитированием
  #4  
Старый 06.12.2009, 17:37
Аватар для AleD
AleD AleD вне форума
Активный
 
Регистрация: 21.02.2009
Адрес: г.Краснокаменск
Сообщения: 383
Репутация: 91
По умолчанию

да, справа сверху от сообщения
__________________
TAleD = class(TUser)
public
function HelpMe(ASubject, ARequest: String): String;
function GiveMeExample(ASubject: String): TStringList;
procedure WriteReview(APost: Integer; ADescription: TStringList);
end;
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 01:41.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025