名前 題名 ▼ Mr.XRAYさん > ▼ たたみやさん,こんにちは. > > ファイルリストの方も,文字化け対策コードを追加して確認しました. > ただし, > > http://mrxray.on.coocan.jp/Delphi/plSamples/774_Indy_FTPDirFileList.htm#02 > > でテストしています.ファイルリストで,日本語のフォルダ名があった場合に > それを展開する時も同様な処理が必要となります. > もちろん,ディレクトリ名に日本語があった場合など... > いろいろ思考(試行?)をめぐらせています. > > どういう形でサンプルプログラム集の見直しをするかも悩んでいます. > MECSUtilsの機能の一部しか利用しないので,直接コードにしてしまうと, > 先のコード, > > > //目的のファイルがあるディレクトリに移動 > > IdFTP1.ChangeDir(FTP_Root_Dir+target_dir); > > IdFTP1.List; > > if Assigned(IdFTP1.DirectoryListing) then > > begin > > for i:=0 to IdFTP1.DirectoryListing.Count-1 do > > begin > > AFTPItem := IdFTP1.DirectoryListing.Items[i]; > > if (AFTPItem.FileName)=fname then > > begin > > FTP_FileSize := AFTPItem.Size; > > break; > > end; > > end; > > end; > > このコードで,問題となるのはAFTPItem.FileNameです. > var > FileName : String; > とでも定義して,以下の関数,関数内関数でもいいと思います.を作成します. > > function ChangeCodePage_forDisp(S : String) : String; > var > i : Integer; > U8 : UTF8String; > begin > SetLength(U8, Length(S)); > for i := 1 to Length(S) do begin > U8[i] := AnsiChar(S[i]); > end; > Result := UnicodeString(U8); > end; > > そして,この関数を使用して, > > FileName := ChangeCodePage_forDisp(FileName); > > としてFileNameのコードを変換します. > > 掲示板ご覧の他の方へ. > このコードは,Delphi 2009以降,ホストのファイル名の日本語文字が > UTF-8の場合のものですので注意. > Shift-JISの場合は, > > type > SJISString = type AnsiString(932); // Shift-JIS(CP932) > > と宣言して, > U8 : UTF8Stringの代わりに使用します. > Delphi 2007以前では,Shift-JISの場合,この処理は必要ありません. GIF,JPEG,PNG画像ファイル及びLZH,ZIPファイルをアップロードできます.600 x 1200 ピクセルを超える画像は縮小表示されます(画像クリックで拡大表示). (上限122000(120k)バイト) 削除キー Link