
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.75] |
![]() |
|
Страницы: (7) 1 [2] 3 4 ... 6 7 все ( Перейти к последнему сообщению ) |
![]() |
Сообщ.
#16
,
|
|
Cм сообщение №11 и качай аттачмент.
|
Сообщ.
#17
,
|
|
|
SCINER, держи вот эту бодягу, надеюсь поможет:
![]() ![]() tcompMASK_TYPE = $000F; // Mask for compression type tcompTYPE_NONE = $0000; // No compression tcompTYPE_MSZIP = $0001; // MSZIP tcompTYPE_QUANTUM = $0002; // Quantum tcompTYPE_LZX = $0003; // LZX tcompBAD = $000F; // Unspecified compression type tcompMASK_LZX_WINDOW = $1F00; // Mask for LZX Compression Memory tcompLZX_WINDOW_LO = $0F00; // Lowest LZX Memory (15) tcompLZX_WINDOW_HI = $1500; // Highest LZX Memory (21) tcompSHIFT_LZX_WINDOW = 8; // Amount to shift over to get int tcompMASK_QUANTUM_LEVEL = $00F0; // Mask for Quantum Compression Level tcompQUANTUM_LEVEL_LO = $0010; // Lowest Quantum Level (1) tcompQUANTUM_LEVEL_HI = $0070; // Highest Quantum Level (7) tcompSHIFT_QUANTUM_LEVEL = 4; // Amount to shift over to get int tcompMASK_QUANTUM_MEM = $1F00; // Mask for Quantum Compression Memory tcompQUANTUM_MEM_LO = $0A00; // Lowest Quantum Memory (10) tcompQUANTUM_MEM_HI = $1500; // Highest Quantum Memory (21) tcompSHIFT_QUANTUM_MEM = 8; // Amount to shift over to get int tcompMASK_RESERVED = $E000; // Reserved bits (high 3 bits) CB_MAX_FILENAME = 256; CB_MAX_CABINET_NAME = 256; CB_MAX_CAB_PATH = 256; CB_MAX_DISK_NAME = 256; Public Type TCCAB cb: ULONG; // size available for cabinet on this media cbFolderThresh: ULONG; // Thresshold for forcing a new Folder cbReserveCFHeader: UINT; // Space to reserve in CFHEADER cbReserveCFFolder: UINT; // Space to reserve in CFFOLDER cbReserveCFData: UINT; // Space to reserve in CFDATA iCab: Integer; // sequential numbers for cabinets iDisk: Integer; // Disk number fFailOnIncompressible: Integer; // TRUE => Fail if a block is incompressible setID: USHORT; // Cabinet set ID szDisk: array[0..CB_MAX_DISK_NAME - 1] of AnsiChar; // current disk name szCab: array[0..CB_MAX_CABINET_NAME - 1] of AnsiChar; // current cabinet name szCabPath: array[0..CB_MAX_CAB_PATH - 1] of AnsiChar; // path for creating cabinet End Type PCCAB = ^TCCAB; ' Это означает что структуры одинаковы но в VB придется объявить обе Public Type PFNFCIGETNEXTCABINET pccab: PCCAB; cbPrevCab: ULONG; pv: void FAR; End Type Public Type TFDICABINETINFO cbCabinet: Longint; // Total length of cabinet file cFolders: USHORT; // Count of folders in cabinet cFiles: USHORT; // Count of files in cabinet setID: USHORT; // Cabinet set ID iCabinet: USHORT; // Cabinet number in set (0 based) fReserve: WIN_BOOL; // TRUE => RESERVE present in cabinet hasprev: WIN_BOOL; // TRUE => Cabinet is chained prev hasnext: WIN_BOOL; // TRUE => Cabinet is chained next End Type PFDICABINETINFO = ^TFDICABINETINFO; 'Тоже что и выше Public Type TFDINOTIFICATION cb: Longint; psz1: PAnsiChar; psz2: PAnsiChar; psz3: PAnsiChar; // Points to a 256 character buffer pv: PVoid; // Value for client hf: Integer; date: USHORT; time: USHORT; attribs: USHORT; setID: USHORT; // Cabinet set ID iCabinet: USHORT; // Cabinet number (0-based) iFolder: USHORT; // Folder number (0-based) fdie: TFDIERROR; End Type PFDINOTIFICATION = ^TFDINOTIFICATION;'Тоже что и выше |
![]() |
Сообщ.
#18
,
|
|
Бодяга-то совершенно практически бесполезна! А вот нужно перевести следующие строчки с делфи:
![]() ![]() if ((oflag and O_CREAT) <> 0) then begin if ((oflag and O_EXCL) <> 0) then FileCreate := CREATE_NEW else if ((oflag and O_TRUNC) <> 0) then FileCreate := CREATE_ALWAYS else FileCreate := OPEN_ALWAYS end else if ((oflag and O_TRUNC) <> 0) then FileCreate := TRUNCATE_EXISTING else if ((oflag and O_EXCL) <> 0) then FileCreate := OPEN_EXISTING else begin FileCreate := OPEN_EXISTING; end; с этими else if совсем запутался. тупейшая кострукция. аналогов в ВБ вроде нету? |
Сообщ.
#19
,
|
|
|
Vasya2000, Да нет, в VB тоже самое только слитно пишется If Then ... Elseif Then ... Else ... End If
А вот на счет бодяги, тут именно оно. Структуры которые нужно перевести в VB формат данных, тогда можно будет АПИ-шки юзать кабинетные. |
![]() |
Сообщ.
#20
,
|
|
Ага! Ясно, спасибо.
|
Сообщ.
#21
,
|
|
|
2Vasya2000: не могу качнуть, я ж не зареген, я уже писал об этом... вкратце, чё там за код? там используется FindFirstChangeNotification и иже с ним? Если да, то это вобщем-то и не мониторинг, т.к. таким образом можно только за одной папкой следить...
|
![]() |
Сообщ.
#22
,
|
|
FindFirstChangeNotification - умеет следить за всеми дисками сразу.
В примере FindFirstChangeNotification неиспользуется. Там что-то типа подписки через shell32.dll на уведомлении об активности файловой системы через обработчик оконной процедуры. |
Сообщ.
#23
,
|
|
|
Хм.. FindFirstChangeNotification принимает как параметр имя папки, поэтому он с ней и работает.. или можно как-то задать, чтоб она глобально отслеживала?
Плииз закинь себе этот архивчик с мониторингом на сайт, а то я ж не могу качнуть-то.. |
![]() |
Сообщ.
#24
,
|
|
Переустанови, либо поставь паралельную винду.
Зачем себе и людям такие неудобности создавать ![]() |
Сообщ.
#26
,
|
|
|
SCINER, с cаb-ами разобрался? Расскажи как.
|
![]() |
Сообщ.
#27
,
|
|
C cab-ами без пол-литры , да еще и за пару часов - не разберешся. У меня сейчас упорно вылетает на калбэк функции FCIOpen, причем судя по отладочной информации первый раз она срабатывает а во второй раз обрушивается. Очевидно глубоко в коде сидит баг. Или в днк. Я так полагаю, что если больше никто не примет участие в этом деле, то на исходники можно не рассчитывать.
|
Сообщ.
#28
,
|
|
|
мне тоже нужно с Cab'ами работать... А cabinet.dll с виндой поставляется?
|
![]() |
Сообщ.
#29
,
|
|
Цитата miksayer @ 30.11.04, 12:41 мне тоже нужно с Cab'ами работать... А cabinet.dll с виндой поставляется? Да! Помоему начиная с 98. А может даже и с 95. |
Сообщ.
#30
,
|
|
|
2Sciner: ну мне в полнейший лом переставлять...
![]() 2Vasya2000: пасиб... и отдельно большое спасибо за ссылку на такой замечательный сайт =) не знал о нём.. |