ファイルの関連付け

ActiveBasicでのプログラミングでわからないこと、困ったことなどがあったら、ここで質問してみましょう(質問を行う場合は、過去ログやWeb上であらかじめ問題を整理するようにしましょう☆)。
返信する
メッセージ
作成者
M.S.
記事: 212
登録日時: 2005年6月01日(水) 21:51
お住まい: 奈良県北西部

ファイルの関連付け

#1 投稿記事 by M.S. »

ファイルの関連付けで、
レジストリの部分は猫でもわかるプログラミングを見てできましたが、
コマンドラインの部分がうまくできていないのか、
関連付けたファイルをダブルクリックで開こうとすると、
「問題が発生したため、xxx.exe を終了します。 ご迷惑をおかけして申し訳ありません。」
というエラー報告のメッセージが出てきてしまいます。
*D & D ではちゃんと動きます

どこがいけないのでしょうか?
コマンドラインの取得部分は、
SPIRIT さんの WinTips のものを引用しました。

AB Ver.: 5.00.00 (CP3)
konisi
記事: 893
登録日時: 2005年7月25日(月) 13:27
お住まい: 埼玉県東松山市
連絡する:

#2 投稿記事 by konisi »

こんな感じでうまく動きますか?

before:

コード: 全て選択

    lstrcat(pg,Ex"\q") 
    lstrcat(pg," %1")
after:

コード: 全て選択

    lstrcat(pg,Ex"\q \q%1\q")
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。

に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
M.S.
記事: 212
登録日時: 2005年6月01日(水) 21:51
お住まい: 奈良県北西部

#3 投稿記事 by M.S. »

返信遅れてしまって申し訳ありません。

konisi さんのおっしゃるとおり、

コード: 全て選択

    lstrcat(pg,Ex"\q \q%1\q")
として、
CommandLine() の中を少しいじると、
できるようになりました。
ありがとうございます。

僕が試した PC だけだと困るので、
もしよければ下記の URL からダウンロードして、
試してみてください。
Download: ファイルへ直リンクしてあります

OS: WinXP SP2, WinME
イグトランス
記事: 899
登録日時: 2005年5月31日(火) 17:59
お住まい: 東京都
連絡する:

#4 投稿記事 by イグトランス »

icoやpgは、ZeroStringやlstrcatを使わなくても、単にico = Ex"\q" + buf + Ex"\q, 1"や、pg = Ex"\q" + buf + Ex"\q \q%1\q"で十分です(konishiさんの修正適用済)。

ZeroStringの結果を代入しても、結局その次の行の代入で参照できなくなります。
文字列の+演算子は左右を連結するのに十分なだけのメモリを確保して、それを結果とするためです。
そこへさらに、lstrcatで文字列を追加しているのは良くないです。
konisi
記事: 893
登録日時: 2005年7月25日(月) 13:27
お住まい: 埼玉県東松山市
連絡する:

#5 投稿記事 by konisi »

本当だ、よく見たらString型だ。

WinAPIは*Char型(BytePtr型)で文字列処理を行ってるものが多いので、
簡単な文字表示以外の場面では、callocで領域を確保するようにしてみてはどうでしょうか?
開放忘れには十分に注意する必要があるんですが。

文字の連結にはwsprintfやlstrcatが使えます。
lstrcatは、長い文字を処理する時は動作が鈍るんですが。

文字列の長さの取得はlstrlenでしたっけ?
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。

に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
M.S.
記事: 212
登録日時: 2005年6月01日(水) 21:51
お住まい: 奈良県北西部

#6 投稿記事 by M.S. »

返信、遅れてしまいすみません。


> 本当だ、よく見たらString型だ。
>
> WinAPIは*Char型(BytePtr型)で文字列処理を行ってるものが多いので、
> 簡単な文字表示以外の場面では、callocで領域を確保するようにしてみてはどうでしょうか?
> 開放忘れには十分に注意する必要があるんですが。
>
> 文字の連結にはwsprintfやlstrcatが使えます。
> lstrcatは、長い文字を処理する時は動作が鈍るんですが。

普通に "+" で繋げると、
表示される文字列が途切れてしまうので lstrcat にしたのですが、
良くないみたいですね。
なので、wsprintf に書き換えました。


> 文字列の長さの取得はlstrlenでしたっけ?

それでよかったと思います。
返信する