<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[unrar.dll benutzen]]></title><description><![CDATA[<p>ich wollte jetzt mal die unrar dll ausprobieren. Ich will z.B. 10 Bilder in eine datei machen (packen) und die bilder dann einzeln im programm anzeigen.<br />
aber bei der dll waren nur beispiele für VB, C, etc. dabei, und nichts für c++.<br />
kann mir jemand ein kurzes beispiel für den BCB zeigen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/77715/unrar-dll-benutzen</link><generator>RSS for Node</generator><lastBuildDate>Mon, 29 Jun 2026 09:25:24 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/77715.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 23 Jun 2004 16:39:16 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to unrar.dll benutzen on Wed, 23 Jun 2004 16:39:16 GMT]]></title><description><![CDATA[<p>ich wollte jetzt mal die unrar dll ausprobieren. Ich will z.B. 10 Bilder in eine datei machen (packen) und die bilder dann einzeln im programm anzeigen.<br />
aber bei der dll waren nur beispiele für VB, C, etc. dabei, und nichts für c++.<br />
kann mir jemand ein kurzes beispiel für den BCB zeigen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/546591</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/546591</guid><dc:creator><![CDATA[nuclearspider]]></dc:creator><pubDate>Wed, 23 Jun 2004 16:39:16 GMT</pubDate></item><item><title><![CDATA[Reply to unrar.dll benutzen on Wed, 23 Jun 2004 18:14:45 GMT]]></title><description><![CDATA[<p>Adaptier hald das Beispiel für C? Ist ja ein C/C++ Compiler...</p>
<p>-junix</p>
]]></description><link>https://www.c-plusplus.net/forum/post/546658</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/546658</guid><dc:creator><![CDATA[junix]]></dc:creator><pubDate>Wed, 23 Jun 2004 18:14:45 GMT</pubDate></item><item><title><![CDATA[Reply to unrar.dll benutzen on Wed, 23 Jun 2004 21:37:07 GMT]]></title><description><![CDATA[<p>ja, aber der quelltext ist halt sehr &quot;umfangreich&quot;:</p>
<pre><code class="language-cpp">#define STRICT
#include &lt;windows.h&gt;
#include &lt;stdio.h&gt;
#include &lt;ctype.h&gt;
#include &quot;unrar.h&quot;

enum { EXTRACT, TEST, PRINT };

void ExtractArchive(char *ArcName,int Mode);
void ListArchive(char *ArcName);
void ShowComment(char *CmtBuf);
void OutHelp(void);
void OutOpenArchiveError(int Error,char *ArcName);
void ShowArcInfo(unsigned int Flags,char *ArcName);
void OutProcessFileError(int Error);
int CALLBACK CallbackProc(UINT msg,LONG UserData,LONG P1,LONG P2);

main(int Argc, char *Argv[])
{
  if (Argc!=3)
  {
    OutHelp();
    return(0);
  }

  switch(toupper(Argv[1][0]))
  {
    case 'X':
      ExtractArchive(Argv[2],EXTRACT);
      break;
    case 'T':
      ExtractArchive(Argv[2],TEST);
      break;
    case 'P':
      ExtractArchive(Argv[2],PRINT);
      break;
    case 'L':
      ListArchive(Argv[2]);
      break;
    default:
      OutHelp();
      return(0);
  }

  return(0);
}

void ExtractArchive(char *ArcName,int Mode)
{
  HANDLE hArcData;
  int RHCode,PFCode;
  char CmtBuf[16384];
  struct RARHeaderData HeaderData;
  struct RAROpenArchiveDataEx OpenArchiveData;

  memset(&amp;OpenArchiveData,0,sizeof(OpenArchiveData));
  OpenArchiveData.ArcName=ArcName;
  OpenArchiveData.CmtBuf=CmtBuf;
  OpenArchiveData.CmtBufSize=sizeof(CmtBuf);
  OpenArchiveData.OpenMode=RAR_OM_EXTRACT;
  hArcData=RAROpenArchiveEx(&amp;OpenArchiveData);

  if (OpenArchiveData.OpenResult!=0)
  {
    OutOpenArchiveError(OpenArchiveData.OpenResult,ArcName);
    return;
  }

  ShowArcInfo(OpenArchiveData.Flags,ArcName);

  if (OpenArchiveData.CmtState==1)
    ShowComment(CmtBuf);

  RARSetCallback(hArcData,CallbackProc,(LONG)&amp;Mode);

  HeaderData.CmtBuf=NULL;

  while ((RHCode=RARReadHeader(hArcData,&amp;HeaderData))==0)
  {
    switch(Mode)
    {
      case EXTRACT:
        printf(&quot;\nExtracting %-45s&quot;,HeaderData.FileName);
        break;
      case TEST:
        printf(&quot;\nTesting %-45s&quot;,HeaderData.FileName);
        break;
      case PRINT:
        printf(&quot;\nPrinting %-45s\n&quot;,HeaderData.FileName);
        break;
    }
    PFCode=RARProcessFile(hArcData,(Mode==EXTRACT) ? RAR_EXTRACT:RAR_TEST,
                          NULL,NULL);
    if (PFCode==0)
      printf(&quot; Ok&quot;);
    else
    {
      OutProcessFileError(PFCode);
      break;
    }
  }

  if (RHCode==ERAR_BAD_DATA)
    printf(&quot;\nFile header broken&quot;);

  RARCloseArchive(hArcData);
}

void ListArchive(char *ArcName)
{
  HANDLE hArcData;
  int RHCode,PFCode;
  char CmtBuf[16384];
  struct RARHeaderDataEx HeaderData;
  struct RAROpenArchiveDataEx OpenArchiveData;

  memset(&amp;OpenArchiveData,0,sizeof(OpenArchiveData));
  OpenArchiveData.ArcName=ArcName;
  OpenArchiveData.CmtBuf=CmtBuf;
  OpenArchiveData.CmtBufSize=sizeof(CmtBuf);
  OpenArchiveData.OpenMode=RAR_OM_LIST;
  hArcData=RAROpenArchiveEx(&amp;OpenArchiveData);

  if (OpenArchiveData.OpenResult!=0)
  {
    OutOpenArchiveError(OpenArchiveData.OpenResult,ArcName);
    return;
  }

  ShowArcInfo(OpenArchiveData.Flags,ArcName);

  if (OpenArchiveData.CmtState==1)
    ShowComment(CmtBuf);

  RARSetCallback(hArcData,CallbackProc,0);

  HeaderData.CmtBuf=CmtBuf;
  HeaderData.CmtBufSize=sizeof(CmtBuf);

  printf(&quot;\nFile                       Size&quot;);
  printf(&quot;\n-------------------------------&quot;);
  while ((RHCode=RARReadHeaderEx(hArcData,&amp;HeaderData))==0)
  {
    __int64 UnpSize=HeaderData.UnpSize+(((__int64)HeaderData.UnpSizeHigh)&lt;&lt;32);
    printf(&quot;\n%-20s %10Ld &quot;,HeaderData.FileName,UnpSize);
    if (HeaderData.CmtState==1)
      ShowComment(CmtBuf);
    if ((PFCode=RARProcessFile(hArcData,RAR_SKIP,NULL,NULL))!=0)
    {
      OutProcessFileError(PFCode);
      break;
    }
  }

  if (RHCode==ERAR_BAD_DATA)
    printf(&quot;\nFile header broken&quot;);

  RARCloseArchive(hArcData);
}

void ShowComment(char *CmtBuf)
{
  printf(&quot;\nComment:\n%s\n&quot;,CmtBuf);
}

void OutHelp(void)
{
  printf(&quot;\nUNRDLL.   This is a simple example of UNRAR.DLL usage\n&quot;);
  printf(&quot;\nSyntax:\n&quot;);
  printf(&quot;\nUNRDLL X &lt;Archive&gt;     extract archive contents&quot;);
  printf(&quot;\nUNRDLL T &lt;Archive&gt;     test archive contents&quot;);
  printf(&quot;\nUNRDLL P &lt;Archive&gt;     print archive contents to stdout&quot;);
  printf(&quot;\nUNRDLL L &lt;Archive&gt;     view archive contents\n&quot;);
}

void OutOpenArchiveError(int Error,char *ArcName)
{
  switch(Error)
  {
    case ERAR_NO_MEMORY:
      printf(&quot;\nNot enough memory&quot;);
      break;
    case ERAR_EOPEN:
      printf(&quot;\nCannot open %s&quot;,ArcName);
      break;
    case ERAR_BAD_ARCHIVE:
      printf(&quot;\n%s is not RAR archive&quot;,ArcName);
      break;
    case ERAR_BAD_DATA:
      printf(&quot;\n%s: archive header broken&quot;,ArcName);
      break;
    case ERAR_UNKNOWN:
      printf(&quot;Unknown error&quot;);
      break;
  }
}

void ShowArcInfo(unsigned int Flags,char *ArcName)
{
  printf(&quot;\nArchive %s\n&quot;,ArcName);
  printf(&quot;\nVolume:\t\t%s&quot;,(Flags &amp; 1) ? &quot;yes&quot;:&quot;no&quot;);
  printf(&quot;\nComment:\t%s&quot;,(Flags &amp; 2) ? &quot;yes&quot;:&quot;no&quot;);
  printf(&quot;\nLocked:\t\t%s&quot;,(Flags &amp; 4) ? &quot;yes&quot;:&quot;no&quot;);
  printf(&quot;\nSolid:\t\t%s&quot;,(Flags &amp; 8) ? &quot;yes&quot;:&quot;no&quot;);
  printf(&quot;\nNew naming:\t%s&quot;,(Flags &amp; 16) ? &quot;yes&quot;:&quot;no&quot;);
  printf(&quot;\nAuthenticity:\t%s&quot;,(Flags &amp; 32) ? &quot;yes&quot;:&quot;no&quot;);
  printf(&quot;\nRecovery:\t%s&quot;,(Flags &amp; 64) ? &quot;yes&quot;:&quot;no&quot;);
  printf(&quot;\nEncr.headers:\t%s&quot;,(Flags &amp; 128) ? &quot;yes&quot;:&quot;no&quot;);
  printf(&quot;\nFirst volume:\t%s&quot;,(Flags &amp; 256) ? &quot;yes&quot;:&quot;no or older than 3.0&quot;);
  printf(&quot;\n---------------------------\n&quot;);
}

void OutProcessFileError(int Error)
{
  switch(Error)
  {
    case ERAR_UNKNOWN_FORMAT:
      printf(&quot;Unknown archive format&quot;);
      break;
    case ERAR_BAD_ARCHIVE:
      printf(&quot;Bad volume&quot;);
      break;
    case ERAR_ECREATE:
      printf(&quot;File create error&quot;);
      break;
    case ERAR_EOPEN:
      printf(&quot;Volume open error&quot;);
      break;
    case ERAR_ECLOSE:
      printf(&quot;File close error&quot;);
      break;
    case ERAR_EREAD:
      printf(&quot;Read error&quot;);
      break;
    case ERAR_EWRITE:
      printf(&quot;Write error&quot;);
      break;
    case ERAR_BAD_DATA:
      printf(&quot;CRC error&quot;);
      break;
    case ERAR_UNKNOWN:
      printf(&quot;Unknown error&quot;);
      break;
  }
}

int CALLBACK CallbackProc(UINT msg,LONG UserData,LONG P1,LONG P2)
{
  switch(msg)
  {
    case UCM_CHANGEVOLUME:
      if (P2==RAR_VOL_ASK)
      {
        printf(&quot;\nInsert disk with %s and press 'Enter' or enter 'Q' to exit &quot;,(char *)P1);
        return(toupper(getchar())=='Q' ? -1:0);
      }
      return(0);
    case UCM_PROCESSDATA:
      if (UserData!=0 &amp;&amp; *(int *)UserData==PRINT)
      {
        fflush(stdout);
        fwrite((char *)P1,1,P2,stdout);
        fflush(stdout);
      }
      return(0);
    case UCM_NEEDPASSWORD:
      printf(&quot;\nPassword required: &quot;);
      gets((char *)P1);
      return(0);
  }
  return(0);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/546804</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/546804</guid><dc:creator><![CDATA[nuclearspider]]></dc:creator><pubDate>Wed, 23 Jun 2004 21:37:07 GMT</pubDate></item><item><title><![CDATA[Reply to unrar.dll benutzen on Thu, 24 Jun 2004 05:57:31 GMT]]></title><description><![CDATA[<p>Tipp:</p>
<p>1. anschauen wie man DLLs läd/entläd<br />
2. die main() an deine gui anpassen<br />
3. die restlichen funktionen übernehmen</p>
]]></description><link>https://www.c-plusplus.net/forum/post/546877</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/546877</guid><dc:creator><![CDATA[F98]]></dc:creator><pubDate>Thu, 24 Jun 2004 05:57:31 GMT</pubDate></item><item><title><![CDATA[Reply to unrar.dll benutzen on Thu, 24 Jun 2004 06:22:20 GMT]]></title><description><![CDATA[<p>Oder anders ausgedrückt: Wieso sollte man dir die Fleissarbeit abnehmen? Mit 300€ biste dabei. Da mach ich dir ein komplettes Cpp Beispiel _mit_ GUI Beispiel. Allerdings nur gegen Vorauskasse...</p>
<p>-junix</p>
]]></description><link>https://www.c-plusplus.net/forum/post/546890</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/546890</guid><dc:creator><![CDATA[junix]]></dc:creator><pubDate>Thu, 24 Jun 2004 06:22:20 GMT</pubDate></item><item><title><![CDATA[Reply to unrar.dll benutzen on Thu, 24 Jun 2004 10:16:42 GMT]]></title><description><![CDATA[<p>Statt Geld kannst du natürlich auch ein paar Minuten in die Benutzung einer Suchmaschine investieren.<br />
Z.B. um mittels Google die <a href="http://groups.google.com/groups?hl=en&amp;lr=&amp;ie=UTF-8&amp;threadm=36FF50A4.BEFBFF63%40brasilnet.net&amp;rnum=1&amp;prev=/groups%3Fhl%3Den%26lr%3D%26ie%3DUTF-8%26q%3Dunrar.dll%2Bgroup%253Aborland.public.cppbuilder.*%26btnG%3DSearch%26meta%3Dgroup%253Dborland.public.cppbuilder.*" rel="nofollow">Borland Newsgroups</a> zu durforsten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/547009</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/547009</guid><dc:creator><![CDATA[Jansen]]></dc:creator><pubDate>Thu, 24 Jun 2004 10:16:42 GMT</pubDate></item><item><title><![CDATA[Reply to unrar.dll benutzen on Thu, 24 Jun 2004 11:25:55 GMT]]></title><description><![CDATA[<p>Menno. Versaust mir aber auch jedes Geschäft (o;</p>
<p>-junix</p>
]]></description><link>https://www.c-plusplus.net/forum/post/547079</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/547079</guid><dc:creator><![CDATA[junix]]></dc:creator><pubDate>Thu, 24 Jun 2004 11:25:55 GMT</pubDate></item></channel></rss>