【StarSuite Basic/OpenOffice.org Basic】

■ このスレッドは過去ログ倉庫に格納されています
2006/10/06(金) 20:04:48
StarBasicまたはOOo Basicプログラミングに興味のある方、
もしくは学習中の方、知識共有の場にしましょう。

参考になる主なリンク
StarSuite 8 Basic プログラミングガイド
http://docs.sun.com/app/docs/doc/819-1332?l=ja
OpenOffice.org 推進サイト
http://ooosupport.good-day.net/ja/documents/faq/
OpenOffice.org日本ユーザー会翻訳プロジェクト BASIC HELP
http://openoffice-docj.sourceforge.jp/tr/translated/basic_help_frame.html
OpenOffice.org本家 API Project
http://api.openoffice.org/
ウィキブックス OpenOffice.org Basic
http://ja.wikibooks.org/wiki/OpenOffice.org_Basic
ウィキブックス OpenOffice.org Calc Basic
http://ja.wikibooks.org/wiki/OpenOffice.org_Calc_Basic
pukiwiki Plus!
http://hermione.s41.xrea.com/pukiwiki

他に追加情報があったら教えてください。
2008/07/12(土) 00:09:56
OOo はTCP/IPで接続できるが?別にpipeでもいいけど
2008/07/12(土) 04:50:57
通りすがりの者だが読んでるだけで勉強になるスレだと思った
264デフォルトの名無しさん
垢版 |
2008/07/12(土) 09:21:29
243です
私もフルパス指定でやってみましたが"bregexp.dll"以外のdll
(unlha32.dll,urmon.dll,nmail.dll)ではいずれも関数を呼び出した行で
"実装されていません"となります(フルパス指定しない場合と同じ)
なので2.0では"Declare Function"が使えないのだと思っていました
2008/07/12(土) 11:23:01
kernel32 内のは動く (1.1.5、2.0)
ttp://www.oooforum.org/forum/viewtopic.phtml?t=72220&highlight=kernel32

Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" _
(ByRef lpbuffer As String, nSize As Long) As Long

Public Function ComputerName() As String
Dim sBuffer As String
Dim lSize As Long
Dim sNome As String

sBuffer = Space$(260)
lSize = Len(sBuffer)
Call GetComputerName(sBuffer, lSize)
If lSize > 0 Then
sNome = Left$(sBuffer, lSize)
lSize = InStr(sNome, Chr$(0))
If lSize Then
sNome = Left$(sNome, lSize - 1)
End If
Else
sNome= ""
End If
'ComputerName = sNome
MsgBox sNome
End Function

bregexp のときの Declare 時の引数を ByRef だの ByVal をいじっても特に変わりなし
相性悪いんかね・・・
266デフォルトの名無しさん
垢版 |
2008/07/12(土) 18:14:12
>>265も動きません
OS等OOo以外の環境が原因の可能性が濃厚ですね
そうなると他の方には解決策の探しようがありませんので
"Declare Function"の使用は断念します
お騒がせしました
(com.sun.star.util.TextSearchで2件目以降のマッチングさえ取得できれば・・・)
2008/07/13(日) 00:34:31
TextSearch はリファレンスにサブパターンが取得できるっぽいことが書かれてるのに
取得できないのが痛いよなぁ

二件目以降は文字列の endOffset 以降を再検索で・・・
268デフォルトの名無しさん
垢版 |
2008/07/22(火) 06:11:06
com.sun.star.i18n.TransliterationでURLエンコード、デコードって出来るんでしょうか?
2008/07/22(火) 14:46:57
いいえ
270デフォルトの名無しさん
垢版 |
2008/07/22(火) 20:10:42
そうですか、さんくすです。
2008/08/27(水) 12:53:02
Sub clipboard_2
oClip = CreateUnoService("com.sun.star.datatransfer.clipboard.SystemClipboard")
oTransfer = oClip.getContents()
aDataFlavors = oTransfer.getTransferDataFlavors()
bType = False
For i = 0 To UBound(aDataFlavors) Step 1
aDataFlavor = aDataFlavors(i)
If aDataFlavor.MimeType = "text/plain;charset=utf-16" Then
bType = True
Exit For
End If
Next

