![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как переименовать каталог [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('') тогда работает нормально.