powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Структуры...
1 сообщений из 1, страница 1 из 1
Структуры...
    #32380800
lnu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Народ, пробую юзать UnRar.dll.
Но никак не могу справится с их структурами...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
struct RARHeaderData
{
  char ArcName[ 260 ];
  char FileName[ 260 ];
  UINT Flags;
  UINT PackSize;
  UINT UnpSize;
  UINT HostOS;
  UINT FileCRC;
  UINT FileTime;
  UINT UnpVer;
  UINT Method;
  UINT FileAttr;
  char *CmtBuf;
  UINT CmtBufSize;
  UINT CmtSize;
  UINT CmtState;
};


struct RAROpenArchiveData
{
  char *ArcName;
  UINT OpenMode;
  UINT OpenResult;
  char *CmtBuf;
  UINT CmtBufSize;
  UINT CmtSize;
  UINT CmtState;
};


HANDLE PASCAL RAROpenArchive(struct RAROpenArchiveData *ArchiveData);
int PASCAL RARCloseArchive(HANDLE hArcData);
int PASCAL RARReadHeader(HANDLE hArcData,struct RARHeaderData *HeaderData);
int PASCAL RARProcessFile(HANDLE hArcData,int Operation,char *DestPath,char *DestName);
void PASCAL RARSetChangeVolProc(HANDLE hArcData,int (*ChangeVolProc)(char *ArcName,int Mode));
void PASCAL RARSetProcessDataProc(HANDLE hArcData,int (*ProcessDataProc)(unsigned char *Addr,int Size));
void PASCAL RARSetPassword(HANDLE hArcData,char *Password);


Главная проблема єто
Код: plaintext
char *ArcName


Начало у меня такое

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
Declare integer RAROpenArchive IN unrar.dll string @ ArchiveData
Declare integer RARCloseArchive IN unrar.dll integer hArcData
Declare integer RARReadHeader IN unrar.dll integer hArcData, string @ HeaderData
Declare integer RARProcessFile IN unrar.dll integer hArcData, integer Operation, string DestPath, string DestName
Declare RARSetChangeVolProc IN unrar.dll integer hArcData, integer Mode
Declare RARSetPassword IN unrar.dll integer hArcData, string @ cPassword

*** Пробуем открыть архив

 *!* char ArcName[ 260 ];
 *!* char FileName[ 260 ];
 *!*  UINT Flags;
 *!*  UINT PackSize;
 *!*  UINT UnpSize;
 *!*  UINT HostOS;
 *!*  UINT FileCRC;
 *!*  UINT FileTime;
 *!*  UINT UnpVer;
 *!*  UINT Method;
 *!*  UINT FileAttr;
 *!*  char *CmtBuf;
 *!*  UINT CmtBufSize;
 *!*  UINT CmtSize;
 *!*  UINT CmtState;

ArchiveData=ArcName+replicate(chr( 0 ), 260 -Len(ArcName))+;
                  FileName+replicate(chr( 0 ), 260 -Len(FileName))+;       
                  n2dw(Flags)+;
                  n2dw(PackSize)+;
                  n2dw(UnpSize)+;
                  n2dw(HostOS)+;
                  n2dw(FileCRC)+;
                  n2dw(FileTime)+;
                  n2dw(UnpVer)+;
                  n2dw(Method)+;
                  n2dw(FileAttr)+;
 *!*  char *CmtBuf;   А что должно быть тут??????
                  n2dw(CmtBufSize)+;
                  n2dw(CmtSize)+;
                  n2dw(CmtState)
**** Правильно ли єто?

RAROpenArchive(@ArchiveData)

FUNCTION n2dw (lnValue) 
#DEFINE m0        256  
#DEFINE m1      65536  
#DEFINE m2   16777216  
    LOCAL b0, b1, b2, b3 
    b3 = Int(lnValue/m2) 
    b2 = Int((lnValue - b3*m2)/m1) 
    b1 = Int((lnValue - b3*m2 - b2*m1)/m0) 
    b0 = Mod(lnValue, m0) 
RETURN Chr(b0)+Chr(b1)+Chr(b2)+Chr(b3)
...
Рейтинг: 0 / 0
1 сообщений из 1, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Структуры...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]