If bType Then
' convert utf-16 to UNO string
oConverter = CreateUnoService("com.sun.star.script.Converter")
sData = oConverter.convertToSimpleType( _
oTransfer.getTransferData(aDataFlavor), _
com.sun.star.uno.TypeClass.STRING)
End If

End Sub

上記の "If bType Then" 以降の処理を行わず "aDataFlavor" を
クリップボードに戻す事は可能でしょうか
2008/08/27(水) 13:29:10
>>271
クリップボードの内容を text/plain;charset=utf-16 だけにしたいってこと?
2008/08/27(水) 14:40:02
>>272
はい、なぜか文字数が多くなると "If bType Then" 以降の処理の結果
"sData"が空になってしまうので回避したいのです
2008/08/27(水) 14:45:16
>>273
64k 以上の文字列は扱えない・・・。というのが問題だとおもう
OOo Basic だと文字列は64kまで
2008/09/05(金) 12:25:27
ttp://hermione.s41.xrea.com/pukiwiki/pukiwiki.php?OOoBasic%2FGeneric%2FWindow

このページに

>* boolean isVisible () 表示状態を返します
>* void setVisible ( [in] boolean Visible ) 表示状態を切り替えます

とあるのですが
oContainerWindow.setVisible(False) は問題ありませんが
bVisible=oContainerWindow.isVisible() はエラーになります

散々調べた結果

ttp://api.openoffice.org/docs/common/ref/com/sun/star/awt/XWindow.html#setVisible

このページで setVisible は XWindow の下位

ttp://api.openoffice.org/docs/common/ref/com/sun/star/awt/XWindow2.html#isVisible

isVisible は XWindow2 の下位である事まではわかったのですが、そこから先がわかりません
ご教授賜りたく、よろしくお願いいたします
2008/09/05(金) 12:37:11
>>275
OOo 2.4.1 winXP では Calc のウィンドウに対して問題なく動く
Sub test25
oDoc = ThisComponent
oFrame = oDoc.getCurrentController().getFrame()
oContainerWindow = oFrame.getContainerWindow()
oContainerWindow.setVisible(False)
bVisible = oContainerWindow.isVisible()
oContainerWindow.setVisible(True)
End Sub

どんなエラーが出るんかね?
2008/09/05(金) 17:44:16
>>276

BASIC ランタイムエラー
プロパティまたはメソッドが見つかりません
です

このスレッドを読むと1 系には実装されていないとかいうことでしょうか
設定は出来て取得できないなんて考えられないソフトです

メディアを演奏しようとすると
オブジェクト変数は設定できていません
とか言われるし

lockControllers() と addActionLock() を両方使っても
セルカーソルが移動するし

シート数40、サイズ9Mほど(Excel97の場合)のファイルを保存するのに5分!もかかるし
(StarCalc形式なら20秒弱ですむが文字が化けるし、Excel形式だと開くときにシート毎に
行の高さの調整とかを頼みもしないのに実行するのでとてもうっとうしい)

非表示で開いたCSVファイルを保存すると空になってしまうし・・・

Excelのマクロを移植するのは断念します

ありがとうございました

さようなら
2008/09/05(金) 20:58:10
OOo のマクロは利用者が少ないし、ドキュメントも整備されてないから、
開発にかなり忍耐を強いられるのは事実だな。多分不具合も多いと思う。
OOo3 系でも改善される気配がないし。

それに Excel は 2003 までだったらマクロとか動作速度に関しては良くできてるよ。
ただ、Excel 2007 で9M のファイルを開くとエラいことになりそうな気はするけど。
2008/09/05(金) 21:35:08
>>278
よく使う API には問題ない
Basic も大抵なんともないが、あまり使われてなさそうなランタイム関数を使うとバグであー、ってなる

ドキュメントが整備されるとは思えん・・・DevGuide 読めば分かると思われてるし
2008/09/05(金) 21:54:41
まぁ、整備されつつあるドキュメントといえば
ttp://wiki.services.openoffice.org/wiki/Documentation/BASIC_Guide
PDF にすると 214 ページ

