Top > OOobbs2 > 159

OOobbs2/159 Edit

  • サマリ: テキストふぁいるの読み込み
  • 環境: Writer
  • 状態: 解決
  • 投稿者: ゼットン?
  • 投稿日: 2008-11-19 (Wed) 17:32:05

質問 Edit

テキストファイルに、ファイルのフルパスが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」 と表示されます。

回答 Edit

  • %0A は文字コードでいうと LF に相当します。ファイルから読み出したときに、
sDataLine = sDataLine & sLine & Chr(10)

としている部分で LF を追加しているために ConvertToURL で変換すると LF が付いて来ています。

XTextInputStream インターフェースの readLine メソッドは改行コードの CR、LF は取り除いて一行または EOF まで読み込みます。一行しか書かれていないのが前提であれば上記のコードの & Chr(10) を取り除くと良いと思います。

複数行で各行ごとに読み込むのであれば行ごとに配列に格納するのがいいんじゃないでしょうか・・・。

  • はにゃ? 2008-11-19 (水) 18:25:41
  • ありがとうございます。解決しました。一行しかないtxtなので取り除くだけにしました。 -- ゼットン 2008-11-19 (Wed) 18:48:31

感想,コメント,メモ Edit



Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup   Help   RSS of recent changes