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

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

ShFileOperation - Shnamemapping [D6]


mikl2002 ©   (2002-11-06 09:25:00) 

Кто нибудь знает как извлечь данные
psznewpath из hNameMappings^ типа shnamemapping
после вызова функции ShFileOperation


mikl2002   (2002-11-06 12:31:00) [1]

>Alex4444444444
Ок все работает
record
Count: Integer;
Items: array[0..Something] of ^shnamemapping;
end
Только я не пойму,что передавать SHFreeNameMappings
На SHFreeNameMappings(OpStruc.hNameMappings)ругается


Alex4444444444   (2002-11-06 10:56:00) [2]

Eshe raz: pervye 4 bytes soderzhat colichestvo elementov! Tak chto, v Delphi terminah, ona ssylaetsya na chto-to typa


record
Count: Integer;
Items: array[0..Something] of ^shnamemapping;
end;


(Sejchas ya uzhe ne pomnyu tochno, array of ^shnamemapping ili array of shnamemapping )


mikl2002   (2002-11-06 10:23:00) [3]

Я так и делал, вот код:
with OpStruc do begin
Wnd := Handle;
wFunc := FO_Copy;
pFrom := @frombuf;
pTo := @tobuf;
fFlags := FOF_NOCONFIRMATION and FOF_RENAMEONCOLLISION or FOF_WANTMAPPINGHANDLE ;
fAnyOperationsAborted := False;
hNameMappings := nil;
lpszProgressTitle := nil;
end;
ShFileOperation(OpStruc);
with shnamemapping(OpStruc.hNameMappings^) do
begin
fillchar(tobuf,sizeof(tobuf),0);
{psznewpath уже содерит полную чушь}
move(psznewpath^,tobuf,cchnewpath);
end;


Alex4444444444   (2002-11-06 10:13:00) [4]

Is sobstvennogo opyta:

(1) hNameMappings, esli ne nil, ssylaetsya na structuru, v kotoroj pervye 4 byta = colichestvo elementov, a potom, array of _SHNAMEMAPPING.
(2) (na moj vzglyad, iz help"a eto ne ochevidno): perechislyayutsya ne vse skopirovannye/peredvinutye files, a tol"ko te, imena kotoryh automaticheski izmeneny systemoy (FOF_RENAMEONCOLLISION in Flags).
(3) Ne zabudte FOF_WANTMAPPINGHANDLE vo Flags
(4) Ne zabudte vyzvat" SHFreeNameMappings


typedef struct _SHNAMEMAPPING { // shnm
LPSTR pszOldPath; // address of old path name
LPSTR pszNewPath; // pointer to new path name
int cchOldPath; // number of characters in old path name
int cchNewPath; // number of characters in new path name
} SHNAMEMAPPING, FAR *LPSHNAMEMAPPING;


Opuhshii   (2002-11-06 10:09:00) [5]

поспешишь. людей насмешишь,.. ну что же,. насмешим ещё разок,!


Opuhshii   (2002-11-06 09:58:00) [6]

typedef struct _SHFILEOPSTRUCT { // shfos
HWND hwnd;
UINT wFunc;
LPCSTR pFrom;
LPCSTR pTo;
FILEOP_FLAGS fFlags;
BOOL fAnyOperationsAborted;
LPVOID hNameMappings;
LPCSTR lpszProgressTitle;
} SHFILEOPSTRUCT, FAR *LPSHFILEOPSTRUCT;


Showmessage(Pchar(hNameMappings)) ;


Наверх

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