翻訳されるようだが・・・
よく使われるであろう Calc に関する内容が少なすぎんかね
2008/09/05(金) 22:11:23
最近見てないけど、全機能の解説には程遠いんだよね、確か
んで、ひたすら Google での検索地獄になる
2008/09/06(土) 14:48:54
まぁ、ぐぐっても解決策が出てきた例がない
283デフォルトの名無しさん
垢版 |
2008/09/07(日) 11:20:27
>>282
使えねーな、全く
会津若松市さん ご愁傷様
2008/09/07(日) 11:23:47
まあ英語ページで回答が見つかることもあるよ

彼らは一体どこで調べたんだろうと思うけども
2008/09/07(日) 12:34:40
本家で、難儀な質問に回答を出してるのは、
ソース触ってる中の人たちじゃまいか?

// ある意味、ソースがドキュメント状態?
2008/09/07(日) 18:23:15
大抵のことは散乱しているドキュメントなどで見つかるんだよ
ソースを見なきゃならんこともあったが・・・

とはいえ、ユーザーが最初の一歩を踏み出そうとするときにまとまったドキュメントが無いと躊躇すると思う
マクロを書くユーザーの多くは OOo のソースなんて見たくないと思うんだが
287デフォルトの名無しさん
垢版 |
2008/09/08(月) 00:56:22
使えねーな、全く
2008/09/08(月) 08:42:30
普通は >>277 のような書き込みは盛大に叩かれるのが一般的なのに、
ここでは誰も否定しないのが素晴らしい。みんなOOoには不満を抱えてるんだな

「○○がMS Officeを捨ててOOoを採用」とかいうニュースを見るたびに
担当 SE はご愁傷様、という気分になるよ
2008/09/08(月) 11:00:09
VBAでシステム組むのが馬鹿なんだよな。
そうでないなら、MSOfficeを大幅に減らしても殆ど問題がないのに。
2008/09/08(月) 21:10:54
>>289
同意。
2008/09/08(月) 21:33:36
>>289
あの便利さは一度覚えるとなかなか抜け出せないと思うよ
2008/09/08(月) 22:02:50
>>291
マならありえない発言だな
2008/09/08(月) 22:09:53
与えられた案件を顧客の要望に沿って実現するのがプログラマではないでしょうか
294デフォルトの名無しさん
垢版 |
2008/09/08(月) 23:27:41
>>289
> VBAでシステム組むのが馬鹿なんだよな。
> そうでないなら、MSOfficeを大幅に減らしても殆ど問題がないのに。
AccessVBAとSQLで大抵の業務がすげーーー効率化、精度向上、リアルタイム化出来るんだけど。
ほとんど労力いらずで。Baseなんてので開発すりゃ、100倍の労力と1/100のサービスになりそう。
なんせ、情報が貧困過ぎる。
2008/09/09(火) 00:24:07
細かい指摘ですまんが、

× SQL
◎ RDBMS
○ MS SQL Server

じゃないだろうか。
リアルタイム化というのは定期的にバッチで処理していた業務を OLTP 化するという事?
2008/09/09(火) 00:33:15
>>295 「AccessとVBA」って書きたかった に100ペセタ
297デフォルトの名無しさん
垢版 |
2008/09/09(火) 19:36:53
>>295
SQLは構造化クエリー言語だから、商品名ってわけじゃないと思うよ。
もち、Access内部のSQLを指す?

Baseはやはりどう考えても代替にはなり得ないと思うが
298デフォルトの名無しさん
垢版 |
2008/09/09(火) 23:31:31
>>297

> Baseはやはりどう考えても代替にはなり得ないと思うが
みんな黙っちゃったじゃまいか
2008/09/09(火) 23:37:54
MS Office は捨てて OOo に移行しろ、みたいなことを言う人は基本的に信用しないことにしている。
本気で OOo に触ったことがある人ならそんなこと言えないと思うし。
2008/09/09(火) 23:47:24
MSOfficeはVBA触って初めてそのバカ高い値段設定にも納得がいく。
開発環境としてすごい整ってる。

