UNLHA32.DLL の UnlhaOpenArchive について

解決


ぴょぴょ  2007-11-28 05:27:38  No: 67010

お世話になります。
今、フリーで出回っている UNLHA32.DLL を使って書庫ファイルの一覧を
出力するプログラムを組んでいます。

ところが書庫ファイルをオープンする最初からエラーが起きて開けません。
エラーの種類は ERROR_FILE_OPEN です。書庫ファイルが開けない。って。
でも指定した書庫ファイルはフルパス指定ですし、exe のあるフォルダに
移動して相対パス指定でも同じくエラーダイアログが出ます。
一応はマニュアルを読み、使い方は間違っていないはずです。
何が悪いのでしょうか?

#include <time.h>
#include <stdio.h>
#include <windows.h>
#include <unlha32/unlha32.h>  // unlha32.lib

// 成功/失敗の定数
#define LHA_OK   (0)
#define LHA_ERR  (-1)

// メイン関数
int main( void )
{
  TCHAR szLZHFile[ 1024 ];
  INDIVIDUALINFO ii;
  HARC hLHA;
  
  printf( "書庫ファイル名:" );
  fgets( szLZHFile, sizeof(szLZHFile), stdin );
  printf( "書庫ファイル名:%s\n\n", szLZHFile );
  
  if ( (hLHA = UnlhaOpenArchive(NULL,szLZHFile,M_ERROR_MESSAGE_ON)) != NULL ){
    if ( UnlhaFindFirst(hLHA,TEXT("*.*"),&ii) == LHA_OK ){
      do {
        printf( "%-30s ", ii.szFileName );
        printf( "%10u ", ii.dwOriginalSize );
        printf( "%10u ", ii.dwCompressedSize );
        printf( "%08X ", ii.dwCRC );
        printf( "%3u%% ", ii.wRatio );
        printf( "%s ", ii.szAttribute );
        printf( "%s ", ii.szMode );
        printf( "\n" );
      } while ( UnlhaFindNext(hLHA,&ii) == LHA_OK );
    }
    UnlhaCloseArchive( hLHA );
  }
  else{
    DWORD dwError;
    int    nErrno;
    
    nErrno = UnlhaGetLastError( &dwError );
    printf( "書庫ファイルがオープンできません。(error code:%d,0x%04X)\n", nErrno, nErrno );
  }
  return 0;
}

こちらの環境は
Windows XP Home SP2
VC++2003.NET(SDK)
UNLHA32.DLL(Ver.2.62b)

UNLHA32.DLL は最新バージョン(2007/11/12 Ver.2.62b)です。
http://homepage3.nifty.com/micco/myoldsoft/unlha32.htm

参考にしたサイトは
http://kumei.ne.jp/c_lang/sdk3/sdk_272.htm

誰か分かりますか?
お願い致します。


ぴょぴょ  2007-11-28 05:41:50  No: 67011

自己解決しました。

原因は改行コードを取り除いていないという初歩的ミスでした。(恥)
> printf( "書庫ファイル名:" );
> fgets( szLZHFile, sizeof(szLZHFile), stdin );
> printf( "書庫ファイル名:%s\n\n", szLZHFile );

これを

> printf( "書庫ファイル名:" );
> fgets( szLZHFile, sizeof(szLZHFile), stdin );
> StrTrim( szLZHFile, TEXT(" \t\r\n") );
> printf( "書庫ファイル名:%s\n\n", szLZHFile );

にしたら正常に書庫ファイルが開けた。
お騒がせしました。

でも2時間も考え込んでしまったので。
許して。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加