man読んだんじゃないの? CONFORMING TO The fopen and freopen functions conform to ANSI X3.159-1989 (``ANSI C''). The fdopen function conforms to IEEE Std1003.1-1988 (``POSIX.1'').
>>819 ご回答ありがとうございます。 教えて頂いた通り、ヘッダのほうで対処したいと思います。 MSDNのMFC Library Reference「CInternetFile::Seek」のRemarksには At this time, a call to this member function is only supported for data associated with CHttpFile objects. とあり、継承クラスCHttpFileでは一見お手軽に使えそうなので、ここでつまづくひとは他にもいそうですね。 検索に引っ掛かるようキーワードを残しておきます。 CHttpFile::Seek けど、使えると書いてはあるので、もしかしたら使い方にコツが要るのかも知れませんね。
これでもEUCかSJISかはある程度判別できそうでしょうか? ちょっとご指摘等ありましたら皆さんのお力を借りたいと思います。 Public Function chkCode_SJIS(ByVal ChkFileStr As String) As Boolean Dim iRet ,iRet2,iRet3 As String Dim As String Dim iFileNo As Integer Dim i As Integer Dim StrLine As String iFileNo = FreeFile Open ChkFileStr For Input As #iFileNo Do While Not EOF(iFileNo) i = 1 Line Input #iFileNo, StrLine Do While i < Len(StrLine) + 1 iRet = StrConv(Mid(StrLine, i, 1), vbWide) 'ワイド文字に変換してみる If InStr(1, iRet, Mid(StrLine, i, 1)) = 0 Then '変更前と変更後に際がある場合 chkCode_SJIS = False 'EUCの可能性があるため、処理を継続 Else 'かわりなかった
Select Case iRet 'EUCの判定要素をいくつか列挙 Case "。", vbTab, "", "ハ", "、", "・", "・", "。", vbLf chkCode_SJIS = False Case Else iRet2 = StrConv(iRet, vbNarrow) '試しに1バイト文字に戻してみる If InStr(1, iRet, iRet2) = 0 Then '変更前と変更後に差異がある場合 Close #iFileNo chkCode_SJIS = True Exit Function Else 'かわり無い場合漢字の可能性があるが1バイトに変換不可ならひらがなの可能性あり iRet3 = StrConv(iRet, vbKatakana) 'カタカナに変換してみる If InStr(1, iRet, iRet3) = 0 Then '変更前と変更後に差異がある場合 Close #iFileNo chkCode_SJIS = True Exit Function Else 'ほぼ漢字の可能性大だが文字化けが漢字になることもあるため様子を見る chkCode_SJIS = False '漢字の場合は一応疑ってかかる End If End If End Select End If i = i + 1 Loop Loop End Function