だがOO.oの未来を切り開きたい俺はPythonUNOで何とか頑張りたい。
2008/09/10(水) 00:10:28
>>299
信用するかどうかは君の好きで決めていいんだよ。
わざわざ理由を考えてことわる必要なんて無いさ。
2008/09/10(水) 00:24:12
このスレで言うのもなんだけど、Access を使うなら SQLite とか HSQLDB とか
Apache Derby とか MySQL とかをお好みで使えば良いじゃんと思ってしまう。
303デフォルトの名無しさん
垢版 |
2008/09/10(水) 14:53:08
>>297
> Baseはやはりどう考えても代替にはなり得ないと思うが

MSOfficeでも自動マクロ作成以外にマクロのコードを自分で組んでいる
ユーザはそう多くはないだろうということだろう。
OOoのマクロ言語がVBAの代替になるとまで言っている人を俺はいまだ見たことがないが。
問題点は指摘している人はオープンソース派サイドにも幾人かいるが。
2008/09/10(水) 15:53:35
純粋なロジックだけの話なら、ooo-basicはvbaの代替になると思う。
ぶっちゃけ、basicだから。

問題は、アプリとの絡みがある時に、リファレンスになる物が無いって事だろ。
calcのセル操作とかで分んない事があったら、キーマクロ吐き出させて、
呼出関数を探るんだけど、そのキーマクロが吐き出した関数の詳細が判らん。
例えばの話、セルの巾を変える関数が判ったら、
その近くにセルの高さを変える関数があるはずなんだけど、
そういう事が解るようなサマリーが無い。
その辺のドキュメントが整理されてくれば、使い易くなるんでないかなぁ。
305デフォルトの名無しさん
垢版 |
2008/09/10(水) 18:34:36
>>303
> MSOfficeでも自動マクロ作成以外にマクロのコードを自分で組んでいる
> ユーザはそう多くはないだろうということだろう。
VBAは全員手書きだと思ってた
Accessが吐き出すVBAコードは、ある程度例外処理もなされているが
とてもじゃないが冗長すぎる。日本語入ってなくて分かりづらいし
後から手書きで直すのが苦痛ってか不可能。
普通、最初から手で書くか、コピペ手直し派がほとんどだと思うよ。

Accessが吐き出すSQLは割りと綺麗
後、とってもいじりやすい
2008/09/10(水) 19:39:50
日本語コードに拒否反応起こらないの?
307デフォルトの名無しさん
垢版 |
2008/09/10(水) 22:17:22
>>306
オブジェクトの名称だろ
コードが日本語であるはずがない
ここの人は本当にVBA書いたことあるのだろうか?と疑いたくなる書き込みばかり

Accessが吐き出すVBAは全てアスキーコードに変換される
もちろん意味はある

しかし日本語で済めばそれに越したことはない
2008/09/11(木) 00:38:04
>>304
>キーマクロ吐き出させて

マクロの記録だとコマンド URL しか出んけど、その部分のソース見てるって事?
dispatch は最終手段・・・
2008/09/11(木) 04:38:49
OOoの場合は、マクロの自動生成で吐き出されるコードと、
打ち込みコードとの乖離がありすぎるのがいちばん難点。
その上、日本語のマニュアル書籍がほとんど皆無だから。
2008/09/11(木) 06:07:01
>>309
あれはひどい

あと、全APIのドキュメントがない以上、英語の状況も似たようなもんだと思うよ
英語ではチュートリアルがあるだけマシといえばマシだが
2008/09/11(木) 10:40:07
>>310
全API のドキュメントは登場しないと思う
今あるのは IDL ドキュメントだけど、IDL の無いサービスとかの IDL 追加を issue に出しても
内部用だから・・・とか言って拒否られる
2008/09/11(木) 15:27:36
Sub [test space]
[文字列] = "abc"
msgbox [文字列]
End Sub
313デフォルトの名無しさん
垢版 |
2008/09/11(木) 22:37:56
使えねーな。ほんと
誰でもいいから、もっと使ってネガティブキャンペーンして、MSOfficeの値段を下げてくれよ。
2008/09/11(木) 22:41:59
>>300
Py-UNO だとマクロを拡張機能に入れて配布しにくくないか?
サービスにして com.sun.star.task.XJobExecutor インターフェースとか使わないと実行しにくい
2008/09/12(金) 07:21:33
OOoの普及率や完成度を考えたら、配布以前の問題だろ
316314
垢版 |
2008/09/12(金) 13:26:52
>>300
すまん。2.4.1 の PythonScriptProvider に不具合があるみたいだ

