OOobbs2/159
質問
テキストファイルに、ファイルのフルパスが1行だけ書かれています。 (c:\data\test001.jpg) このファイル読み込んで ConvertToUrlを使用して file:///c:/data/test001.jpg に変換したいのですが file:///c:/data/test001.jpg%0A となってしまいます。 どうすれば必要な部分のみ取得できますでしょうか? 以下コードを書きます。 コードはこのサイトを参考にしました。
Sub SimpleFileAcccess Dim oSimpleFileAccess As Object Dim oSettings As Object Dim oPathSettings As Object Dim sURL As String oSettings = createUnoService( "com.sun.star.frame.Settings" ) sURL = "file:///c:/data/test.txt" oSimpleFileAccess = createUnoService( _ "com.sun.star.ucb.SimpleFileAccess" ) MsgBox oSimpleFileAccess.exists( sURL ) Dim sLine As String, sDataLine As String Dim oFileAcc As Object, oInputStream As Object Dim vData As Variant oFileAcc = CreateUnoService("com.sun.star.ucb.SimpleFileAccess") oInputStream = CreateUnoService("com.sun.star.io.TextInputStream") oInputStream.setEncoding( "SJIS" ) If oFileAcc.exists(sUrl) Then vData = oFileAcc.openFileRead(sUrl) oInputStream.setInputStream(vData) While NOT oInputStream.isEOF() sLine = oInputStream.readLine() sDataLine = sDataLine & sLine & Chr(10) WEnd oInputStream.closeInput() FileLoader = sDataLine End if oDoc = ThisComponent oText = oDoc.getText() oViewCursor = oDoc.getCurrentController().getViewCursor() Dim sDataLine2 As String Dim sDataLine3 As String sDataLine2 = sDataLine sDataLine3 = ConvertToUrl(sDataLine2) MsgBox (sDataLine2) MsgBox (sDataLine3) sDataLine2は 「c:\data\test.jpg」 と表示されます。 sDataLine3は 「file:///c:/data/test001.jpg%0A」 と表示されます。 回答
sDataLine = sDataLine & sLine & Chr(10) としている部分で LF を追加しているために ConvertToURL で変換すると LF が付いて来ています。 XTextInputStream インターフェースの readLine メソッドは改行コードの CR、LF は取り除いて一行または EOF まで読み込みます。一行しか書かれていないのが前提であれば上記のコードの & Chr(10) を取り除くと良いと思います。 複数行で各行ごとに読み込むのであれば行ごとに配列に格納するのがいいんじゃないでしょうか・・・。
感想,コメント,メモ
|