Hobby::C++の最近のブログ記事

前の10件 1  2  3  4  5  6  7  8  9  10

思わぬ苦戦

| コメント(0) | トラックバック(0)

超長文字列のリソース埋め込みができそうなので、Excelのアドインで円周率を3万桁ほど返してみようとしたところ、とんでもないところで躓くことになった。
#悩みまくりのお手上げ。

なんと、引数なし関数の登録ができないのだ。

なぜ、できないのかは、よくわかっていない。
SDKのサンプルではいとも簡単に登録できているし、引数ありなら問題ないのに、引数なしになった途端に破綻する。
#途端破綻、ドタンバタン。

ま、いい機会だから、気になってたところを直しつつ、VS2010に移行して、メモリ使用効率もあげちゃおうかと考え中。
#計算部分には手を入れないつもりなので、高速化はできないと思う。
かなり手間だけど。

同時に64bit対応化も。

要は.rc2ファイルへ移動させればよいのだけれど、プロジェクト雛形によってはrcもrc2も無い場合があるので、メモ。

まず、プロジェクトにリソースファイル(.rc)を追加して、バージョン情報リソースを作成する。
これはVC++の統合環境から実行できる。

次に、.rc2の追加だが、これは面倒。
単に.rc2ファイルを追加してもダメなので、.rcファイルの修正が必要になる。

.rcファイルをメモ帳か、VC++のテキストエディタで開いて、
3 TEXTINCLUDE
の箇所と、
// Generated from the TEXTINCLUDE 3 resource.
の箇所に呪文を追加する。
ただ、呪文は結構難しいので、別途作成したMFCプロジェクトの.rcファイルの記述を参考に記述する。
#もしかするともっと簡単な方法があるかも知れない。

そして、VS_VERSION_INFO VERSIONINFOからの一連のバージョン情報を.rcから.rc2へ移動させる。

移動すると、どんないいことがあるかというと、たとえば、リソースエディタでの変更保存時でも削った不要な情報の再作成が行われないとか、プリプロセッサによる条件分岐を設定しても消されないとか、なんかこんなこともできたりするらしい。

リソースエディタが使えなくなるけど、ある程度プロジェクトが固まったらそんなに編集するものではないので、移動させて勝手に変更されなくするのもアリだと思う。

非同期関数ですと?

| コメント(0) | トラックバック(0)

昨日の記事で、発見したXLLSDKのヘルプドキュメントをちらっと見たところ、非同期関数を定義できるとか。

長時間掛処理でExcel無応答になることが、これで防げるのかどうか、どちらにしろ、Excel2010の新機能だと思われる。

長時間処理といえば、HyperLong系の処理なのだが、これ、非同期にしたら、実行時間は変わらなくても、処理的に軽くなるかも知れない。
やってみる価値はありそうだ。

 

64bitExcelで動いた

| コメント(0) | トラックバック(0)

過去記事の誤り。

「署名があるとか無いとか、そんなことはどうだっていいんです」という結論。

やってみることは大事だね。
ただ、まだ、「動いた」というレベルだけれども。

とりあえず、Excel4系関数を排除して、Excel12系関数(SDKだと、_WIN64定義時に呼べないようになってるのを解除)のみにして、x64ターゲットでコンパイル。

すると、登録もできるし、関数も呼べる。
手放しで喜ぶのは構造体のアラインメントを詳しく確認してからなのだが、とりあえず、Excel2007と同程度のことはできそう。
それ以上の何かを期待できるかも知れないのだが、まずは、そこから。

・・・と、少し満足してたら、こんなものが!!
出てるなら出てるって教えておくれよ!!!<いや、無理。

仕方ない、中身調べてみるか・・・

protected

| コメント(0) | トラックバック(0)

継承すれば、親クラスのprotectedメンバにもアクセスし放題とばかり思っていた。

この十年余り。

俺もまだまだだな。

こんなC++コードを書くと、「A& GetA(A& org)中のorg.A::GetA()呼び出しって、protectedだからアクセスできないよ~」というコンパイルエラーが出る。

A& GetA(B& org)の方は大丈夫。

なんとなーく、Aのprotectedメンバにサクサクアクセス出来ちゃいそうに思っていたので、自己修正、覚え直し。

C#でも試したけど、同様。

64bitExcelで動かない

| コメント(0) | トラックバック(1)

Office2010の64bit版をインストールしたので、64bit版ExcelでAddin for Excel 95-2007の動作を確認してみたところ、動かない。
動かないというか、アドインの追加で躓く。

原因は、

  • 32bitだから
  • 署名がないから
  • その他

など考えられる。

Addin for Excel 95-2007 Basic EditionのVer0.7.1を公開した。

せっかくコンピュータ使ってんだから、有効桁なんてケチなこと言わず、どーんと数百~数万桁使っちゃえ的に加減乗除+開根+比較までできるってことは、100円電卓レベルの操作を多桁で実現できちゃったってことだ。
開根には時間掛るけど、100円電卓では得られない精度。
互換関数使えば互換性と処理速度と精度のいいとこ取り。

是非使ってみて欲しい。

HyperLong系の加減乗除、開根、大小比較まで出来るようになっている0.7.1もまだ公開されてませんが、次回(0.7.2)の予告。

絶対値取得関数。
開根関数には必須。
実は、文字列として、たとえ負の数だろうが、- を先頭に付けるだけで、符号反転できたりする仕様なので、条件判定して、- を文字列連結しちゃえばいいんだけど、それだと32767文字超えちゃう可能性があるので、関数として用意しておいたほうがいい。

円周率定数関数。
定数なので、計算処理無しで返したいところ。
これまで、「そんなに長く円周率算出して実際使うのは10ケタも無いじゃん」って言われ続けてきた円周率をこれでもかというくらいに長く利用できるようになったので、なが~く出せるように。
ついでにSQRTPI関数っぽいものも。

あとは提供方法考え中なのが、返却の文字列長指定。
あると、結構便利な予感。

他には、SUM系の関数をと考えてるんだけど、今のところ未定。

ま、こんなところかな。
徐々に追加すれば良い。

多桁開根登録しますた

| コメント(0) | トラックバック(0)

Excelの多桁開根関数を追加したやつ、登録しました。

Addin for Excel 95-2007 Basic Edition

多分、来週には公開されるんじゃないかな。

サポートはこちら

今回のバージョンは、0.7.1になりまする。

是非、ご利用くださいな。

Excel95の挙動に対応

| コメント(0) | トラックバック(0)

戸惑いだけでは先に進まない。

HLCOMP関数は-1,0,1を返すため、整数型を使っていた。
至極当然だろう。

だが、ここに落とし穴があった。

前の10件 1  2  3  4  5  6  7  8  9  10

サイトカウンタ

Total: 211,632 Hits, (Recent24Hours: 0 Hits)
~ Since 2010/01 ~

埋め込みツイッター

取得失敗;;
Now: 2024/04/20 19:50:12 JST

このアーカイブについて

このページには、過去に書かれたブログ記事のうちHobby::C++カテゴリに属しているものが含まれています。

前のカテゴリはHobby::.NETです。

次のカテゴリはHobby::Excelです。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

月別 アーカイブ

2024年2月

 日   月   火   水   木   金   土 
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29    

埋め込みQRコード