Linux 上だと動作するが、拡張機能が毎回無効にされる
WinXP 上だと ScriptURIHelper がエラーを吐く・・・。
2008/09/12(金) 22:10:23
OOoでマクロならおとなしくBasicにしとくのが無難だと思うけどね。
一番需要があるから開発の今後に(少しは)期待できる気がする。
Javaですらどれだけ使われてるのか疑問。
2008/09/12(金) 22:24:07
Basic は今後は安定化のみしかないっぽいことをどっかの issue で見た気がする
他の言語使えって言ってた
最近 Basic 関連での拡張などは Novel が VBA との互換性を向上させようとしてランタイム関数などをいじっていたもの

Type を Global 変数に入れると消えるのとか直してくれよ・・・
ttp://qa.openoffice.org/issues/show_bug.cgi?id=52057
319デフォルトの名無しさん
垢版 |
2008/09/12(金) 22:41:05
>>317
> 一番需要があるから開発の今後に(少しは)期待できる気がする。
> Javaですらどれだけ使われてるのか疑問。

たぶん習得する時間と労力が全て無駄になる
2008/09/13(土) 00:01:01
>Basic は今後は安定化のみしかない

安定するならそれはそれで結構なことじゃないか
2008/09/14(日) 04:36:31
マクロ記録機能で吐き出されるBasicコードをなんとかしてくれ〜
2008/09/14(日) 12:33:29
グラフいじったときの振る舞いとかを知りたいのに、そういうのは全く吐かれないんだっけ?
2008/09/16(火) 21:20:56
>>322
そう、全く・・・
2008/09/16(火) 21:53:03
グラフ絡みの挙動は、リファレンスで何とかならんかったっけ?
2008/09/16(火) 22:10:33
グラフに新しい系列を追加したりするのはリファじゃさっぱり・・・
2008/09/17(水) 00:26:24
>>325
http://www.oooforum.org/forum/viewtopic.phtml?t=4827
のスニペットを試してみれば?
データテーブルの先頭カラムを、x値に割り当てておくのがコツ。

// .uno:ChangeChartDataでやれたような気がしたんだけど、
// 気のせいだったみたい。
// チャートを明示的に指定できるから、こっちの方がよさげなんだけど
2008/09/17(水) 00:45:06
>>326
それでやるとGUIからやるのとは違ったものになることが多くて
ひとまとめにされたり、変に分割されたりするんよ

ちょっと .chart2.data.DataProvider を試してみる
でも getUsedData から取得できるデータに x のデータが一系列分しかみられないのは・・・
2008/09/17(水) 00:45:12
いや、結局googleでWeb上に分散している答えを探すしか方法がないってことが問題なんでしょ。

あらかじめ答えの書かれた URL が分かってるならいいけど、
それを知らず、なおかつその答えがWeb上に存在するかどうかすら怪しいものを、
疑問点が湧くたびに調べなきゃならないってのは相当なストレスだよ。

俺は一時期VBAマクロの移植作業で苦労した経験があるが、
もう当面やりたいとは思わない。
2008/09/17(水) 00:47:41
いや、GUI から出来るのにそもそも API から不可だったりすることが大問題
調べても見つからないから、ソースを見たら外部から利用できる API がなかったりする
2008/09/17(水) 01:01:24
>>327 x値は普通1系列しか無いんじゃない?

>>328 >結局googleでWeb上に分散している答えを探す
web全体まで見なくても、http://www.oooforum.org/forum/内だけで、
大抵の場合はカタが付くよ。
自分が困ってる問題には、たいがい先につまづいてる人が居るから。
2008/09/17(水) 01:07:20
>>330
XY 散布図に多系列だと、大抵は x に対応する y が必要だからさ・・・
.chart2.data.DataSequence は x と y の対応に関する指定がないっぽいから望み薄だ
2008/09/17(水) 01:19:14
今試したら俺 >>326 の方法で XY 散布図のデータ系列の追加できたけどな。
もともと x, y1, y2 の2系列があるところを x, y1, y2, y3 の3系列にするってかんじに。

