Zmiana nazwy plików (TShFileOpStruct)

0

Witam, napisałem krótki program do zmiany nazw plików wykorzystując do tego klasę TShFileOpStruct. Nie wiem czemu przy około 10% plików wyskakuje błąd: "Nie można zmienić nazwy plik: Wybierz tylko jeden plik do zmiany nazwy lub użyj symboli wieloznacznych MS-DOS (na przykład *.txt) aby zmienic nazwy grupy plików o podobnej nazwie".
Jak temu zaradzić? a może warto przerobić program i zmieniać nazwy plików inną metodą? Oto kawałek kodu:

      s:=FLB1.Items[i];   //ładuje do s nazwe pliku z FileListBox
      pom:=s;             
      ext:=ExtractFileExt(s);  //ext -  rozszerzenie pliku
      s:=ExtractFileName(s);  
      s:=Copy(s,1,Length(s)-Length(ext));  //s - nazwa pliku bez rozszerzenia
      {wypełnienie zmiennej Sh typu ShFileOpStruct}
      Sh.Wnd:=handle;
      sh.wFunc:=FO_RENAME;
      Sh.pFrom:=PAnsiChar(DLB1.Directory+'\'+pom);  //DLB1 - DirectoryListBox 
      s:=Form1.Zamien(s); //funkcja zmieniajaca nazwe pliku
      Sh.pTo:=PAnsiChar(DLB1.Directory+'\'+S+EXT);
      Sh.fFlags:= FOF_ALLOWUNDO+ FOF_NOCONFIRMATION+ FOF_FILESONLY+ FOF_RENAMEONCOLLISION+ FOF_WANTMAPPINGHANDLE;
      sH.lpszProgressTitle:='TRWA KOPIOWANIE';
      Memo1.Lines.Add(s);
      ShFileOperation(Sh);

to wszystko w pętli, bo zawsze jest do zmiany od kilku do kilkuset plików.

0

Podejrzewam, ze blad jest w braku znaku zero ! dodatkowo wystarczy zbudowac caly string raz a potem go uzyc (bez petli w ktorej jest ShFileOperation

tj

c:\plik1.txt#0c:\plik2.txt#0........c:\plik3.txt#0#0 //dwa zera !!

0

Dziękuję. Dodałem "#0" na końcu nazwy pliku i wszystko działa jak należy.

0

Mam podobny problem czy ktoś mógł by troche dokładniej to opisać

1 użytkowników online, w tym zalogowanych: 0, gości: 1