Top > OOobbs > 65

OOobbs/65 Edit

  • サマリ: Get ステートメント
  • 環境: Calc
  • 状態: 解決
  • 投稿者: ウズマキナルト?
  • 投稿日: 2005-05-07 (土) 14:51:23

質問 Edit

OOo1.0.3を使っていますがHelpの中に「Get ステートメント」 という項目がありまして、その中に以下の例文があります。

Sub ExampleRandomAccess
Dim iNumber As Integer
Dim sText As Variant REM Must be a variant
Dim aFile As String
aFile = "c:\data.txt"
iNumber = Freefile
Open aFile For Random As #iNumber Len=32
Seek #iNumber,1 REM Position at beginning
Put #iNumber,, "This is the first line of text" REM Fill line with text
Put #iNumber,, "This is the second line of text"
Put #iNumber,, "This is the third line of text"
Seek #iNumber,2
Get #iNumber,,sText
Print sText
Close #iNumber
iNumber = Freefile
Open aFile For Random As #iNumber Len=32
Get #iNumber,2,sText
Put #iNumber,,"This is a new text"
Get #iNumber,1,sText
Get #iNumber,2,sText
Put #iNumber,20,"This is the text in record 20"
Print Lof(#iNumber)
Close #iNumber
end sub

これを実行してもうまくうごきません。 これを動くようにするにはどうしたらいいでしょうか? ちなみにOOo1.1.4のヘルプにも同じようにGet ステートメント についてがあります。 よろしくお願いいたします。

回答 Edit

  • Get ステートメントがうまく動作していないですね。最初の Get ステートメントの取得位置を "1" に指定してやるとうまく動作するように見えますが,現在の位置からの取得ができないのに加えて他の位置からの取得もできていません。Andrew Pitonyak のドキュメントにも同じようなマクロが記載されていますが,"?? This is broken!" と書かれています。

Get ステートメントは使わない方がよさそうです。

テキストファイルを作成するときには私の場合にはもっぱら com.sun.star.io モジュールのサービスを利用しています。

  • はにゃ?? 2005-05-08 (日) 10:33:56
  • お久しぶりです。返事ありがとうございます。そうですかやはりGetステートメントは壊れているとみなした方がいいのですね?ちなみにはにゃ?さんのおっしゃる通り、”1”を挿入すると途中まではうまくいくのですが2回目のOpen aFile For・・・の所で残っていたデータが全部消えてしまいます。せめてこのデータが消えるのを回避したいのですが。 -- ウズマキナルト? 2005-05-09 (月) 09:23:59
  • 二回目の Open aFile For ... の文を次のように書き換えると,
Open aFile For Random Access Read As #iNumber Len=32

データは消えませんが,読み込み専用で開いているので Put による書き込みができません。Open ステートメントで For Random を指定して Access Writer または Access Read Write の場合にはデータが削除されてしまいます。

これも使えませんね。普通にテキストファイルの読み書き時には読み込みも書き込みもうまくいくんですが。

  • はにゃ?? 2005-05-09 (月) 23:59:51
  • そうですかやはり使えませんね。ありがとうございます。所で上のほうで教えていただいた”テキストファイルを作成するときには私の場合にはもっぱら com.sun.star.io モジュールのサービスを利用しています”ですがよろしければ例文などをおしえていただけないでしょうか?お忙しいところすみません。 -- ウズマキナルト? 2005-05-10 (火) 19:11:41
  • OOoBasic/Generic/textfile のページをみてもらえるといいと思います。 -- はにゃ?? 2005-05-10 (火) 21:06:37
  • ありがとうございました。教えていただいたサイトを元に試してみようと思います。 -- ウズマキナルト? 2005-05-11 (水) 08:48:42
  • お疲れ様です。教えていただいたサイトを見せていただきました。ファイルアクセスの方法を理解することができました。ありがとうございます。ただ、ランダムファイルアクセスというか、何らかのデータの何行目のデータにアクセスし書き込みし保存するというようなアクセス方法はないでしょうか?Getステートメントが使えたらそれができるのかな?と思っていましたものですから・・・。何度も質問してすみません。 -- ウズマキナルト? 2005-05-12 (木) 20:11:32
  • com.sun.star.io.MarkableInputStream と com.sun.star.io.MarkableOutputStream をつかえばできるかなと思いましたが,byte しか書き込めないので文字列を byte に変換しなければいけないようです。結構大変ですので止めた方がよさそうです。 -- はにゃ?? 2005-05-15 (日) 13:32:56
  • ありがとうございます!こちらとしてはbyteでもかまわないと考えていますので、Tryしてみようと思います。ありがとうございました。 -- ウズマキナルト? 2005-05-17 (火) 08:41:41


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