あとは色とかは線の太さとかは自分で設定すればいいし。
2008/09/17(水) 01:30:29
いや、散布図で一本目と別の x に対する y の値のグラフを同じグラフに描くような感じに
2.3 頃から使えるようになったやつ
2008/09/17(水) 01:34:58
なるほど、そんな機能があるとは知らなかった。

そんな新しい機能に対するAPIが用意されてるかどうかはすこぶる怪しいな。
2008/09/17(水) 11:05:10
ダメっぽいよ。未だGUIでも個別設定と纏めて設定を切り替えるととち狂うし。
散布図から他のグラフに変えて、元に戻してもおかしくなるし。
# 要は、x軸複数系列は完成してないと見るべし。
2008/09/19(金) 19:11:41
グラフのデータ系列の操作だがどうやら
oChart = ThisComponent.getSheets().getByIndex(0).getCharts().getByIndex(0).getEmbeddedObject()
oCooSys = oChart.getFirstDiagram().getCoordinateSystems()
付近から始めるみたいだ。
337336
垢版 |
2008/09/20(土) 01:34:53
やっと、作成済みの散布図に新しい XY の系列の追加がうまくいったあぁ
2008/09/20(土) 10:04:47
>>337 おめ。

さぁ、後からツボった人が参照できるように、
書いたコードをどこかに晒す作業に戻るんだ。

// 公開の縛りとかが無くて、そゆ事が可能なコードならね:)
2008/09/20(土) 23:00:52
>>338
某所・・・ネットの狭間に書いといたよ
2008/09/29(月) 15:59:20
3.0 rc3 が出て、正式が 10/7 だと正式は rc3 になるんだろうけど
user/Script/python にいれた python マクロが認識されないままになりそうだ
2008/10/14(火) 13:41:17
OOo3.0をさっそく入れてみた。エクセル2003のマクロが動くかどうか試してみた。
シートオブジェクトを代入するところでつまずいた。orz

Dim ST_G As Excel.Worksheet, ST_D As Excel.Worksheet
Sub 図作成()
Set ST_G = Worksheets("Sheet1") ←ここでエラー
Set ST_D = Worksheets("Sheet2")
2008/10/14(火) 14:04:56
Dim ST_G As Excel.Worksheet
を As Object にすればいいんじゃない
343341
垢版 |
2008/10/14(火) 16:12:36
>342
ありがとうございます!
ところが、別のところ(セルの塗りつぶし)でもエラーが出ました。移植に必要な情報ってどこかに
あるんですか?
2008/10/14(火) 22:39:14
ちゅうかさ、v.2 の頃に以前 VBA サポートを有効にしたビルドを使ったことあるけど、
あれにあんまり期待しない方がいいと思うぞ。ほとんどが動かなかったし。
2008/10/15(水) 15:35:32
※NetBeansスレでも聞いたのですが、こちらでもお願いします。
NetBeansでOpenOffice.Apiを使ったことのある方、教えてください。

やりたいこと 「OpenOffice.Calcからjavaのメソッドを呼び出す」
調べたら
NetBeansでOpenOffice.Apiを使えば簡単にスケルトンクラスを作ってくれることがわかりました。
早速、Apiをインストールしたのですが、以下の現象がでてます。

Apiをインストールすると

アドオン、calc アドイン、component、クライアントアプリ

の4つのプロジェクトが作成可能になります。

今回のやりたことは、componentプロジェクトでできそうです。
試してみると、アドオン・calc アドインは動作するのですが、componentプロジェクトがうまく作れません。

componentプロジェクトを作成すると、サービスの登録画面が表示され、インターフェース、サービスを追加しようとしたのですが、なぜか追加できません。
インタフェースを選択し新規データ型を定義ボタンから、追加しているのですが、うまくいきません。

解決策、またはやり方の間違えを指摘できる方、お願いします。

OS:WindowsXP pro
IDE:Netbeans 6.1
OO:OpenOffice 2.4.1
SDK:StarSuite_8_SDK

で試しています。
OpenOfficeSDKは現在DLできないようなので、StarSuite_8_SDKを使ってみました。

よろしくお願いします。
2008/10/15(水) 15:42:53
>>345
こことかどうかな
ttp://wiki.services.openoffice.org/wiki/General_UNO_Component_Project_Type
2008/10/15(水) 15:51:07
>>346
早速の返信ありがとうございます。

