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

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

Как переименовать каталог [D6, WinXP]


suharew ©   (2005-01-05 21:02:00) 


procedure RenameDir(DirFrom, DirTo: string);
var
 shellinfo: TSHFileOpStruct;
begin
 with shellinfo do
 begin
   Wnd    := 0;
   wFunc  := FO_RENAME;
   pFrom  := PChar(DirFrom);
   pTo    := PChar(DirTo);
   fFlags := FOF_FILESONLY or FOF_ALLOWUNDO or
             FOF_SILENT or FOF_NOCONFIRMATION;
 end;
 SHFileOperation(shellinfo);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 RenameDir('C:\Dir1', 'C:\Dir2');
end;


Делаю переименование таким способом. Все работает. Но если в цикле начинаешь переименовывать каталогов 10-20 то почему-то переименовывает через один или через два, короче часть все равно остается не переименована.
Есть может куда проще метод. Или я что-то не так делаю?


jack128   (2005-01-06 02:11:00) [1]

А у тя была ошибка в следующем
pFrom

Pointer to a buffer that specifies one or more source file names. Multiple names must be null-separated. The list of names must be doublenull-terminated.


jack128   (2005-01-06 02:09:00) [2]

Вот ищет народ проблем на свою голову..

for j:=0 to filelistbox2.Count-1 do
Win32Check(MoveFile(PChar(FileListBox2.Items[j]),PChar('dir'+inttostr(j))));


suharew   (2005-01-05 21:06:00) [3]


for j:=0 to filelistbox2.Count-1 do
 RenameDir(FileListBox2.Items.Strings[j],'dir'+inttostr(j))

Вот так переименовываю. Если цикл прерывать, вписав в него showmessage('') тогда работает нормально.


Наверх

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