そのサイトを参考に進めていたのですが、Interfaceを追加するところから先に進まない状況です。
Logでも吐き出してくれれば調査できるのですが、そういうのも見当たらず・・。

もしかすると、IDEとOOのバージョン組み合わせに問題があるのかもしれません。

ほかにも何か、気になることがあればお願いします。
2008/11/26(水) 12:13:34
バイナリファイルからnull terminated stringを
読む方法はありますか?
OpenOffice.org 3.0/calc/OOo Basicです。

対象のファイルはバイナリファイル
(ゲーム提督の決断4のセーブデータ)であり
アドレス2192F(h)から
8b e3 98 5a 8e ae 8a cd 90 ed 00
と記録されています。(Shift-JISで「九六式艦戦」)

Dim Result as String
Get #1, Offset+1, Result
とすると「六式艦戦」から始まる長さ51807バイトの
文字列になってしまいます。
どうやら先頭2バイトを文字列長さと認識しており、
00を文字列終端と認識しません。

Input #1, Result
とすると「ヒ ̄リZホ?ハ?ミ?」という長さ10バイトの
文字化けした文字列になってしまいます。

null terminated stringをOOo Basicのstringとして
読み込む方法を教えてください。
2008/11/26(水) 14:12:07
バイナリデータの取得自体はこのへん?
ttp://hermione.s41.xrea.com/pukiwiki/index.php?OOobbs%2F96

サイズの指定は手動でいいなら
Dim buf(10) As Byte ' 0〜10の11個
oInputStream.readBytes(buf(), 11)
こんな感じでできるんじゃないの。それをどうstringに変換するかは知らんけど。

ってそういう話じゃないのかな?
350348
垢版 |
2008/11/26(水) 14:29:26
リンク先が参考になりました。
ありがとうございます。

バイト型の配列で読みとれたら、後は文字列への変換ですね。
Shift-JIS→Unicode変換の方法がわかれば、
Chr関数はUnicode値→文字へ変換と組み合わせることで
解決できそうです。
2008/11/26(水) 14:44:02
こういう基本的なドキュメントってどっかにまとまってるべきだよなあ
352 
垢版 |
2008/11/26(水) 14:50:59
>>351に言い出しっぺの法則が適用されました
2008/11/26(水) 14:54:39
いや、ドキュメント作るにしたって元ネタがSunの出してる全然不足だらけのドキュメントと
掲示板に散在するTIPS集しかないじゃん。まさかソースからドキュメント起こせとでも?
2008/11/26(水) 15:11:14
やる気があるならまずは全然不足だらけのドキュメントと掲示板に散在するTIPS集の情報を一箇所にまとめてみれば?
2008/11/26(水) 15:18:54
やる気があるなんて誰も言ってないけど。俺は自力で探す方法でなんとかしのいでるし。
まあVBAのならともかく、Calc Basic のドキュメントなんて書籍化しても100部くらいしか売れないだろうな。
2008/11/26(水) 15:22:44
まあそうだろうね
やる気があるとは思っていないからあるならって仮定付きで言ったまでで
しかし書籍化なんて言葉が思い浮かぶだけでもびっくりだ
2008/11/26(水) 15:26:30
何をそんなにカリカリして食いついてくるのか理解不能だな
358 
垢版 |
2008/11/26(水) 15:30:17
「まとめるべきだよなぁ」なんて言ってるからじゃね?
頭から他力本願な癖に「〜すべきだ」なんて強要する態度が気に入らないと思われ。
2008/11/26(水) 15:33:08
何怒ってんだろう?OOo関係に文句いったらカチンとくるの?
2008/11/26(水) 15:42:07
いやOOo使ってないし
単にあがってるスレだったのが理由
さがってればスレの存在自体知らなかった
一般的な突っ込みの仕方をしただけなんで
OOoのドキュメント環境の知識はないよ
361デフォルトの名無しさん
垢版 |
2008/11/26(水) 17:13:44
煽ってるつもりなんだろうか?
アホの考える事はわからんの〜
■ このスレッドは過去ログ倉庫に格納されています