FreeBasic
ttp://www.freebasic.net/
建てたいって人がいたので勝手に建てた
後はご自由にどうぞ
俺は知らん
過去スレ
http://echo.2ch.net/test/read.cgi/tech/1139379786/
【QBASIC互換!?】FreeBasic【GPL】 2 [無断転載禁止]©2ch.net
1デフォルトの名無しさん
2016/12/24(土) 12:22:27.77ID:CVYSyiU+39デフォルトの名無しさん
2017/01/29(日) 13:19:08.83ID:ElqR2hUp >>38 のつづき。動作試験用ソフトは以下の通り。
http://www.dotup.org/uploda/www.dotup.org1138726.zip.html
D:\bas\Projects\Kako02\Mod\TakaCom0.bi
が抜けているけど、Bak\TakaCom0(1).bi が使えると思う。
使える人がいたら使ってみて。
http://www.dotup.org/uploda/www.dotup.org1138726.zip.html
D:\bas\Projects\Kako02\Mod\TakaCom0.bi
が抜けているけど、Bak\TakaCom0(1).bi が使えると思う。
使える人がいたら使ってみて。
2017/01/29(日) 13:23:35.22ID:V71V/mQX
>>37
君の実情なんてどうでも良い
やっているなら、スレの私的専有を止めればよいでしょ
移植日記なら他所でやりなよ
>>38なんか見てもそうだけどマニュアル読めば分かることを
ダラダラと流されても何じゃそりゃなんだよ
せめて分からなかった所を質問形式でレスしなよ
全く整理もしていないオナニーレスを流すな
一応突っ込んでおくわ
>Complex2Val = TekiToComp(Complex1Val)
参照返しを値型の変数で受け取ったら、コピー代入になるのだから当たり前でしょ
右辺と左辺の間の=の意味は、let演算子
つまり、右辺の関数評価→左辺に代入評価が起こっているの
dim byref as Complex a = TekiToComp(Complex1Val)
なら、変数aは参照先Complex1Valの値を表示するだろうよ
FB独自の言語機能云々の前にプログラム言語としての前提知識が無さ過ぎるわ
君の実情なんてどうでも良い
やっているなら、スレの私的専有を止めればよいでしょ
移植日記なら他所でやりなよ
>>38なんか見てもそうだけどマニュアル読めば分かることを
ダラダラと流されても何じゃそりゃなんだよ
せめて分からなかった所を質問形式でレスしなよ
全く整理もしていないオナニーレスを流すな
一応突っ込んでおくわ
>Complex2Val = TekiToComp(Complex1Val)
参照返しを値型の変数で受け取ったら、コピー代入になるのだから当たり前でしょ
右辺と左辺の間の=の意味は、let演算子
つまり、右辺の関数評価→左辺に代入評価が起こっているの
dim byref as Complex a = TekiToComp(Complex1Val)
なら、変数aは参照先Complex1Valの値を表示するだろうよ
FB独自の言語機能云々の前にプログラム言語としての前提知識が無さ過ぎるわ
41デフォルトの名無しさん
2017/01/29(日) 20:02:51.85ID:ElqR2hUp >>40 >変数aは参照先Complex1Valの値を表示するだろうよ
高度な使い方。
この方法は、昨年5月ぐらいから探していた。結局見つからなくて、
主ルーチンから各ファイル(モジュール)へ関係値を配るという方法を取った。
なお、*.BI,*.Bas で検索したが
C:\FbEdit\ や C:\Tool\FreeBASIC\ 内に「dim byref」という文字を発見できなかった。
http://makoto-watanabe.main.jp/freebasic/PgDim.html 内にも ByRef の記載が見つからない。
高度な使い方。
この方法は、昨年5月ぐらいから探していた。結局見つからなくて、
主ルーチンから各ファイル(モジュール)へ関係値を配るという方法を取った。
なお、*.BI,*.Bas で検索したが
C:\FbEdit\ や C:\Tool\FreeBASIC\ 内に「dim byref」という文字を発見できなかった。
http://makoto-watanabe.main.jp/freebasic/PgDim.html 内にも ByRef の記載が見つからない。
2017/01/29(日) 20:29:05.86ID:V71V/mQX
>>41
ttp://www.freebasic.net/wiki/wikka.php?wakka=KeyPgByrefVariables
まず公式Wiki、次に公式フォーラム、次にGoogleなどで検索しなされ
>>41のリンク先は個人サイトで非公式サイト
こういうこと本気で言いたくないけど、もうキツイこと言っているから言わせてもらう
このスレッドを利用するに辺り下記を約束して欲しい
・ダラダラ日記を書かない
・分からないことがあれば、簡潔に明瞭に質問する
・ここはパブリックスペースであると認識する
・コードを書くなら該当する部分のみ、不必要なのは書かない
あと、向上心と好奇心、新しいものへの挑戦は忘れないで欲しい
ttp://www.freebasic.net/wiki/wikka.php?wakka=KeyPgByrefVariables
まず公式Wiki、次に公式フォーラム、次にGoogleなどで検索しなされ
>>41のリンク先は個人サイトで非公式サイト
こういうこと本気で言いたくないけど、もうキツイこと言っているから言わせてもらう
このスレッドを利用するに辺り下記を約束して欲しい
・ダラダラ日記を書かない
・分からないことがあれば、簡潔に明瞭に質問する
・ここはパブリックスペースであると認識する
・コードを書くなら該当する部分のみ、不必要なのは書かない
あと、向上心と好奇心、新しいものへの挑戦は忘れないで欲しい
2017/01/29(日) 21:00:37.92ID:V71V/mQX
>>41
ちょいと付け足し
君の実情なんてどうでも良いからそんなのも書かなくて良い
匿名掲示板では「誰が書いたか」よりも「何を書いたか」を重要視するべきだから
加えて、コテハン禁止、無断転載禁止
自治厨みたいなことしたくないが、これがこのスレのルール
異論ある人は言ってくだされ
ちょいと付け足し
君の実情なんてどうでも良いからそんなのも書かなくて良い
匿名掲示板では「誰が書いたか」よりも「何を書いたか」を重要視するべきだから
加えて、コテハン禁止、無断転載禁止
自治厨みたいなことしたくないが、これがこのスレのルール
異論ある人は言ってくだされ
2017/01/29(日) 21:34:05.59ID:V71V/mQX
・コテハン禁止
・無断転載禁止
・荒らしは放置
・sage進行推奨
・質問は簡潔明瞭に必要最低限の情報を記載する事
・次スレは>>990が宣言後に立てる事、無理なら代役をアンカー指名する事
公式
ttp://www.freebasic.net/
公式Wiki
http://www.freebasic.net/wiki/wikka.php?wakka=FBWiki
公式フォーラム
ttp://www.freebasic.net/forum/
前スレ
【QBASIC互換!?】FreeBasic【GPL】2
ttp://echo.2ch.net/test/read.cgi/tech/1482549747/
テンプレここまで
何時になるか分からんが、次スレはこのテンプレを使うように
・無断転載禁止
・荒らしは放置
・sage進行推奨
・質問は簡潔明瞭に必要最低限の情報を記載する事
・次スレは>>990が宣言後に立てる事、無理なら代役をアンカー指名する事
公式
ttp://www.freebasic.net/
公式Wiki
http://www.freebasic.net/wiki/wikka.php?wakka=FBWiki
公式フォーラム
ttp://www.freebasic.net/forum/
前スレ
【QBASIC互換!?】FreeBasic【GPL】2
ttp://echo.2ch.net/test/read.cgi/tech/1482549747/
テンプレここまで
何時になるか分からんが、次スレはこのテンプレを使うように
2017/01/30(月) 16:45:21.93ID:wD8S47f8
固定ハンドルは別に構わない
スパムじゃなければ沢山書いても構わない
質問が増えてきて邪魔になったときは質問用にスレッド別に建てればいい
日本語訳されたヘルプが存在することを示してもいいと思う(リンクの扱いについては知らないからその辺は解らない)
今沢山書いている人に付いては内容が解らないのでなんとも?
スパムじゃなければ沢山書いても構わない
質問が増えてきて邪魔になったときは質問用にスレッド別に建てればいい
日本語訳されたヘルプが存在することを示してもいいと思う(リンクの扱いについては知らないからその辺は解らない)
今沢山書いている人に付いては内容が解らないのでなんとも?
46デフォルトの名無しさん
2017/01/30(月) 21:29:33.66ID:nEd5fDqM >>36 自分のブログか何かでやったら?
というお勧めがあったので、2008年頃に作ったルーチンを見直してみた。
MS でサービスを打ち切ったことから、実行形式のファイルを作るのは不可能。
残っているのは、バックアップ用に残していたソースファイルのみ。
ヘッダー、BODY, LINK, META, TimeZONE の5つの*.frm を子プロセスとして起動して
親プロセスがTxt → Html 書き換えを行うルーチンなんだけど、
html のバージョンが5になった関係で、かなり派手な書き直しが必要。
*.css ファイルについては全く考慮してなかった関係で、新規作成が必要。
内容を見たら、下手に直すよりも最初から作ったほうがでっとりばやい、という結論になった。
というお勧めがあったので、2008年頃に作ったルーチンを見直してみた。
MS でサービスを打ち切ったことから、実行形式のファイルを作るのは不可能。
残っているのは、バックアップ用に残していたソースファイルのみ。
ヘッダー、BODY, LINK, META, TimeZONE の5つの*.frm を子プロセスとして起動して
親プロセスがTxt → Html 書き換えを行うルーチンなんだけど、
html のバージョンが5になった関係で、かなり派手な書き直しが必要。
*.css ファイルについては全く考慮してなかった関係で、新規作成が必要。
内容を見たら、下手に直すよりも最初から作ったほうがでっとりばやい、という結論になった。
47デフォルトの名無しさん
2017/01/30(月) 21:31:47.06ID:nEd5fDqM >>42-44 異論ある人は言ってくだされ
>>1 でいいんじゃないの。
何かってーと制限を加える方向に人は動く。結果として社会主義国家へと動いてしまう。
自由を民主主義を守るためならば、規制を緩和する方向へ動かなければならない。
規制を加える意味がない。オレのことを邪魔するだけの目的しかないんでしょ。
近所のソフト会社で1年以上勤めている人は1割ぐらい。新規学習が追い付かなくなって離職している。
プロと言われる人々で9割が去ってゆくのだが
>向上心と好奇心、新しいものへの挑戦
を要求するのは酷だわ。
プログラマー35歳定年説を支えているのが、このあたりが゜できなくなる年齢が35歳、なこと。
プログラマーになれない9割の人に、同様なことを要求するのは酷だ。
なお、うちの母校で、情報処理関係で卒業できるのは2割程度。
8割が中途退学している。この中途退学者ですら、俺よりも数学は詳しい。
というのは、1年の時に共通講座で数学を学ぶ。
1年の時に微積(微分方程式・積分方程式)で落伍者が出ていない。
うちの学科は、微積で1割弱が落伍していなく、9割が落伍する。
ところが、オレのように高校の副読本を見てつけ焼き場で挑むと、大学院入学試験まで通用する。
というのは、高校の微積の副読本の中から大学院入学試験問題、数学、が出題されるから。
あまりにも酷な条件だ。
>>1 でいいんじゃないの。
何かってーと制限を加える方向に人は動く。結果として社会主義国家へと動いてしまう。
自由を民主主義を守るためならば、規制を緩和する方向へ動かなければならない。
規制を加える意味がない。オレのことを邪魔するだけの目的しかないんでしょ。
近所のソフト会社で1年以上勤めている人は1割ぐらい。新規学習が追い付かなくなって離職している。
プロと言われる人々で9割が去ってゆくのだが
>向上心と好奇心、新しいものへの挑戦
を要求するのは酷だわ。
プログラマー35歳定年説を支えているのが、このあたりが゜できなくなる年齢が35歳、なこと。
プログラマーになれない9割の人に、同様なことを要求するのは酷だ。
なお、うちの母校で、情報処理関係で卒業できるのは2割程度。
8割が中途退学している。この中途退学者ですら、俺よりも数学は詳しい。
というのは、1年の時に共通講座で数学を学ぶ。
1年の時に微積(微分方程式・積分方程式)で落伍者が出ていない。
うちの学科は、微積で1割弱が落伍していなく、9割が落伍する。
ところが、オレのように高校の副読本を見てつけ焼き場で挑むと、大学院入学試験まで通用する。
というのは、高校の微積の副読本の中から大学院入学試験問題、数学、が出題されるから。
あまりにも酷な条件だ。
2017/01/30(月) 22:02:46.66ID:d5jzXwxe
>>47
そういうのは、公共スペースにおいて必要最低限のルールを守っている人が言うこと
君には言う資格がないよ、何言ってんの?
自分が提示した内容は、他の板では通常運転している状態の内容、特別なものではない
君は、そんな暗黙の了解ですら理解していない
>自由を民主主義を守るためならば、規制を緩和する方向へ動かなければならない
自由と無秩序を同列で語るなよ
掲示板のルール云々の話で、その枠を超えて話をするなよ
言っちゃ悪いが、それ馬鹿の典型だぞ
>規制を加える意味がない。オレのことを邪魔するだけの目的しかないんでしょ。
もし、こっちに邪魔する意図があるなら、普通に絡まずに最初からそうするわ
何勝手な被害者妄想してんの?
こっちは何度も譲歩してんだよ、それすら理解していないだろ?
ルール云々を持ち出したのは最終手段なんだよ
君のこれら以外の駄文は、このスレに無用な内容故、反応する気なし
何の反論にもなっていない駄文をダラダラ流すなよ
そういうのは、公共スペースにおいて必要最低限のルールを守っている人が言うこと
君には言う資格がないよ、何言ってんの?
自分が提示した内容は、他の板では通常運転している状態の内容、特別なものではない
君は、そんな暗黙の了解ですら理解していない
>自由を民主主義を守るためならば、規制を緩和する方向へ動かなければならない
自由と無秩序を同列で語るなよ
掲示板のルール云々の話で、その枠を超えて話をするなよ
言っちゃ悪いが、それ馬鹿の典型だぞ
>規制を加える意味がない。オレのことを邪魔するだけの目的しかないんでしょ。
もし、こっちに邪魔する意図があるなら、普通に絡まずに最初からそうするわ
何勝手な被害者妄想してんの?
こっちは何度も譲歩してんだよ、それすら理解していないだろ?
ルール云々を持ち出したのは最終手段なんだよ
君のこれら以外の駄文は、このスレに無用な内容故、反応する気なし
何の反論にもなっていない駄文をダラダラ流すなよ
49デフォルトの名無しさん
2017/01/30(月) 22:28:58.14ID:nEd5fDqM >>48 反論だということを理解できないんだな。
>それ馬鹿の典型だぞ
「後はご自由にどうぞ」とある通り、便所の落書き程度の内容が、掲示板だ。
だから、「馬鹿の典型」な内容を書いていて、問題なし。
なお、オレの文章の基本としては、ドルトルマンボウ系小説がある。
北杜夫が、あとがきに「書くか書かないか迷った時には、書かないほうが良いと思った内容を書く」と書いている。
だから、まじめに、必死になって、「馬鹿の典型」な内容を書いているのが、オレ。
格調高い内容は、いくらでも描ける人かいる。そんなないようは、いくらでも任せられる人々がいる。
しかし、ばかげた内容は任せられる人はなかなかいない。
>それ馬鹿の典型だぞ
「後はご自由にどうぞ」とある通り、便所の落書き程度の内容が、掲示板だ。
だから、「馬鹿の典型」な内容を書いていて、問題なし。
なお、オレの文章の基本としては、ドルトルマンボウ系小説がある。
北杜夫が、あとがきに「書くか書かないか迷った時には、書かないほうが良いと思った内容を書く」と書いている。
だから、まじめに、必死になって、「馬鹿の典型」な内容を書いているのが、オレ。
格調高い内容は、いくらでも描ける人かいる。そんなないようは、いくらでも任せられる人々がいる。
しかし、ばかげた内容は任せられる人はなかなかいない。
2017/01/30(月) 22:44:18.33ID:d5jzXwxe
>>49
やりたきゃ、ご自身のブログやサイトでどうぞ
2chっぽく言うなら、チラシの裏にでも書いてろ
一応言っておくが
君がこのスレで自分の自由を主張するなら、こっちにも君を邪魔する自由があるよね?
ってなるからルールが必要と言っているだけなんだがな
何で理解できないのかな?アホなの?
というわけで、こっちの考えはちゃんと提示したし、譲歩もした
もうこれ以上言うことはない
やりたきゃ、ご自身のブログやサイトでどうぞ
2chっぽく言うなら、チラシの裏にでも書いてろ
一応言っておくが
君がこのスレで自分の自由を主張するなら、こっちにも君を邪魔する自由があるよね?
ってなるからルールが必要と言っているだけなんだがな
何で理解できないのかな?アホなの?
というわけで、こっちの考えはちゃんと提示したし、譲歩もした
もうこれ以上言うことはない
2017/01/31(火) 03:35:01.51ID:SZ8YrWi+
ユークリッドの互除法の数学的な証明が分からないとか言い出したら、きりがない。
グラフ理論など、アルゴリズムの数学的な証明なんか、全部難しい
数学的な証明の話は、数学板でやればいい。
ここはプログラム板だから、数学的な証明は分かっているとして、話を進めろ
数学的な証明が分からない人は、数学板で聞いてくればいい。
一々、プログラム板で対処していたら、きりがない
グラフ理論など、アルゴリズムの数学的な証明なんか、全部難しい
数学的な証明の話は、数学板でやればいい。
ここはプログラム板だから、数学的な証明は分かっているとして、話を進めろ
数学的な証明が分からない人は、数学板で聞いてくればいい。
一々、プログラム板で対処していたら、きりがない
2017/02/01(水) 07:22:32.79ID:eeJTVCPk
新スレになってから何も書かずに放置していたからびっくりした。
ここまでの流れ(?)を確認したらコメント書くよ
ここまでの流れ(?)を確認したらコメント書くよ
5352
2017/02/01(水) 18:34:51.09ID:RvfEzpSd 流れを確認したけど、今のままだったら今後のFreeBASICの発展は望めないと思う。
前スレの日本語訳の辺りから利己的な理由でこのスレが乗っ取られてると思ってる。
それとソースコード垂れ流している時点で簡潔なコミュニティでは無くなってる。
技術ドキュメントだったらまとめて圧縮してファイルにしてアップローダーに上げれば
ほんの数行のコメントとリンクを1つ提示するだけで済む。
こんな状態続いたら開発ツールとしてのFreeBASICの選択意欲は削がれるでしょ。
>>43
異論は無い。FreeBASICとスレの私物化が酷いので長いこと不定期ROMになってる。
国内事情がこれだとFreeBASICに関わりたくなくなるね。
前スレの日本語訳の辺りから利己的な理由でこのスレが乗っ取られてると思ってる。
それとソースコード垂れ流している時点で簡潔なコミュニティでは無くなってる。
技術ドキュメントだったらまとめて圧縮してファイルにしてアップローダーに上げれば
ほんの数行のコメントとリンクを1つ提示するだけで済む。
こんな状態続いたら開発ツールとしてのFreeBASICの選択意欲は削がれるでしょ。
>>43
異論は無い。FreeBASICとスレの私物化が酷いので長いこと不定期ROMになってる。
国内事情がこれだとFreeBASICに関わりたくなくなるね。
2017/02/01(水) 22:38:37.10ID:ElUX31Hl
>>45
>固定ハンドル
これはスレが荒れる原因になるから極力避けたいと考えてるよ
特定の人物への執拗な攻撃、あるいは騙りなどが起きるため
>多段レス
これはスパムじゃなきゃ禁止事項じゃないよ
ただ、節度は必要かな
>質問スレ
現状、まあ必要はないよね…
>日本語ヘルプ
日本語版を配布しているサイトや翻訳しているサイトはあるけど
間違った情報源になる可能性もあるからテンプレからは外すべきかな
>固定ハンドル
これはスレが荒れる原因になるから極力避けたいと考えてるよ
特定の人物への執拗な攻撃、あるいは騙りなどが起きるため
>多段レス
これはスパムじゃなきゃ禁止事項じゃないよ
ただ、節度は必要かな
>質問スレ
現状、まあ必要はないよね…
>日本語ヘルプ
日本語版を配布しているサイトや翻訳しているサイトはあるけど
間違った情報源になる可能性もあるからテンプレからは外すべきかな
2017/02/01(水) 22:51:44.32ID:ElUX31Hl
>>53
完全に同意
正直な話、嫌な空気になる可能性があったから言っていいものかずっと迷っていた
でも正常化したい気持ちが彼のネガティブな態度で大きくなったのよね
自己顕示欲が強いというか、自己中というか、何故頑なになるのかが本当に理解できない
それでも、節度を守ってくれたら迎い入れたい気持ちもある
キャッチボールのボールは彼に投げた
今後は彼の出方次第、もうこれ以上は言うことはないかな
完全に同意
正直な話、嫌な空気になる可能性があったから言っていいものかずっと迷っていた
でも正常化したい気持ちが彼のネガティブな態度で大きくなったのよね
自己顕示欲が強いというか、自己中というか、何故頑なになるのかが本当に理解できない
それでも、節度を守ってくれたら迎い入れたい気持ちもある
キャッチボールのボールは彼に投げた
今後は彼の出方次第、もうこれ以上は言うことはないかな
56デフォルトの名無しさん
2017/02/02(木) 22:50:31.64ID:VzAOuLKu DialogAsMain.tpl を使って新規に作成
http://makoto-watanabe.main.jp/freebasic/ExtLibgsl.html
のように
#include "gsl/gsl_math.bi"
行を入れる。
http://makoto-watanabe.main.jp/freebasic/ExtLibTOC.html
では、
「注意:コンパイル時に、下記のエラーが表示される場合:」とあるが
http://www.freebasic.net/wiki/wikka.php?wakka=ExtLibTOC
では記載なし。
FB-win32-gsl-1.15.zipを導入していないと、有無を言わせず、終了してしまう。
障害メッセージ無し。
DialogAsMain.tpl を使わないで使用すような環境と、しようする環境では障害の内容が異なる模様。
http://makoto-watanabe.main.jp/freebasic/ExtLibgsl.html
のように
#include "gsl/gsl_math.bi"
行を入れる。
http://makoto-watanabe.main.jp/freebasic/ExtLibTOC.html
では、
「注意:コンパイル時に、下記のエラーが表示される場合:」とあるが
http://www.freebasic.net/wiki/wikka.php?wakka=ExtLibTOC
では記載なし。
FB-win32-gsl-1.15.zipを導入していないと、有無を言わせず、終了してしまう。
障害メッセージ無し。
DialogAsMain.tpl を使わないで使用すような環境と、しようする環境では障害の内容が異なる模様。
57デフォルトの名無しさん
2017/02/04(土) 10:03:53.29ID:tmAEdKqY >>56 つづき。 日本語マニュアル
http://cbrc3.cbrc.jp/~tominaga/translations/gsl/gsl-1.15/index.html
自前で訳そうと始めたが、DLできたのが他のバージョン。
検索したら、既に日本語訳が公開されていた。
>>38 つづき。
こっちの想定していた使い方と異なる使い方になってしまう。
アト゛レス(ポインター)の引き渡しがうまくいかなかった。
したがって、いまのところ虚数のみの取り扱いになるから、
>>56 の関数群が使えるようになれば、ポインターに関係することなく、何とかなりそう。
目次の和訳をやっていてコケた程度なので、使えるかどうかはわからぬ。
ライブの30-34系が複素関数、特殊関数、多倍精度整数演算なので、ライブラリーを切り替えられるかもしれない。
35系の移植が終わったが、これは、整列ルーチンで、変なことをしている一部ルーチンを除くとGSLライブに統一できると思われる。
>>53
オレのようにばかげたことをやっている人間がいると、
オレに比べて頭が良いんだ、という人が多数表れて、普及が進む。
だけど、高度なことばかりやっていると普及しない。
c言語から入る人にとっては、ご指摘の通りだろう。
商法の規定で、商人は良品を販売する義務を負う。
だから、金を出して買ったものは良品であり、第三者に販売するつもりの内容は商人から購入することで、良品であることを確保する。
無料の物はそうはいかない。損害賠償請求する価値がないと言える。
だから、営利活動にはあまり普及しないのが無料品。
自分たちで使える無料品を自分たちで作っていくという活動もある。
http://cbrc3.cbrc.jp/~tominaga/translations/gsl/gsl-1.15/index.html
自前で訳そうと始めたが、DLできたのが他のバージョン。
検索したら、既に日本語訳が公開されていた。
>>38 つづき。
こっちの想定していた使い方と異なる使い方になってしまう。
アト゛レス(ポインター)の引き渡しがうまくいかなかった。
したがって、いまのところ虚数のみの取り扱いになるから、
>>56 の関数群が使えるようになれば、ポインターに関係することなく、何とかなりそう。
目次の和訳をやっていてコケた程度なので、使えるかどうかはわからぬ。
ライブの30-34系が複素関数、特殊関数、多倍精度整数演算なので、ライブラリーを切り替えられるかもしれない。
35系の移植が終わったが、これは、整列ルーチンで、変なことをしている一部ルーチンを除くとGSLライブに統一できると思われる。
>>53
オレのようにばかげたことをやっている人間がいると、
オレに比べて頭が良いんだ、という人が多数表れて、普及が進む。
だけど、高度なことばかりやっていると普及しない。
c言語から入る人にとっては、ご指摘の通りだろう。
商法の規定で、商人は良品を販売する義務を負う。
だから、金を出して買ったものは良品であり、第三者に販売するつもりの内容は商人から購入することで、良品であることを確保する。
無料の物はそうはいかない。損害賠償請求する価値がないと言える。
だから、営利活動にはあまり普及しないのが無料品。
自分たちで使える無料品を自分たちで作っていくという活動もある。
2017/02/04(土) 13:36:06.91ID:y1MEdiWu
>>57
>オレのようにばかげたことをやっている人間がいると、
>オレに比べて頭が良いんだ、という人が多数表れて、普及が進む。
>だけど、高度なことばかりやっていると普及しない。
そういうのは、世間一般では屁理屈を捏ねるっていうのだよ
掲示板において自分勝手に振る舞うための自己中心的な勝手な解釈にしかなっていない
そんなのは公共スペースである掲示板には断じて必要ない、肥やしにもならないクソ未満だよ
>商品云々
先生ー、意味が分かりませーん
C/C++、.NET、Javaなど、現行の主な言語を扱うための環境づくりは無料で出来ますがー?
大昔にQBASICとかは販売されていたけど、何時の時代の話をしているのですかー?
というわけで、これまでの指摘に対して何も言及しないのは
この掲示板において君のスタンスは変わらないってことで良いのかな?
そうであれば、こっちも次のフェイズに移行するけど、きっちりと言及してくれないかな
>オレのようにばかげたことをやっている人間がいると、
>オレに比べて頭が良いんだ、という人が多数表れて、普及が進む。
>だけど、高度なことばかりやっていると普及しない。
そういうのは、世間一般では屁理屈を捏ねるっていうのだよ
掲示板において自分勝手に振る舞うための自己中心的な勝手な解釈にしかなっていない
そんなのは公共スペースである掲示板には断じて必要ない、肥やしにもならないクソ未満だよ
>商品云々
先生ー、意味が分かりませーん
C/C++、.NET、Javaなど、現行の主な言語を扱うための環境づくりは無料で出来ますがー?
大昔にQBASICとかは販売されていたけど、何時の時代の話をしているのですかー?
というわけで、これまでの指摘に対して何も言及しないのは
この掲示板において君のスタンスは変わらないってことで良いのかな?
そうであれば、こっちも次のフェイズに移行するけど、きっちりと言及してくれないかな
59デフォルトの名無しさん
2017/02/05(日) 07:03:10.62ID:j48wRVTG2017/02/05(日) 09:06:21.85ID:9D2c4niI
2017/02/05(日) 09:39:32.87ID:9D2c4niI
このスレは、スレを私物化する屁理屈大先生専用スレとなりました
------------------------------------------------------------------------
ここからは、屁理屈大先生の独演会をお楽しみ下さい
------------------------------------------------------------------------
ここからは、屁理屈大先生の独演会をお楽しみ下さい
62渡辺真
2017/02/07(火) 20:43:31.22ID:TSI9i7c8 一年ぶりに、FreeBASIC 日本語版マニュアルを更新しました。
2016年末までの英文版 Wiki の変更を反映したつもりです。
http://makoto-watanabe.main.jp/freebasic/
CHM 版は、下記でダウンロードできます。
http://makoto-watanabe.main.jp/freebasic/FB-manualJP20170207.zip
修正すべき点、加筆すべき点など、ご指摘、ご意見を、お願いいたします。
FreeBASIC で遊んでみて下さい。
2016年末までの英文版 Wiki の変更を反映したつもりです。
http://makoto-watanabe.main.jp/freebasic/
CHM 版は、下記でダウンロードできます。
http://makoto-watanabe.main.jp/freebasic/FB-manualJP20170207.zip
修正すべき点、加筆すべき点など、ご指摘、ご意見を、お願いいたします。
FreeBASIC で遊んでみて下さい。
63デフォルトの名無しさん
2017/02/07(火) 21:55:22.71ID:/LDN5Se3 >>61 大先生専用スレ
おほめいただきありがとうございます。
アルバイトで1年半ほど教員のまねごとをしていましたが、
当時の先生から大先生へと進歩しました。
思い起こせば、2次方程式の解を求めていた高校から始まる Basic の世界です。
この歳になって、当時のBasicの教科書には常に記載されていた MAT 命令を使うことができるようになりました。
MAT演算で何をしようか、思い当たるものがないんだよ。
細かいことは、gsl_matrix.bi参照。
欠損がないことを前提条件にすれば、結構いろいろできるのだが
おほめいただきありがとうございます。
アルバイトで1年半ほど教員のまねごとをしていましたが、
当時の先生から大先生へと進歩しました。
思い起こせば、2次方程式の解を求めていた高校から始まる Basic の世界です。
この歳になって、当時のBasicの教科書には常に記載されていた MAT 命令を使うことができるようになりました。
MAT演算で何をしようか、思い当たるものがないんだよ。
細かいことは、gsl_matrix.bi参照。
欠損がないことを前提条件にすれば、結構いろいろできるのだが
64デフォルトの名無しさん
2017/02/08(水) 01:11:06.62ID:Okfj9LEa MATならば、Fortran90/95では、標準で実装されていて、実際に、ベクトルや行列、連立一次方程式
を解く必要がある場合は、Fortran 90/95を使うほうがいいかもしれません。
まあ、趣味でやる分には、Basicでベクトルや行列、行列式のサブルーチンを
作るのも楽しみですが。
を解く必要がある場合は、Fortran 90/95を使うほうがいいかもしれません。
まあ、趣味でやる分には、Basicでベクトルや行列、行列式のサブルーチンを
作るのも楽しみですが。
65デフォルトの名無しさん
2017/02/08(水) 21:53:09.93ID:FL3Yx6+/ >>64 >ベクトルや行列、連立一次方程式を解く必要がある
Foortan 6 用の
> ベクトルや行列、行列式のサブルーチン
ライブラリー SSP01.FTからSSP3?.FT はどこかに入っています。
かなりの内容を V.B.に移植して使っていました。
今迷っているのは、何のデータを使って、ベクトルや行列、連立一次方程式を解くかといしうこと。
代数関係の公式などは、すべて、
データの欠落がない
データの繰り返しは同じ回数である
データの有効桁は無限長である
ことを前提に成り立っています。手持ちのデータでは、
欠落が多数(データどりを忘れた等)
繰り返しはなし
有効桁はせいぜい2桁。0.5単位で30位まで。
稀に50-60位まで増えるが異常値と解釈したほうが正しい。
なんてものしかない。最近は変な偏りが出てくるようになったし。
例 http://www1.river.go.jp/ 内
http://www1.river.go.jp/cgi-bin/SelectMapSite.exe
Foortan 6 用の
> ベクトルや行列、行列式のサブルーチン
ライブラリー SSP01.FTからSSP3?.FT はどこかに入っています。
かなりの内容を V.B.に移植して使っていました。
今迷っているのは、何のデータを使って、ベクトルや行列、連立一次方程式を解くかといしうこと。
代数関係の公式などは、すべて、
データの欠落がない
データの繰り返しは同じ回数である
データの有効桁は無限長である
ことを前提に成り立っています。手持ちのデータでは、
欠落が多数(データどりを忘れた等)
繰り返しはなし
有効桁はせいぜい2桁。0.5単位で30位まで。
稀に50-60位まで増えるが異常値と解釈したほうが正しい。
なんてものしかない。最近は変な偏りが出てくるようになったし。
例 http://www1.river.go.jp/ 内
http://www1.river.go.jp/cgi-bin/SelectMapSite.exe
66デフォルトの名無しさん
2017/02/08(水) 23:46:18.64ID:Okfj9LEa いわゆるill conditionの連立一次方程式などでは、解法によって解がちがったりして
結構勉強になるとおもいます。
結構勉強になるとおもいます。
67デフォルトの名無しさん
2017/02/10(金) 21:11:05.10ID:M676Jk5z >>66 悪条件な連立方程式は、
線形代数の教科書に載っていた有名な方程式
とか、デカコンを使っていたころに色々やりました。
だから、手持ちのライブには、その頃の名残として、
対角化、三重対角化、LP(線型計画法)
等のルーチンも存在します。
有効桁が無限でないと、発散して解けない問題とかありました。
http://www.math.ritsumei.ac.jp/yasutomi/jugyo/Numerical_Analysis/note5.pdf
線形代数の教科書に載っていた有名な方程式
とか、デカコンを使っていたころに色々やりました。
だから、手持ちのライブには、その頃の名残として、
対角化、三重対角化、LP(線型計画法)
等のルーチンも存在します。
有効桁が無限でないと、発散して解けない問題とかありました。
http://www.math.ritsumei.ac.jp/yasutomi/jugyo/Numerical_Analysis/note5.pdf
68渡辺真
2017/02/14(火) 10:36:46.17ID:oHqlAH5Q 新しい開発環境 FreeBasic IDE-poseidonFB の紹介です。
http://makoto-watanabe.main.jp/freebasic/tipsPoseidonFB.html
ファイルをユニコードで保存したい場合は、FbEdit より便利かもしれません。
http://makoto-watanabe.main.jp/freebasic/tipsPoseidonFB.html
ファイルをユニコードで保存したい場合は、FbEdit より便利かもしれません。
69デフォルトの名無しさん
2017/02/15(水) 21:32:33.07ID:IWmGzwYn >>67 つづき。
行列式のまともな計算方法がある。詳しいことは
http://w3e.kanazawa-it.ac.jp/math/category/gyouretu/senkeidaisu/henkan-tex.cgi?target=/math/category/gyouretu/senkeidaisu/index.html
内を探してくれ。
http://www.cis.twcu.ac.jp/~nagasima/02sek4.pdf
一つの列の定数倍を他の列に加えても行列式の値は変わらない
一つの列の各要素をc倍すると行列式の値はc倍になる
二つの列を入れ替えると行列式の値は−1倍になる
という性質をうまく使って、入れ替えの回数と、全体にかけた倍数を記録しておいて
上三角又は下三角行列に書き換える。
http://tau.doshisha.ac.jp/lectures/2005.linear-algebra-I/html.dir/node77.html
対角の積で行列式の値を求められる。
こんなことが、高校の線形代数の副読本に書いてあったものだから
手持ちのライブには、三角化ルーチンと、三角化することを使った行列式の解法ルーチンがある。
これ、評判悪いんだよ。
まともな方法を使わないで、n次まで拡張してしまったから。
行列式のまともな計算方法がある。詳しいことは
http://w3e.kanazawa-it.ac.jp/math/category/gyouretu/senkeidaisu/henkan-tex.cgi?target=/math/category/gyouretu/senkeidaisu/index.html
内を探してくれ。
http://www.cis.twcu.ac.jp/~nagasima/02sek4.pdf
一つの列の定数倍を他の列に加えても行列式の値は変わらない
一つの列の各要素をc倍すると行列式の値はc倍になる
二つの列を入れ替えると行列式の値は−1倍になる
という性質をうまく使って、入れ替えの回数と、全体にかけた倍数を記録しておいて
上三角又は下三角行列に書き換える。
http://tau.doshisha.ac.jp/lectures/2005.linear-algebra-I/html.dir/node77.html
対角の積で行列式の値を求められる。
こんなことが、高校の線形代数の副読本に書いてあったものだから
手持ちのライブには、三角化ルーチンと、三角化することを使った行列式の解法ルーチンがある。
これ、評判悪いんだよ。
まともな方法を使わないで、n次まで拡張してしまったから。
70デフォルトの名無しさん
2017/02/17(金) 00:32:22.98ID:vt14Y6ZI Public Function MacinNameGet(MnameString as string) as string
Const TakaSubRoutineNo as long = 14&
'*-* コンピュータ名を取得
'const MAX_COMPUTERNAME_LENGTH = 15
Dim strComputerNameBuffer As ZString * MAX_COMPUTERNAME_LENGTH = "123456789012345"
Dim lngComputerNameLength As Dword = MAX_COMPUTERNAME_LENGTH
'Dim lngComputerNameLengthPtr As LPDWORD
'Dim strComputerNameBufferPtr As LPSTR
Dim lngResult As Long
'lngComputerNameLengthPtr = @lngComputerNameLength
'strComputerNameBufferPtr = @strComputerNameBuffer
'TakaDammyReturnCode4 = TakaErrorPointSach(IniNameString, TakaSubRoutineNo)
' コンピュータ名の長さを設定
lngComputerNameLength = Len(strComputerNameBuffer)
' コンピュータ名を取得
'declare function GetComputerNameA(byval lpBuffer as LPSTR, byval nSize as LPDWORD) as WINBOOL
'declare function GetComputerNameW(byval lpBuffer as LPWSTR, byval nSize as LPDWORD) as WINBOOL
'lngResult = GetComputerName(strComputerNameBuffer, lngComputerNameLength) : 'ハング
lngResult = GetComputerName(@strComputerNameBuffer, @lngComputerNameLength)
lngResult = GetComputerName(@strComputerNameBuffer, @lngComputerNameLength)
'lngResult = GetComputerName(strComputerNameBufferPtr, lngComputerNameLengthPtr)
'lngResult = GetComputerName(strComputerNameBufferPtr, lngComputerNameLengthPtr)
MnameString = strComputerNameBuffer
'MnameString = Left$(strComputerNameBuffer, InStr(strComputerNameBuffer, vbNullChar) - 1)
MacinNameGet = MnameString
End Function
Const TakaSubRoutineNo as long = 14&
'*-* コンピュータ名を取得
'const MAX_COMPUTERNAME_LENGTH = 15
Dim strComputerNameBuffer As ZString * MAX_COMPUTERNAME_LENGTH = "123456789012345"
Dim lngComputerNameLength As Dword = MAX_COMPUTERNAME_LENGTH
'Dim lngComputerNameLengthPtr As LPDWORD
'Dim strComputerNameBufferPtr As LPSTR
Dim lngResult As Long
'lngComputerNameLengthPtr = @lngComputerNameLength
'strComputerNameBufferPtr = @strComputerNameBuffer
'TakaDammyReturnCode4 = TakaErrorPointSach(IniNameString, TakaSubRoutineNo)
' コンピュータ名の長さを設定
lngComputerNameLength = Len(strComputerNameBuffer)
' コンピュータ名を取得
'declare function GetComputerNameA(byval lpBuffer as LPSTR, byval nSize as LPDWORD) as WINBOOL
'declare function GetComputerNameW(byval lpBuffer as LPWSTR, byval nSize as LPDWORD) as WINBOOL
'lngResult = GetComputerName(strComputerNameBuffer, lngComputerNameLength) : 'ハング
lngResult = GetComputerName(@strComputerNameBuffer, @lngComputerNameLength)
lngResult = GetComputerName(@strComputerNameBuffer, @lngComputerNameLength)
'lngResult = GetComputerName(strComputerNameBufferPtr, lngComputerNameLengthPtr)
'lngResult = GetComputerName(strComputerNameBufferPtr, lngComputerNameLengthPtr)
MnameString = strComputerNameBuffer
'MnameString = Left$(strComputerNameBuffer, InStr(strComputerNameBuffer, vbNullChar) - 1)
MacinNameGet = MnameString
End Function
71デフォルトの名無しさん
2017/02/17(金) 00:34:56.14ID:vt14Y6ZI コンピュータ名を取得 で、なぜか
lngResult = GetComputerName(@strComputerNameBuffer, @lngComputerNameLength)
lngResult = GetComputerName(@strComputerNameBuffer, @lngComputerNameLength)
とか
'lngResult = GetComputerName(strComputerNameBufferPtr, lngComputerNameLengthPtr)
'lngResult = GetComputerName(strComputerNameBufferPtr, lngComputerNameLengthPtr)
のように、2回参照しないとコンピュータ名を取得できない。
なお、変数名については、当時のMS系サイトの内容をそのまま使っている。
lngResult = GetComputerName(@strComputerNameBuffer, @lngComputerNameLength)
lngResult = GetComputerName(@strComputerNameBuffer, @lngComputerNameLength)
とか
'lngResult = GetComputerName(strComputerNameBufferPtr, lngComputerNameLengthPtr)
'lngResult = GetComputerName(strComputerNameBufferPtr, lngComputerNameLengthPtr)
のように、2回参照しないとコンピュータ名を取得できない。
なお、変数名については、当時のMS系サイトの内容をそのまま使っている。
72デフォルトの名無しさん
2017/02/18(土) 07:01:46.64ID:/R2Xi7hr Why have I been blocked?
This website is using a security service to protect itself from online attacks.
The action you just performed triggered the security solution.
There are several actions that could trigger this block including submitting a certain word or phrase, a SQL command or malformed data.
What can I do to resolve this?
You can email the site owner to let them know you were blocked.
Please include what you were doing when this page came up and the Cloudflare Ray ID found at the bottom of this page.
なんだわ。
'キーの中の値を列挙します
function RegEnumValue で探して
'http://www.freebasic.net/ 内になし
'ドイツサイトより
'https://www.freebasic-portal.de/code-beispiele/system/serielle-schnittstellen-com-ports-unter-windows-ermitteln-248.html
があって、コピーしたわ。
UPしたら、引っかかってしまった。
This website is using a security service to protect itself from online attacks.
The action you just performed triggered the security solution.
There are several actions that could trigger this block including submitting a certain word or phrase, a SQL command or malformed data.
What can I do to resolve this?
You can email the site owner to let them know you were blocked.
Please include what you were doing when this page came up and the Cloudflare Ray ID found at the bottom of this page.
なんだわ。
'キーの中の値を列挙します
function RegEnumValue で探して
'http://www.freebasic.net/ 内になし
'ドイツサイトより
'https://www.freebasic-portal.de/code-beispiele/system/serielle-schnittstellen-com-ports-unter-windows-ermitteln-248.html
があって、コピーしたわ。
UPしたら、引っかかってしまった。
73デフォルトの名無しさん
2017/02/18(土) 07:06:22.38ID:/R2Xi7hr 分割すれば何とかなるかもしれぬから、20行ぐらいづつやってみる。
Public Function RegistryKeyList(RootKey as HKEY, SubKeyString As String, KeyNameString() As String, KeyValString() As String, Ierror As Long) As Wata
'キーの中の値を列挙します
'http://www.freebasic.net/ 内になし
'ドイツサイトより
'https://www.freebasic-portal.de/code-beispiele/system/serielle-schnittstellen-com-ports-unter-windows-ermitteln-248.html
Dim hKey As HANDLE
'Dim Ierror As Integer
'type LPCSTR as const zstring ptr
Dim SubKeyZString As ZString * 1024
Dim SubKeyZStringPtr As LPCSTR
Dim KeyValStringTSU As Long, KeyValStringSU As Long, Jerror As Long
SubKeyZStringPtr = @SubKeyZString
RegistryKeyList = 0
'SubKeyString = "HARDWARE\DEVICEMAP\SERIALCOMM": '保守用
'RootKey = HKEY_LOCAL_MACHINE: '保守用
SubKeyZString = SubKeyString
Public Function RegistryKeyList(RootKey as HKEY, SubKeyString As String, KeyNameString() As String, KeyValString() As String, Ierror As Long) As Wata
'キーの中の値を列挙します
'http://www.freebasic.net/ 内になし
'ドイツサイトより
'https://www.freebasic-portal.de/code-beispiele/system/serielle-schnittstellen-com-ports-unter-windows-ermitteln-248.html
Dim hKey As HANDLE
'Dim Ierror As Integer
'type LPCSTR as const zstring ptr
Dim SubKeyZString As ZString * 1024
Dim SubKeyZStringPtr As LPCSTR
Dim KeyValStringTSU As Long, KeyValStringSU As Long, Jerror As Long
SubKeyZStringPtr = @SubKeyZString
RegistryKeyList = 0
'SubKeyString = "HARDWARE\DEVICEMAP\SERIALCOMM": '保守用
'RootKey = HKEY_LOCAL_MACHINE: '保守用
SubKeyZString = SubKeyString
74デフォルトの名無しさん
2017/02/18(土) 07:08:25.80ID:/R2Xi7hr 'Schlussel offnen; Fehlermeldung ausgeben und Programm beenden falls nicht erfolgreich
'キーは開きます;エラー・メッセージは、うまくいかなければプログラムを終えます
'const KEY_QUERY_VALUE = &h0001 ''サブキーのデータを問い合わせることを許可します。
'declare function RegOpenKeyExA(byval hKey as HKEY, byval lpSubKey as LPCSTR, byval ulOptions as DWORD, byval samDesired as REGSAM, byval phkResult as PHKEY) as LONG
'declare function RegOpenKeyExW(byval hKey as HKEY, byval lpSubKey as LPCWSTR, byval ulOptions as DWORD, byval samDesired as REGSAM, byval phkResult as PHKEY) as LONG
Ierror = ERROR_SUCCESS
KeyValStringTSU = 10
KeyValStringSU = 0
Redim KeyValString(KeyValStringTSU) As String, KeyNameString(KeyValStringTSU) As String
'Ierror = RegOpenKeyEx(HKEY_LOCAL_MACHINE, @"HARDWARE\DEVICEMAP\SERIALCOMM", 0, KEY_QUERY_VALUE, @hKey)
Ierror = RegOpenKeyEx(RootKey, @SubKeyZString, 0, KEY_QUERY_VALUE, @hKey)
If (Ierror = ERROR_SUCCESS) Then
Dim comCnt As Integer 'レジストリエントリの数
Dim As String comStrString 'レジストリエントリ名の最長の長さ(文字型)
Dim As String comPortString 'レジストリエントリのデータの最長の長さ(文字型)
Dim As Integer comStrLen
Dim As Integer comPortLen
Dim As Integer comStrMaxLen 'レジストリエントリ名の最長の長さ
Dim As Integer comPortMaxLen 'レジストリエントリのデータの最長の長さ
'キーは開きます;エラー・メッセージは、うまくいかなければプログラムを終えます
'const KEY_QUERY_VALUE = &h0001 ''サブキーのデータを問い合わせることを許可します。
'declare function RegOpenKeyExA(byval hKey as HKEY, byval lpSubKey as LPCSTR, byval ulOptions as DWORD, byval samDesired as REGSAM, byval phkResult as PHKEY) as LONG
'declare function RegOpenKeyExW(byval hKey as HKEY, byval lpSubKey as LPCWSTR, byval ulOptions as DWORD, byval samDesired as REGSAM, byval phkResult as PHKEY) as LONG
Ierror = ERROR_SUCCESS
KeyValStringTSU = 10
KeyValStringSU = 0
Redim KeyValString(KeyValStringTSU) As String, KeyNameString(KeyValStringTSU) As String
'Ierror = RegOpenKeyEx(HKEY_LOCAL_MACHINE, @"HARDWARE\DEVICEMAP\SERIALCOMM", 0, KEY_QUERY_VALUE, @hKey)
Ierror = RegOpenKeyEx(RootKey, @SubKeyZString, 0, KEY_QUERY_VALUE, @hKey)
If (Ierror = ERROR_SUCCESS) Then
Dim comCnt As Integer 'レジストリエントリの数
Dim As String comStrString 'レジストリエントリ名の最長の長さ(文字型)
Dim As String comPortString 'レジストリエントリのデータの最長の長さ(文字型)
Dim As Integer comStrLen
Dim As Integer comPortLen
Dim As Integer comStrMaxLen 'レジストリエントリ名の最長の長さ
Dim As Integer comPortMaxLen 'レジストリエントリのデータの最長の長さ
75デフォルトの名無しさん
2017/02/18(土) 07:13:29.01ID:/R2Xi7hr '鍵となる問題の局面情報 Groseninformationen des Schlussels abfragen
'指定されたレジストリキーに関する情報を取得します。
'declare function RegQueryInfoKeyA((中略, C:\FreeBASIC\inc\win\winreg.bi 参照)byval lpftLastWriteTime as PFILETIME) as LONG
'declare function RegQueryInfoKeyW((中略), byval lpftLastWriteTime as PFILETIME) as LONG
RegQueryInfoKey(hKey, 0, 0, 0, 0, 0, 0, @comCnt, @comStrMaxLen, @comPortMaxLen, 0, 0)
comStrString = String(comStrMaxLen, 0)
comPortString = String(comPortMaxLen, 0)
KeyValStringTSU = comCnt + 1
KeyValStringSU = 0
Redim KeyValString(KeyValStringTSU) As String, KeyNameString(KeyValStringTSU) As String
Dim IQQ As Integer
'指定されたレジストリキーに関する情報を取得します。
'declare function RegQueryInfoKeyA((中略, C:\FreeBASIC\inc\win\winreg.bi 参照)byval lpftLastWriteTime as PFILETIME) as LONG
'declare function RegQueryInfoKeyW((中略), byval lpftLastWriteTime as PFILETIME) as LONG
RegQueryInfoKey(hKey, 0, 0, 0, 0, 0, 0, @comCnt, @comStrMaxLen, @comPortMaxLen, 0, 0)
comStrString = String(comStrMaxLen, 0)
comPortString = String(comPortMaxLen, 0)
KeyValStringTSU = comCnt + 1
KeyValStringSU = 0
Redim KeyValString(KeyValStringTSU) As String, KeyNameString(KeyValStringTSU) As String
Dim IQQ As Integer
76デフォルトの名無しさん
2017/02/18(土) 07:15:43.63ID:/R2Xi7hr For IQQ = 0 To comCnt - 1
comStrLen = comStrMaxLen + 1 'String文字数 → ZString文字数
comPortLen = comPortMaxLen / 2 'ANSI → UNICODE 文字数
'Schlusselname und -wert ermitteln und ausgeben; Fehlermeldung ausgeben wenn nicht erfolgreich
'オープンレジストリキーから値の列挙
'declare function RegEnumValueA(byval hKey as HKEY, byval dwIndex as DWORD, byval lpValueName as LPSTR, byval lpcchValueName as LPDWORD, byval lpReserved as LPDWORD, byval lpType as LPDWORD, byval lpData as LPBYTE, byval lpcbData as LPDWORD) as LONG
'declare function RegEnumValueW(byval hKey as HKEY, byval dwIndex as DWORD, byval lpValueName as LPWSTR, byval lpcchValueName as LPDWORD, byval lpReserved as LPDWORD, byval lpType as LPDWORD, byval lpData as LPBYTE, byval lpcbData as LPDWORD) as LONG
Jerror = RegEnumValue(hKey, IQQ, StrPtr(comStrString), @comStrLen, 0 , 0, StrPtr(comPortString), @comPortLen)
comStrLen = comStrMaxLen + 1 'String文字数 → ZString文字数
comPortLen = comPortMaxLen / 2 'ANSI → UNICODE 文字数
'Schlusselname und -wert ermitteln und ausgeben; Fehlermeldung ausgeben wenn nicht erfolgreich
'オープンレジストリキーから値の列挙
'declare function RegEnumValueA(byval hKey as HKEY, byval dwIndex as DWORD, byval lpValueName as LPSTR, byval lpcchValueName as LPDWORD, byval lpReserved as LPDWORD, byval lpType as LPDWORD, byval lpData as LPBYTE, byval lpcbData as LPDWORD) as LONG
'declare function RegEnumValueW(byval hKey as HKEY, byval dwIndex as DWORD, byval lpValueName as LPWSTR, byval lpcchValueName as LPDWORD, byval lpReserved as LPDWORD, byval lpType as LPDWORD, byval lpData as LPBYTE, byval lpcbData as LPDWORD) as LONG
Jerror = RegEnumValue(hKey, IQQ, StrPtr(comStrString), @comStrLen, 0 , 0, StrPtr(comPortString), @comPortLen)
77デフォルトの名無しさん
2017/02/18(土) 07:18:23.68ID:/R2Xi7hr If Jerror = ERROR_SUCCESS Then
KeyValStringSU = KeyValStringSU + 1
KeyValString(KeyValStringSU) = Left(comPortString, comPortLen)
KeyNameString(KeyValStringSU) = Left(comStrString, comStrLen)
ドイツ語のPrint文消してみた
KeyValStringSU = KeyValStringSU + 1
KeyValString(KeyValStringSU) = Left(comPortString, comPortLen)
KeyNameString(KeyValStringSU) = Left(comStrString, comStrLen)
ドイツ語のPrint文消してみた
78デフォルトの名無しさん
2017/02/18(土) 07:19:28.87ID:/R2Xi7hr Else
'レジストリキーを読み取りでエラーが発生しました
'Print "Fehler beim Auslesen des Registry Keys (Error"; Ierror; " bei Index"; IQQ; ")"
Ierror = Jerror
EndIf
Next
'Schlussel schliesen
RegCloseKey(hKey)
'Print comCnt; " COM-Ports vorhanden"
'TakaBuff = "COM-Ports :" + Str$(comCnt)
'SetDlgItemText(TakaHWND, IDC_STC1, @TakaBuff): '枠表示用バッファ
'レジストリキーを読み取りでエラーが発生しました
'Print "Fehler beim Auslesen des Registry Keys (Error"; Ierror; " bei Index"; IQQ; ")"
Ierror = Jerror
EndIf
Next
'Schlussel schliesen
RegCloseKey(hKey)
'Print comCnt; " COM-Ports vorhanden"
'TakaBuff = "COM-Ports :" + Str$(comCnt)
'SetDlgItemText(TakaHWND, IDC_STC1, @TakaBuff): '枠表示用バッファ
79デフォルトの名無しさん
2017/02/18(土) 07:22:12.51ID:/R2Xi7hr Else
'Print "Registry Keys Open (Error"; Ierror; ")"
'TakaBuff = "OpenError :" + Str$(Ierror)
'SetDlgItemText(TakaHWND, IDC_STC1, @TakaBuff): '枠表示用バッファ
EndIf
End Function
で終わり。使いたい人は適当に使って。
'Print "Registry Keys Open (Error"; Ierror; ")"
'TakaBuff = "OpenError :" + Str$(Ierror)
'SetDlgItemText(TakaHWND, IDC_STC1, @TakaBuff): '枠表示用バッファ
EndIf
End Function
で終わり。使いたい人は適当に使って。
80デフォルトの名無しさん
2017/02/18(土) 07:31:41.18ID:/R2Xi7hr このドイツ語サイトでは、'ANSI から UNICODE へ文字数の換算をしている。
FreeBasic では、区別ないで、declare 文を切り替えて使っているので、おかしくなるかもしれないし、
この参照元の著者が考慮しているのかもしれない。
それと、2バイト文字については考慮していないかもしれない。
>>77 で消したプリント文は全角で送ってみる
’Print Left(comPortString, comPortLen) + Chr(9) + Left(comStrString, comStrLen)
FreeBasic では、区別ないで、declare 文を切り替えて使っているので、おかしくなるかもしれないし、
この参照元の著者が考慮しているのかもしれない。
それと、2バイト文字については考慮していないかもしれない。
>>77 で消したプリント文は全角で送ってみる
’Print Left(comPortString, comPortLen) + Chr(9) + Left(comStrString, comStrLen)
81デフォルトの名無しさん
2017/02/18(土) 07:53:30.15ID:/R2Xi7hr このドイツ語サイトで゜気になるのは、>>76
RegEnumValue(hKey, IQQ, StrPtr(comStrString), @comStrLen,
Dim IQQ As Integer (For 文内に有った宣言だが、自作宣言チェックルーチンが解釈できない(Dim 文だけ先読みして使用する変数をルーチン別に一覧表を作る)ので移動)
RegEnumValueW(byval hKey as HKEY, byval dwIndex as DWORD,
変数型 DWORDを使うところをInteger で参照している。
Integerは、32Bit符号付整数又は64Bit符号付整数
http://makoto-watanabe.main.jp/freebasic/PgInteger.html#start
Dword は、32Bit符号無整数
http://makoto-watanabe.main.jp/freebasic/PgUlong.html#start
なので、引数の換算ルーチン次第でおかしなことが起こりうる。
RegEnumValue(hKey, IQQ, StrPtr(comStrString), @comStrLen,
Dim IQQ As Integer (For 文内に有った宣言だが、自作宣言チェックルーチンが解釈できない(Dim 文だけ先読みして使用する変数をルーチン別に一覧表を作る)ので移動)
RegEnumValueW(byval hKey as HKEY, byval dwIndex as DWORD,
変数型 DWORDを使うところをInteger で参照している。
Integerは、32Bit符号付整数又は64Bit符号付整数
http://makoto-watanabe.main.jp/freebasic/PgInteger.html#start
Dword は、32Bit符号無整数
http://makoto-watanabe.main.jp/freebasic/PgUlong.html#start
なので、引数の換算ルーチン次第でおかしなことが起こりうる。
82デフォルトの名無しさん
2017/02/19(日) 08:24:54.20ID:hFztBwNz 以前紹介のあったレジストリーの読み取れルーチン
'http://makoto-watanabe.main.jp/freebasic/tipsRegistry.html
'名称変更して ReadRegistry() → RegistryRead02()となっている。
2016.09にレジストリーエディタを使って、レジストリーのダンプリストを作成。
その中から、「Mozilla/」「User Agent」「UserAgent」を検索して見つかったレジストリーパスを読み取っている。
'[HKEY_CURRENT_USER\(何かの文字\)Software\Microsoft\Windows\CurrentVersion\Internet Settings]
と'サブキーを取得して、その後に同じディレクトリーを付け足してUserAgentの内容を読み取る場合が多い。
しかも、一部内容は消えている。何で消えたかなどは不明。
レジストリーのOpen/Closeは成功しているが
RegEnumKeyEx(hKey, IQQ, StrPtr(Moji), @Nagasa, 0, 0, 0, @File)
の実行で、エラー234が発生している。
'http://makoto-watanabe.main.jp/freebasic/tipsRegistry.html
'名称変更して ReadRegistry() → RegistryRead02()となっている。
2016.09にレジストリーエディタを使って、レジストリーのダンプリストを作成。
その中から、「Mozilla/」「User Agent」「UserAgent」を検索して見つかったレジストリーパスを読み取っている。
'[HKEY_CURRENT_USER\(何かの文字\)Software\Microsoft\Windows\CurrentVersion\Internet Settings]
と'サブキーを取得して、その後に同じディレクトリーを付け足してUserAgentの内容を読み取る場合が多い。
しかも、一部内容は消えている。何で消えたかなどは不明。
レジストリーのOpen/Closeは成功しているが
RegEnumKeyEx(hKey, IQQ, StrPtr(Moji), @Nagasa, 0, 0, 0, @File)
の実行で、エラー234が発生している。
83渡辺真
2017/02/19(日) 12:25:56.17ID:lCfIxkgx GSL(科学技術計算関数ライブラリ) のプログラム例を日本語化しました。
http://makoto-watanabe.main.jp/freebasic/tipsGSL.html
数学的な意味について、私は理解できないのですが、プログラムとしては、動きました。
http://makoto-watanabe.main.jp/freebasic/tipsGSL.html
数学的な意味について、私は理解できないのですが、プログラムとしては、動きました。
84デフォルトの名無しさん
2017/02/19(日) 16:57:53.28ID:hFztBwNz http://madia.world.coocan.jp/vb/API/RegEnumKeyEx.htm
を見本に、サブキー取得ルーチンを作っていた。
>>82の
egEnumKeyEx(hKey, IQQ, StrPtr(Moji), @Nagasa, 0, 0, 0, @File)の実行で、エラー234が発生している。
の原因がやっとわかった。
Nagasa = Len(Moji)
では、常に Nagasa = 0となる。
Const MojiLen As Long = 1024
Dim SubKeysNameBuffZString As ZString * MojiLen 'サブキー名が格納されるバッファ
と定義して
Nagasa = MojiLen
とする必要があった。
を見本に、サブキー取得ルーチンを作っていた。
>>82の
egEnumKeyEx(hKey, IQQ, StrPtr(Moji), @Nagasa, 0, 0, 0, @File)の実行で、エラー234が発生している。
の原因がやっとわかった。
Nagasa = Len(Moji)
では、常に Nagasa = 0となる。
Const MojiLen As Long = 1024
Dim SubKeysNameBuffZString As ZString * MojiLen 'サブキー名が格納されるバッファ
と定義して
Nagasa = MojiLen
とする必要があった。
85デフォルトの名無しさん
2017/02/19(日) 17:03:39.05ID:hFztBwNz 多分動くと思うけど、ライブ化のための整理前の状態でup
Public Function RegistrySubKeyList(RootKey as HKEY, TopSubKeyString As String, SubKeyNameString() As String, Ierror As Long) As Wata
'Subキーの名を列挙します
'http://madia.world.coocan.jp/vb/API/RegEnumKeyEx.htm
Dim hKey As HANDLE
Dim SubKeyZString As ZString * 1024
Dim SubKeyZStringPtr As LPCSTR
SubKeyZStringPtr = @SubKeyZString
Dim Jerror As Long
RegistrySubKeyList = 0
'RootKey = HKEY_LOCAL_MACHINE '(保守用)
'TopSubKeyString = "BCD00000000\Objects": '(保守用) 前後の「\」なし
'TopSubKeyString = "SYSTEM\CurrentControlSet\Services\xmlprov\Parameters\SchemaGroups\User"
'TopSubKeyString = "SYSTEM\CurrentControlSet"
'RootKey = HKEY_CURRENT_USER
'TopSubKeyString = "Software\Microsoft\Windows\CurrentVersion\Internet Settings"
If (TopSubKeyString = "") Then
'Ret = 234(バッファサイズの不足) 発生
Public Function RegistrySubKeyList(RootKey as HKEY, TopSubKeyString As String, SubKeyNameString() As String, Ierror As Long) As Wata
'Subキーの名を列挙します
'http://madia.world.coocan.jp/vb/API/RegEnumKeyEx.htm
Dim hKey As HANDLE
Dim SubKeyZString As ZString * 1024
Dim SubKeyZStringPtr As LPCSTR
SubKeyZStringPtr = @SubKeyZString
Dim Jerror As Long
RegistrySubKeyList = 0
'RootKey = HKEY_LOCAL_MACHINE '(保守用)
'TopSubKeyString = "BCD00000000\Objects": '(保守用) 前後の「\」なし
'TopSubKeyString = "SYSTEM\CurrentControlSet\Services\xmlprov\Parameters\SchemaGroups\User"
'TopSubKeyString = "SYSTEM\CurrentControlSet"
'RootKey = HKEY_CURRENT_USER
'TopSubKeyString = "Software\Microsoft\Windows\CurrentVersion\Internet Settings"
If (TopSubKeyString = "") Then
'Ret = 234(バッファサイズの不足) 発生
86デフォルトの名無しさん
2017/02/19(日) 17:04:26.69ID:hFztBwNz ElseIf (Left$(TopSubKeyString, 1) = "\") Then
'Ret = 161(指定されたパスは無効です) 発生
Else
'Fun RegQueryInfoKey() 用変数
'Dim As DWORD ClassBuffSize 'クラス文字列バッファのサイズ (MS指示: 0を指定する)
Dim as DWORD SubKeysSU 'サブキーの数
Dim as DWORD SubKeysMaxLen 'サブキー名の最長の長さ
Dim as DWORD ClassMaxLen 'クラス文字列の最長の長さ
Dim as DWORD KeyNameSU 'レジストリエントリの数
Dim as DWORD KeyNameMaxLen 'レジストリエントリ名の最長の長さ
Dim as DWORD KeyValMaxLen 'レジストリエントリのデータの最長の長さ
Dim as DWORD SecurityLen 'セキュリティ記述子の長さ
Dim LastWriteTime As FILETIME '最後の書き込み時刻
SubKeyZString = TopSubKeyString
Dim SubKeyNameStringTSU as Long, SubKeyNameStringSU As Long
SubKeyNameStringTSU = 100
SubKeyNameStringSU = 0
Redim SubKeyNameString(SubKeyNameStringTSU)
Const MojiLen As Long = 1024
Dim IQQ as DWORD 'サブキーのインデックス番号
Dim SubKeysNameBuffZString As ZString * MojiLen 'サブキー名が格納されるバッファ
Dim SubKeysNameBuffSize As DWORD = MojiLen 'サブキー名バッファのサイズ
'Dim ClassBuff As ZString * MojiLen 'クラス文字列バッファ MS指定 0
'Dim ClassBuffSize as DWORD 'クラス文字列バッファのサイズ MS指定 0
Dim FileWriteTime As FILETIME '最終更新時刻
'Ret = 161(指定されたパスは無効です) 発生
Else
'Fun RegQueryInfoKey() 用変数
'Dim As DWORD ClassBuffSize 'クラス文字列バッファのサイズ (MS指示: 0を指定する)
Dim as DWORD SubKeysSU 'サブキーの数
Dim as DWORD SubKeysMaxLen 'サブキー名の最長の長さ
Dim as DWORD ClassMaxLen 'クラス文字列の最長の長さ
Dim as DWORD KeyNameSU 'レジストリエントリの数
Dim as DWORD KeyNameMaxLen 'レジストリエントリ名の最長の長さ
Dim as DWORD KeyValMaxLen 'レジストリエントリのデータの最長の長さ
Dim as DWORD SecurityLen 'セキュリティ記述子の長さ
Dim LastWriteTime As FILETIME '最後の書き込み時刻
SubKeyZString = TopSubKeyString
Dim SubKeyNameStringTSU as Long, SubKeyNameStringSU As Long
SubKeyNameStringTSU = 100
SubKeyNameStringSU = 0
Redim SubKeyNameString(SubKeyNameStringTSU)
Const MojiLen As Long = 1024
Dim IQQ as DWORD 'サブキーのインデックス番号
Dim SubKeysNameBuffZString As ZString * MojiLen 'サブキー名が格納されるバッファ
Dim SubKeysNameBuffSize As DWORD = MojiLen 'サブキー名バッファのサイズ
'Dim ClassBuff As ZString * MojiLen 'クラス文字列バッファ MS指定 0
'Dim ClassBuffSize as DWORD 'クラス文字列バッファのサイズ MS指定 0
Dim FileWriteTime As FILETIME '最終更新時刻
87デフォルトの名無しさん
2017/02/19(日) 17:09:40.55ID:hFztBwNz また引っかかった。。続きはそのうち
88デフォルトの名無しさん
2017/02/19(日) 17:11:40.75ID:hFztBwNz ’以下の実行文が引っ掛かったみたい。全角にしてみた。
'バッファを確保する
SubKeysNameBuffZString = ””: ’String(MojiLen, Chr(0))
SubKeysNameBuffSize = MojiLen: ’Len(SubKeysNameBuffZString)
'キーをオープンしてハンドルを得る
'バッファを確保する
SubKeysNameBuffZString = ””: ’String(MojiLen, Chr(0))
SubKeysNameBuffSize = MojiLen: ’Len(SubKeysNameBuffZString)
'キーをオープンしてハンドルを得る
89デフォルトの名無しさん
2017/02/19(日) 17:13:36.21ID:hFztBwNz Ierror = RegOpenKeyEx(RootKey, @SubKeyZString, 0, KEY_ALL_ACCESS, @hKey)
If (Ierror = ERROR_SUCCESS) Then
'MessageBox(TakaHWND,"Hello Open 成功","Messagebox caption",MB_ICONINFORMATION)
Jerror = RegQueryInfoKey(hKey, 0, 0, 0, @SubKeysSU, @SubKeysMaxLen, @ClassMaxLen, @KeyNameSU, @KeyNameMaxLen, @KeyValMaxLen, @SecurityLen, @LastWriteTime)
If (Jerror = ERROR_SUCCESS) Then
'MessageBox(TakaHWND,"Hello Info 成功","Messagebox caption",MB_ICONINFORMATION)
'MessageBox(TakaHWND,"Hello SubKeysSU:"+Str$(SubKeysSU)+"SubKeys最大長さ"+Str$(SubKeysMaxLen)+")","Messagebox caption",MB_ICONINFORMATION)
'MessageBox(TakaHWND,"Hello 保存キー数"+str$(KeyNameSU) +"キー名最大長さ"+ Str$(KeyNameMaxLen) +"キー値最大長さ"+ Str$(KeyValMaxLen) +")","Messagebox caption",MB_ICONINFORMATION)
for IQQ = 0 To SubKeysSU -1
'サブキーを取得
SubKeysNameBuffSize = MojiLen
' 1 2 3 4 5 6 7 8
Jerror = RegEnumKeyEx(hKey, IQQ, @SubKeysNameBuffZString, @SubKeysNameBuffSize, 0, 0, 0, @FileWriteTime)
If (Jerror = ERROR_SUCCESS) Then
'MessageBox(TakaHWND,"Hello RegEnumKeyEx 成功("+SubKeysNameBuffZString+") Loop :"+Str$(IQQ),"Messagebox caption",MB_ICONINFORMATION)
If (Ierror = ERROR_SUCCESS) Then
'MessageBox(TakaHWND,"Hello Open 成功","Messagebox caption",MB_ICONINFORMATION)
Jerror = RegQueryInfoKey(hKey, 0, 0, 0, @SubKeysSU, @SubKeysMaxLen, @ClassMaxLen, @KeyNameSU, @KeyNameMaxLen, @KeyValMaxLen, @SecurityLen, @LastWriteTime)
If (Jerror = ERROR_SUCCESS) Then
'MessageBox(TakaHWND,"Hello Info 成功","Messagebox caption",MB_ICONINFORMATION)
'MessageBox(TakaHWND,"Hello SubKeysSU:"+Str$(SubKeysSU)+"SubKeys最大長さ"+Str$(SubKeysMaxLen)+")","Messagebox caption",MB_ICONINFORMATION)
'MessageBox(TakaHWND,"Hello 保存キー数"+str$(KeyNameSU) +"キー名最大長さ"+ Str$(KeyNameMaxLen) +"キー値最大長さ"+ Str$(KeyValMaxLen) +")","Messagebox caption",MB_ICONINFORMATION)
for IQQ = 0 To SubKeysSU -1
'サブキーを取得
SubKeysNameBuffSize = MojiLen
' 1 2 3 4 5 6 7 8
Jerror = RegEnumKeyEx(hKey, IQQ, @SubKeysNameBuffZString, @SubKeysNameBuffSize, 0, 0, 0, @FileWriteTime)
If (Jerror = ERROR_SUCCESS) Then
'MessageBox(TakaHWND,"Hello RegEnumKeyEx 成功("+SubKeysNameBuffZString+") Loop :"+Str$(IQQ),"Messagebox caption",MB_ICONINFORMATION)
90デフォルトの名無しさん
2017/02/19(日) 17:15:52.10ID:hFztBwNz >>89 本文が長すぎるというので、コメント行('declare function RegEnumValuなんたら)を消した。
以下の6行は、全角化している
IF (SubKeyNameStringSU >= SubKeyNameStringTSU) then
SubKeyNameStringTSU = SubKeyNameStringTSU + 20
redim preserve SubKeyNameString(SubKeyNameStringTSU)
End If
SubKeyNameStringSU = SubKeyNameStringSU + 1
SubKeyNameString(SubKeyNameStringSU) = SubKeysNameBuffZString
以下の6行は、全角化している
IF (SubKeyNameStringSU >= SubKeyNameStringTSU) then
SubKeyNameStringTSU = SubKeyNameStringTSU + 20
redim preserve SubKeyNameString(SubKeyNameStringTSU)
End If
SubKeyNameStringSU = SubKeyNameStringSU + 1
SubKeyNameString(SubKeyNameStringSU) = SubKeysNameBuffZString
91デフォルトの名無しさん
2017/02/19(日) 17:16:40.54ID:hFztBwNz Else
'Jerror = 234(バッファサイズの不足) 発生
'MessageBox(TakaHWND,"Hello RegEnumKeyEx Err:"+Str$(Jerror )+"("+SubKeysNameBuffZString+")","Messagebox caption",MB_ICONINFORMATION)
'MessageBox(TakaHWND,"Hello RegEnumKeyEx Err:"+Str$(Jerror )+"("+Str$(Len(SubKeysNameBuffZString))+"," +Str$(SubKeysNameBuffSize)+")","Messagebox caption",MB_ICONINFORMATION)
End If
'初期化する
SubKeysNameBuffZString = ""
SubKeysNameBuffSize = MojiLen: 'Len(SubKeysNameBuffZString)
Next IQQ
Else
'MessageBox(TakaHWND,"Hello RegQueryInfoKey Error."+Str$(Jerror),"Messagebox caption",MB_ICONINFORMATION)
End If
'ハンドルを解放
RegCloseKey(hKey)
Else
'MessageBox(TakaHWND,"Hello RegOpenKeyEx Error."+Str$(Ierror),"Messagebox caption",MB_ICONINFORMATION)
End If
End If
End Function
'Jerror = 234(バッファサイズの不足) 発生
'MessageBox(TakaHWND,"Hello RegEnumKeyEx Err:"+Str$(Jerror )+"("+SubKeysNameBuffZString+")","Messagebox caption",MB_ICONINFORMATION)
'MessageBox(TakaHWND,"Hello RegEnumKeyEx Err:"+Str$(Jerror )+"("+Str$(Len(SubKeysNameBuffZString))+"," +Str$(SubKeysNameBuffSize)+")","Messagebox caption",MB_ICONINFORMATION)
End If
'初期化する
SubKeysNameBuffZString = ""
SubKeysNameBuffSize = MojiLen: 'Len(SubKeysNameBuffZString)
Next IQQ
Else
'MessageBox(TakaHWND,"Hello RegQueryInfoKey Error."+Str$(Jerror),"Messagebox caption",MB_ICONINFORMATION)
End If
'ハンドルを解放
RegCloseKey(hKey)
Else
'MessageBox(TakaHWND,"Hello RegOpenKeyEx Error."+Str$(Ierror),"Messagebox caption",MB_ICONINFORMATION)
End If
End If
End Function
92デフォルトの名無しさん
2017/02/19(日) 17:28:43.40ID:hFztBwNz こんなところ。使いたい人は適当に使って。
内容の読み書き、サブキー名とキー名の取得、
の4ルーチンがあれば、中身を読み取って何とかできると思われる。
>>82のUserAgentのように
途中がちょっと違って、前後が同じパスのレジストリーのデータを読む場合のように、
サブキーを取得して、(値が保存されていることを前提に)適当に読み取るというルーチンを作成できれば
ユーザー名全員の取得が可能となる。
Htmlファイル作成ルーチンの、<META>タグに著者名を指定する場合がある
このときに、著者名を誰で登録するか、の選択をするときぐらいしか使わない。
内容の読み書き、サブキー名とキー名の取得、
の4ルーチンがあれば、中身を読み取って何とかできると思われる。
>>82のUserAgentのように
途中がちょっと違って、前後が同じパスのレジストリーのデータを読む場合のように、
サブキーを取得して、(値が保存されていることを前提に)適当に読み取るというルーチンを作成できれば
ユーザー名全員の取得が可能となる。
Htmlファイル作成ルーチンの、<META>タグに著者名を指定する場合がある
このときに、著者名を誰で登録するか、の選択をするときぐらいしか使わない。
93デフォルトの名無しさん
2017/02/21(火) 20:41:01.96ID:qjaAIYLo 'C:\tool\FreeBASIC\inc\win\secext.bi 内指定値
'declare function GetUserNameExA(byval NameFormat as EXTENDED_NAME_FORMAT, byval lpNameBuffer as LPSTR, byval nSize as PULONG) as WINBOOLEAN
'declare function GetUserNameExW(byval NameFormat as EXTENDED_NAME_FORMAT, byval lpNameBuffer as LPWSTR, byval nSize as PULONG) as WINBOOLEAN
'type EXTENDED_NAME_FORMAT as long
'enum
'(中略)
'end enum
'type PEXTENDED_NAME_FORMAT as EXTENDED_NAME_FORMAT ptr
に関係して、
'#Include Once "win/secext.bi"
指定以外の#Include文が必要らしく、コンパイラーが通らない。型宣言が
'#Include Once "win/bcrypt.bi"
'#Include Once "win/ntdef.bi"
に同一な宣言があるけど、どっちを使ってよいものかわからない。どちらか入れてもコンパイルエラーになる。
したがって、GetUserNameEx()が使えない。
部分切り出しという手法もある。
'declare function GetUserNameExA(byval NameFormat as EXTENDED_NAME_FORMAT, byval lpNameBuffer as LPSTR, byval nSize as PULONG) as WINBOOLEAN
'declare function GetUserNameExW(byval NameFormat as EXTENDED_NAME_FORMAT, byval lpNameBuffer as LPWSTR, byval nSize as PULONG) as WINBOOLEAN
'type EXTENDED_NAME_FORMAT as long
'enum
'(中略)
'end enum
'type PEXTENDED_NAME_FORMAT as EXTENDED_NAME_FORMAT ptr
に関係して、
'#Include Once "win/secext.bi"
指定以外の#Include文が必要らしく、コンパイラーが通らない。型宣言が
'#Include Once "win/bcrypt.bi"
'#Include Once "win/ntdef.bi"
に同一な宣言があるけど、どっちを使ってよいものかわからない。どちらか入れてもコンパイルエラーになる。
したがって、GetUserNameEx()が使えない。
部分切り出しという手法もある。
94デフォルトの名無しさん
2017/02/22(水) 20:16:58.92ID:XWdhAgf/95デフォルトの名無しさん
2017/02/22(水) 20:22:40.74ID:XWdhAgf/ declare function SHGetKnownFolderPath(byval rfid as const KNOWNFOLDERID const ptr, byval dwFlags as DWORD, byval hToken as HANDLE, byval ppszPath as PWSTR ptr) as HRESULT
の解読中。
の解読中。
96デフォルトの名無しさん
2017/02/22(水) 21:44:37.32ID:XWdhAgf/97デフォルトの名無しさん
2017/02/24(金) 20:17:50.91ID:FAsTtcI2 >>96 つづき
何か関係ありそうな内容を探していたら
http://qiita.com/hkuno/items/7b8daa37d9b68e390d7e
という一覧表を見つけた。
バージョンの取得は
http://www.4d.com/jp/blog/get-windows-version.html
参照。
GetFileVersionInfo システムコールは現時点で理解できない。
MSReturnCode = GetVersionExA(@udtOSVersionInfo)
関係情報がMSサイトから消えたので、こちらからの取得はあきらめるしかない模様。
使っていたのが、Win95 → Win2000 に伴うレジストリーの構造の変化だけだったので
NetからWin8を持たないで、Win 10 だけ考えるなら、なくても何とかなりそう。
レジストリエディターで、値をダンプして、検索をかけようとした。
LineInput で読み取ったらば、半角英数として解釈できなかった。
つまり、Shift-JIS コードではなく、Uniコードだった。
何か関係ありそうな内容を探していたら
http://qiita.com/hkuno/items/7b8daa37d9b68e390d7e
という一覧表を見つけた。
バージョンの取得は
http://www.4d.com/jp/blog/get-windows-version.html
参照。
GetFileVersionInfo システムコールは現時点で理解できない。
MSReturnCode = GetVersionExA(@udtOSVersionInfo)
関係情報がMSサイトから消えたので、こちらからの取得はあきらめるしかない模様。
使っていたのが、Win95 → Win2000 に伴うレジストリーの構造の変化だけだったので
NetからWin8を持たないで、Win 10 だけ考えるなら、なくても何とかなりそう。
レジストリエディターで、値をダンプして、検索をかけようとした。
LineInput で読み取ったらば、半角英数として解釈できなかった。
つまり、Shift-JIS コードではなく、Uniコードだった。
98デフォルトの名無しさん
2017/02/25(土) 21:16:18.91ID:r1nrT1Dg >>97 つづき。レジストリーのダンプリスト関係。
Const InFile1String = "D:\bas\Projects\Kako02\0RegData\1111.reg.txt"
の調子で入力ファイル5つを昨年(2016.09)に作成した。
レジストリー操作がよくわからなくて放置していたが、Read, Write, SubKey検索, Key検索の4ルーチンが入手できたことから、放置していた、データの収集関係を始めることとした。
が、データが膨大で260MB位ある。初期には
エディタで読み取って、検索
検索ソフトで検索
なんてやっていたが、内容によっては膨大な数の入力定数の設定があり、結構間違いが多数発生した。
というわけで、自動化。キー名、キー値、サブキー名で検索して、一覧表を作成、一覧表から読み取りルーチンを作成するようにした。
Dim As String RegPathString, KeyNameString, KeyValString
'Input File No. 0
(略)
'Input File No. 3 D:\bas\Projects\Kako02\0RegData\3333.reg.txt
(略)
RegPathString = "SOFTWARE\Microsoft\Windows Search\Gathering Manager"
KeyNameString = "UserAgent"
KeyValString = RegistryRead02String(HKEY_LOCAL_MACHINE, RegPathString, KeyNameString)
'KeyValString = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT; MS Search 4.0 Robot)"
'Input File No. 4 D:\bas\Projects\Kako02\0RegData\4444.reg.txt
(略)
てな調子で読み取りルーチンが作成されるソフトを作成した。
Const InFile1String = "D:\bas\Projects\Kako02\0RegData\1111.reg.txt"
の調子で入力ファイル5つを昨年(2016.09)に作成した。
レジストリー操作がよくわからなくて放置していたが、Read, Write, SubKey検索, Key検索の4ルーチンが入手できたことから、放置していた、データの収集関係を始めることとした。
が、データが膨大で260MB位ある。初期には
エディタで読み取って、検索
検索ソフトで検索
なんてやっていたが、内容によっては膨大な数の入力定数の設定があり、結構間違いが多数発生した。
というわけで、自動化。キー名、キー値、サブキー名で検索して、一覧表を作成、一覧表から読み取りルーチンを作成するようにした。
Dim As String RegPathString, KeyNameString, KeyValString
'Input File No. 0
(略)
'Input File No. 3 D:\bas\Projects\Kako02\0RegData\3333.reg.txt
(略)
RegPathString = "SOFTWARE\Microsoft\Windows Search\Gathering Manager"
KeyNameString = "UserAgent"
KeyValString = RegistryRead02String(HKEY_LOCAL_MACHINE, RegPathString, KeyNameString)
'KeyValString = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT; MS Search 4.0 Robot)"
'Input File No. 4 D:\bas\Projects\Kako02\0RegData\4444.reg.txt
(略)
てな調子で読み取りルーチンが作成されるソフトを作成した。
99デフォルトの名無しさん
2017/02/26(日) 13:08:20.87ID:K90trdCC >>98
つづき。こんなのも作った。
Dim As String TopSubKeyString, BottomSubKeyString, SubKeyNameString()
Dim Ierror As Long
'Input File No. 3 D:\bas\Projects\Kako02\0RegData\3333.reg.txt
' RegPathString = "SOFTWARE\Microsoft\Advanced INF Setup\IE40.UserAgent\RegBackup"
TopSubKeyString = "SOFTWARE\Microsoft\Advanced INF Setup"
BottomSubKeyString = "\RegBackup"
TakaDammyReturnCode = ReadSubKeyList0(HKEY_LOCAL_MACHINE, TopSubKeyString, SubKeyNameString(), Ierror)
' SubKeyNameString(3) = ["IE CompList", "IE.HKCUZoneInfo", "IE40.UserAgent"]
'**********************\(ちょっと違う)\*******************
というサブキー内にちょっと内容が異なる値が保存されている場合を想定。
UserNameの取得で、導入したユーザー名をかき集めるための物。
(ちょっと違う)ところをSubキーとして検索(Function ReadSubKeyList0(なんたら))して、フルスペルを取得。
個別に各キーの値を取得するための、Subキー一覧を作成するための物
つづき。こんなのも作った。
Dim As String TopSubKeyString, BottomSubKeyString, SubKeyNameString()
Dim Ierror As Long
'Input File No. 3 D:\bas\Projects\Kako02\0RegData\3333.reg.txt
' RegPathString = "SOFTWARE\Microsoft\Advanced INF Setup\IE40.UserAgent\RegBackup"
TopSubKeyString = "SOFTWARE\Microsoft\Advanced INF Setup"
BottomSubKeyString = "\RegBackup"
TakaDammyReturnCode = ReadSubKeyList0(HKEY_LOCAL_MACHINE, TopSubKeyString, SubKeyNameString(), Ierror)
' SubKeyNameString(3) = ["IE CompList", "IE.HKCUZoneInfo", "IE40.UserAgent"]
'**********************\(ちょっと違う)\*******************
というサブキー内にちょっと内容が異なる値が保存されている場合を想定。
UserNameの取得で、導入したユーザー名をかき集めるための物。
(ちょっと違う)ところをSubキーとして検索(Function ReadSubKeyList0(なんたら))して、フルスペルを取得。
個別に各キーの値を取得するための、Subキー一覧を作成するための物
100デフォルトの名無しさん
2017/02/26(日) 13:18:03.93ID:K90trdCC 作成したソフトの中身を眺めた範囲では、
Open InFileString For Input Encoding "utf-16" As #InFileNo
While - Wend で回して、先頭1文字又は先頭3文字で作業内容を決定
一番最初の[]内でルートキーを取得し
その後は[でサブキー名、"や@でキー名、=がない場合にはキー値の追記行として処理
だから、そんな難しいルーチンではないと思う。
サブキー、キー名、キー値の3つがそろったところ、つまり、サブキーの先頭行か、キー名の先頭行で検索する
Open InFileString For Input Encoding "utf-16" As #InFileNo
While - Wend で回して、先頭1文字又は先頭3文字で作業内容を決定
一番最初の[]内でルートキーを取得し
その後は[でサブキー名、"や@でキー名、=がない場合にはキー値の追記行として処理
だから、そんな難しいルーチンではないと思う。
サブキー、キー名、キー値の3つがそろったところ、つまり、サブキーの先頭行か、キー名の先頭行で検索する
101デフォルトの名無しさん
2017/02/26(日) 13:25:38.25ID:K90trdCC >>98の
'KeyValString = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT; MS Search 4.0 Robot)"
>>99の
' SubKeyNameString(3) = ["IE CompList", "IE.HKCUZoneInfo", "IE40.UserAgent"]
は、キー値取得のための各値を定義して、実際に取得したもの。
2016.09に作成したダンプリストのために、現在の内容とは異なっている場合があるから、取得した。
もっとも、Subキーのリストが10000超えた場合もあったのはあせった。
10分ぐらい終了しなかったので、ハングしたのかな、と強制停止の処理を始めたら、終了した。
MSやその他法人が保存しているレジストリーの内容から、ユーザーとしてソフトを動かすために必要な情報を取得できるけれども、
何を使用するか、何を使用しないか、の取捨選択が迫られる。
分量の多さゆえに、このような検索ソフトを作成した。
'KeyValString = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT; MS Search 4.0 Robot)"
>>99の
' SubKeyNameString(3) = ["IE CompList", "IE.HKCUZoneInfo", "IE40.UserAgent"]
は、キー値取得のための各値を定義して、実際に取得したもの。
2016.09に作成したダンプリストのために、現在の内容とは異なっている場合があるから、取得した。
もっとも、Subキーのリストが10000超えた場合もあったのはあせった。
10分ぐらい終了しなかったので、ハングしたのかな、と強制停止の処理を始めたら、終了した。
MSやその他法人が保存しているレジストリーの内容から、ユーザーとしてソフトを動かすために必要な情報を取得できるけれども、
何を使用するか、何を使用しないか、の取捨選択が迫られる。
分量の多さゆえに、このような検索ソフトを作成した。
102デフォルトの名無しさん
2017/02/27(月) 21:49:00.13ID:GlE4NLGI Taka06.BAs 内処理として、Disp08.fbp 等のExepath + "\*.fbp"ファイルを読み取って
[File] セクション内 1001=..\Kako02\Mod\Taka01.bas 等の内容を読み取って、
TakaHWND =hWin
TakaDammyReturnCode7 = Taka06_CommonStringSet(TakaHWND)
等の、各モジュールに hWin の内容を通知するルーチンを書き並べたファイル(Taka06HWND.BI)の作成に成功した。
今まで、いちいちどのモジュールが関係しているのかを調べて手作業で行っていたが、
#Include "Taka06HWND.BI"
1文に置き換えることに成功した。
[File] セクション内 1001=..\Kako02\Mod\Taka01.bas 等の内容を読み取って、
TakaHWND =hWin
TakaDammyReturnCode7 = Taka06_CommonStringSet(TakaHWND)
等の、各モジュールに hWin の内容を通知するルーチンを書き並べたファイル(Taka06HWND.BI)の作成に成功した。
今まで、いちいちどのモジュールが関係しているのかを調べて手作業で行っていたが、
#Include "Taka06HWND.BI"
1文に置き換えることに成功した。
103デフォルトの名無しさん
2017/03/04(土) 19:20:41.20ID:MZsCuszb 'declare function LCMapStringA (byval Locale as LCID, byval dwMapFlags as DWORD, byval lpSrcStr as LPCSTR, byval cchSrc as long, byval lpDestStr as LPSTR, byval cchDest as long) as long
関係。宣言は
Const MaxStringLen = 1025
Dim dwMapFlags as DWORD
Dim AZstring As ZString * MaxStringLen
Dim BZstring As ZString * MaxStringLen
Dim cchSrc as Long, cchDest as Long
Dim As Long IAA, IBB, SetFigLong()
Dim As BOOLEAN ABool, BBool, DBool
実行部は
AZstring = iAstring
cchSrc = Len(AZstring)
cchDest = MaxStringLen
IAA = LCMapString(LOCALE_USER_DEFAULT, dwMapFlags, @AZstring, cchSrc, @BZstring, cchDest)
TakaComvString = BZstring
http://msdn.microsoft.com/ja-jp/library/cc448052.aspx の日本語文が難解だから気を付けてほしい。
関係。宣言は
Const MaxStringLen = 1025
Dim dwMapFlags as DWORD
Dim AZstring As ZString * MaxStringLen
Dim BZstring As ZString * MaxStringLen
Dim cchSrc as Long, cchDest as Long
Dim As Long IAA, IBB, SetFigLong()
Dim As BOOLEAN ABool, BBool, DBool
実行部は
AZstring = iAstring
cchSrc = Len(AZstring)
cchDest = MaxStringLen
IAA = LCMapString(LOCALE_USER_DEFAULT, dwMapFlags, @AZstring, cchSrc, @BZstring, cchDest)
TakaComvString = BZstring
http://msdn.microsoft.com/ja-jp/library/cc448052.aspx の日本語文が難解だから気を付けてほしい。
104デフォルトの名無しさん
2017/03/04(土) 19:23:36.71ID:MZsCuszb declare function CompareString alias "CompareStringA"(byval Locale as LCID, byval dwCmpFlags as DWORD, byval lpString1 as PCNZCH, byval cchCount1 as long, byval lpString2 as PCNZCH, byval cchCount2 as long) as long
関係。宣言は、
Const MaxStringLen = 1025
Const MaxStringLenN1 = MaxStringLen - 1
Dim dwCmpFlags as DWORD
Dim AZstring As ZString * MaxStringLen
Dim BZstring As ZString * MaxStringLen
Dim As Long IAA, IBB
実行部は
IAA = CompareString(LOCALE_USER_DEFAULT, dwCmpFlags, @AZstring, -1,@BZstring, -1)
参考は
http://www.s34.co.jp/cpptechdoc/article/comparestring/
以上2つともコンパイラーむが通っただけ。
中身のチェックなどはしていない。
関係。宣言は、
Const MaxStringLen = 1025
Const MaxStringLenN1 = MaxStringLen - 1
Dim dwCmpFlags as DWORD
Dim AZstring As ZString * MaxStringLen
Dim BZstring As ZString * MaxStringLen
Dim As Long IAA, IBB
実行部は
IAA = CompareString(LOCALE_USER_DEFAULT, dwCmpFlags, @AZstring, -1,@BZstring, -1)
参考は
http://www.s34.co.jp/cpptechdoc/article/comparestring/
以上2つともコンパイラーむが通っただけ。
中身のチェックなどはしていない。
105デフォルトの名無しさん
2017/03/05(日) 10:25:39.08ID:rfEgkW/x DBSC、QBでは、INT21 - 53(非公開、MS-DOSの東アジア向けバージョンにのみ搭載)だったかな、で取得できる ASCZZ文字列の取得方法がわかった。
宣言は
Dim CodePageInfo1 as _cpinfo
Dim CodePageInfo2 as _cpinfoexA
Dim dwFlags as DWORD
Dim Astring As String, Bstring As String
Dim As Long IAA
実行部は
MSReturnCode = GetCPInfo(CP_ACP, @CodePageInfo1)
MSReturnCode = GetCPInfo(CP_MACCP, @CodePageInfo1)
MSReturnCode=GetCPInfo(CP_OEMCP,@CodePageInfo1)
MSReturnCode = GetCPInfoEx(CP_ACP, dwFlags, @CodePageInfo2)
MSReturnCode=GetCPInfoEx(CP_MACCP,dwFlags,@CodePageInfo2)
MSReturnCode = GetCPInfoEx(CP_OEMCP, dwFlags, @CodePageInfo2)
参考は
'https://msdn.microsoft.com/ja-jp/library/cc422078.aspx
'declare function GetCPInfo(byval CodePage as UINT, byval lpCPInfo as LPCPINFO) as WINBOOL
'https://msdn.microsoft.com/ja-jp/library/cc422080.aspx
'declare function GetCPInfoExA(byval CodePage as UINT, byval dwFlags as DWORD, byval lpCPInfoEx as LPCPINFOEXA) as WINBOOL
宣言は
Dim CodePageInfo1 as _cpinfo
Dim CodePageInfo2 as _cpinfoexA
Dim dwFlags as DWORD
Dim Astring As String, Bstring As String
Dim As Long IAA
実行部は
MSReturnCode = GetCPInfo(CP_ACP, @CodePageInfo1)
MSReturnCode = GetCPInfo(CP_MACCP, @CodePageInfo1)
MSReturnCode=GetCPInfo(CP_OEMCP,@CodePageInfo1)
MSReturnCode = GetCPInfoEx(CP_ACP, dwFlags, @CodePageInfo2)
MSReturnCode=GetCPInfoEx(CP_MACCP,dwFlags,@CodePageInfo2)
MSReturnCode = GetCPInfoEx(CP_OEMCP, dwFlags, @CodePageInfo2)
参考は
'https://msdn.microsoft.com/ja-jp/library/cc422078.aspx
'declare function GetCPInfo(byval CodePage as UINT, byval lpCPInfo as LPCPINFO) as WINBOOL
'https://msdn.microsoft.com/ja-jp/library/cc422080.aspx
'declare function GetCPInfoExA(byval CodePage as UINT, byval dwFlags as DWORD, byval lpCPInfoEx as LPCPINFOEXA) as WINBOOL
106デフォルトの名無しさん
2017/03/05(日) 10:36:36.80ID:rfEgkW/x .LeadByte()に、ASCZZ文字のASCダンプでDBCSが入っている。
dwFlags は、MSの指示で0を指定する。
CP_ACP等は、MSを参照。
その他関係システムコールは
https://msdn.microsoft.com/ja-jp/library/windows/desktop/dd317794%28v=vs.85%29.aspx
の後ろの方、「Your applications use DBCS Windows」以下参照。
dwFlags は、MSの指示で0を指定する。
CP_ACP等は、MSを参照。
その他関係システムコールは
https://msdn.microsoft.com/ja-jp/library/windows/desktop/dd317794%28v=vs.85%29.aspx
の後ろの方、「Your applications use DBCS Windows」以下参照。
107デフォルトの名無しさん
2017/03/05(日) 10:44:56.24ID:rfEgkW/x https://ja.wikipedia.org/wiki/MS-DOS
に「アジアバージョン」とかかれているのがDBCSをさぽとーしたMS-DOS。
英語版を無理に使うと日本語ファイる名がディレクトリーになったりして、散々な目にあった方々がいた。
に「アジアバージョン」とかかれているのがDBCSをさぽとーしたMS-DOS。
英語版を無理に使うと日本語ファイる名がディレクトリーになったりして、散々な目にあった方々がいた。
108デフォルトの名無しさん
2017/03/08(水) 20:31:55.47ID:Wan8ns7S ついに、サブルーチンの移植総数が1000個を超えた。
大域サブルーチン 901個、局所サブルーチン 99個、作成中 3個。
Overload も全体で114個、27種類のルーチン名でまとめた。
引数の型違いのルーチンが増えれば、より多くなるだろう。
http://makoto-watanabe.main.jp/freebasic/CatPgString.html
で、KLEN、KMIDの2つしかないので、いろいろ作成中。
Dim CodePage as UINT
Dim As Long IAA, IBB, InALong
Dim TestChar as UBYTE
'https://msdn.microsoft.com/ja-jp/library/cc448045.aspx
'declare function IsDBCSLeadByte(byval TestChar as UBYTE) as WINBOOL
'https://msdn.microsoft.com/ja-jp/library/cc448047.aspx
'declare function IsDBCSLeadByteEx(byval CodePage as UINT, byval TestChar as UBYTE) as WINBOOL
For IAA = 1 To InALong
TestChar = asc(Mid$(InAstring, IAA, 1))
IBB = IsDBCSLeadByte(TestChar)
If (IBB = 0) Then
Else
EndIf
Next IAA
又は
IBB = IsDBCSLeadByteEx(CodePage, TestChar)
で振り回して、先頭から処理していけば比較的簡単に作れるだろう。
大域サブルーチン 901個、局所サブルーチン 99個、作成中 3個。
Overload も全体で114個、27種類のルーチン名でまとめた。
引数の型違いのルーチンが増えれば、より多くなるだろう。
http://makoto-watanabe.main.jp/freebasic/CatPgString.html
で、KLEN、KMIDの2つしかないので、いろいろ作成中。
Dim CodePage as UINT
Dim As Long IAA, IBB, InALong
Dim TestChar as UBYTE
'https://msdn.microsoft.com/ja-jp/library/cc448045.aspx
'declare function IsDBCSLeadByte(byval TestChar as UBYTE) as WINBOOL
'https://msdn.microsoft.com/ja-jp/library/cc448047.aspx
'declare function IsDBCSLeadByteEx(byval CodePage as UINT, byval TestChar as UBYTE) as WINBOOL
For IAA = 1 To InALong
TestChar = asc(Mid$(InAstring, IAA, 1))
IBB = IsDBCSLeadByte(TestChar)
If (IBB = 0) Then
Else
EndIf
Next IAA
又は
IBB = IsDBCSLeadByteEx(CodePage, TestChar)
で振り回して、先頭から処理していけば比較的簡単に作れるだろう。
109デフォルトの名無しさん
2017/03/08(水) 20:35:59.45ID:Wan8ns7S ただし、Right$()は
If (IBB = 0) Then
StateLong(IAA) = 0
Else
StateLong(IAA) = 1
IAA = IAA + 1
StateLong(IAA) = 2
EndIf
と、SBCS(0)かDBCS(1文字目が1, 2文字目が2)と記録して
後ろから文字数を数える必要がある。
Instr() は手を付けていない。
ASC1文字検索の時だけDBCS2文字目の場合にはねるだけだから、比較的簡単に作れると思う。
If (IBB = 0) Then
StateLong(IAA) = 0
Else
StateLong(IAA) = 1
IAA = IAA + 1
StateLong(IAA) = 2
EndIf
と、SBCS(0)かDBCS(1文字目が1, 2文字目が2)と記録して
後ろから文字数を数える必要がある。
Instr() は手を付けていない。
ASC1文字検索の時だけDBCS2文字目の場合にはねるだけだから、比較的簡単に作れると思う。
110デフォルトの名無しさん
2017/03/11(土) 09:33:14.20ID:U4jxaOIA http://makoto-watanabe.main.jp/program.html#binary_editor
に紹介のあった Stirling の実行形式のパスを取得するルーチンを作成した。
宣言は
Dim RootKey as HKEY
Dim As string SubKeyString, kNameString
Dim As string AAString, BBString, CCString, FileString
Dim FileTypeString as String
TakaDammyReturnCode = RegistryRead01(RootKey, SubKeyString, kNameString, AAString)
でレジストリーを読み取って、管理ファイル名(たぶん)から実行形式に変換
TakaDammyReturnCode = FileTypeCat(AAString, FileTypeString, 0): 'AAString から識別子(.以降)を取り除く
StirlingPathString = AAString + ".exe"
'使用例
'BinLineString = StirlingPathString(0&)
'If (Len(BinLineString) > 0&) Then TakaDammyReturnCode = Exec(BinLineString, FileString): '同期する
関数名などは省略。
に紹介のあった Stirling の実行形式のパスを取得するルーチンを作成した。
宣言は
Dim RootKey as HKEY
Dim As string SubKeyString, kNameString
Dim As string AAString, BBString, CCString, FileString
Dim FileTypeString as String
TakaDammyReturnCode = RegistryRead01(RootKey, SubKeyString, kNameString, AAString)
でレジストリーを読み取って、管理ファイル名(たぶん)から実行形式に変換
TakaDammyReturnCode = FileTypeCat(AAString, FileTypeString, 0): 'AAString から識別子(.以降)を取り除く
StirlingPathString = AAString + ".exe"
'使用例
'BinLineString = StirlingPathString(0&)
'If (Len(BinLineString) > 0&) Then TakaDammyReturnCode = Exec(BinLineString, FileString): '同期する
関数名などは省略。
111デフォルトの名無しさん
2017/03/11(土) 09:55:02.25ID:U4jxaOIA Function RegistryRead01() は、旧 Fun GetRkey01() の名称を書き換えたもの。
旧 Fun GetRkey01()は、前スレを探してくれ。
>>109 つづき。
Instr() を作ろうとして、整理していったらば、
StateLong() 配列の解釈に間違いがあったことまでつかんだ。
気がめいったので一時中止。Instr( start, str, substring )
のstartの値、strや substringの長さより、場合分けが必要で
混乱に混乱を重ねて、一括ダンプルーチンを2回作り直した時点で、気がめいった。
StateLong() 配列作成の時点で場合分け用値を定義するか、返した値から定義するか、で迷っている。
ここにMID$()関数の問題が入った。
Mid$(A$, 10, -5)なんて使い方用のルーチンもあったのよ。
これは、N88を使いだす前、A$が255文字制限のあったころ、ペット用Basicを使っていたころの名残。
忘れていたわ、こんなルーチンを作っていたなんて。
旧 Fun GetRkey01()は、前スレを探してくれ。
>>109 つづき。
Instr() を作ろうとして、整理していったらば、
StateLong() 配列の解釈に間違いがあったことまでつかんだ。
気がめいったので一時中止。Instr( start, str, substring )
のstartの値、strや substringの長さより、場合分けが必要で
混乱に混乱を重ねて、一括ダンプルーチンを2回作り直した時点で、気がめいった。
StateLong() 配列作成の時点で場合分け用値を定義するか、返した値から定義するか、で迷っている。
ここにMID$()関数の問題が入った。
Mid$(A$, 10, -5)なんて使い方用のルーチンもあったのよ。
これは、N88を使いだす前、A$が255文字制限のあったころ、ペット用Basicを使っていたころの名残。
忘れていたわ、こんなルーチンを作っていたなんて。
112デフォルトの名無しさん
2017/03/12(日) 18:13:41.20ID:a1qa7agM 以前書いた、BEEP系の内容の続き。
Win系関係ルーチンで発見できたものを記載する。
'declare 文は、C:\tool\FreeBASIC 内 *.BIファイルを検索してくれ。
大域宣言
#Include Once "win/mmsystem.bi"
Dim Shared MSerrorCodeMM as MMRESULT : 'MS音声処理関係処理のリターンコード
'declare function Beep_ alias "Beep"(byval dwFreq as DWORD, byval dwDuration as DWORD) as WINBOOL
MSReturnCode = Beep_(Frequency, BeepTime) : '命令語
'https://msdn.microsoft.com/ja-jp/library/cc428923.aspx
'https://msdn.microsoft.com/ja-jp/library/cc429002.aspx
'Declare function MessageBeep(byval uType as UINT) as WINBOOL
MSReturnCode = MessageBeep(-1)
MSReturnCode =MessageBeep(MB_ICONASTERISK)
MSReturnCode = MessageBeep(MB_ICONEXCLAMATION)
MSReturnCode= MessageBeep(MB_ICONHAND)
MSReturnCode = MessageBeep(MB_ICONQUESTION)
MSReturnCode =MessageBeep(MB_OK)
Win系関係ルーチンで発見できたものを記載する。
'declare 文は、C:\tool\FreeBASIC 内 *.BIファイルを検索してくれ。
大域宣言
#Include Once "win/mmsystem.bi"
Dim Shared MSerrorCodeMM as MMRESULT : 'MS音声処理関係処理のリターンコード
'declare function Beep_ alias "Beep"(byval dwFreq as DWORD, byval dwDuration as DWORD) as WINBOOL
MSReturnCode = Beep_(Frequency, BeepTime) : '命令語
'https://msdn.microsoft.com/ja-jp/library/cc428923.aspx
'https://msdn.microsoft.com/ja-jp/library/cc429002.aspx
'Declare function MessageBeep(byval uType as UINT) as WINBOOL
MSReturnCode = MessageBeep(-1)
MSReturnCode =MessageBeep(MB_ICONASTERISK)
MSReturnCode = MessageBeep(MB_ICONEXCLAMATION)
MSReturnCode= MessageBeep(MB_ICONHAND)
MSReturnCode = MessageBeep(MB_ICONQUESTION)
MSReturnCode =MessageBeep(MB_OK)
113デフォルトの名無しさん
2017/03/12(日) 18:17:37.48ID:a1qa7agM 'http://park7.wakwak.com/~efc21/cgi-bin/exqalounge.cgi?print+200707/07070177.txt
にあったMIDI利用 BEEP は何とか成功した。
Dim lngmidHndVal As HMIDIOUT__
Dim lngmidHndPtr As HMIDIOUT
Dim lngmidHndPtrPtr As LPHMIDIOUT
で宣言して、
'declare function midiOutOpen(byval phmo as LPHMIDIOUT, byval uDeviceID as UINT, byval dwCallback as DWORD_PTR, byval dwInstance as DWORD_PTR, byval fdwOpen as DWORD) as MMRESULT
MSerrorCodeMM = midiOutOpen(@lngmidHndPtr, MIDI_MAPPER, 0, 0, CALLBACK_NULL)
If (MSerrorCodeMM = MMSYSERR_NOERROR) Then BeepMidiOut (lngmidHndPtr, MdiMsg)
Sleep mTime
midiOutClose (lngmidHndPtr)
とならす。
Private Function BeepMidiOut(lngmidHndPtr As HMIDIOUT, DataString As String) As Wata
Dim MLMsg() As Byte
Dim As Long IAA, IBB
Dim lpMidiOutHdr As MIDIHDR
と、宣言して、
ReDim MLMsg(0& To Len(DataString) \ 2& - 1&)
For IAA = 1& To Len(DataString) Step 2&
MLMsg((IAA - 1&) \ 2&) = Val("&H" & Mid(DataString, IAA, 2&))
Next
lpMidiOutHdr.lpData = VarPtr(MLMsg(0))
lpMidiOutHdr.dwBufferLength = UBound(MLMsg) + 1&
lpMidiOutHdr.dwFlags = 0&
'declare function midiOutPrepareHeader(byval hmo as HMIDIOUT, byval pmh as LPMIDIHDR, byval cbmh as UINT) as MMRESULT
MSerrorCodeMM = midiOutPrepareHeader (lngmidHndPtr, @lpMidiOutHdr, Len(lpMidiOutHdr))
'declare function midiOutLongMsg(byval hmo as HMIDIOUT, byval pmh as LPMIDIHDR, byval cbmh as UINT) as MMRESULT
MSerrorCodeMM = midiOutLongMsg (lngmidHndPtr, @lpMidiOutHdr, Len(lpMidiOutHdr))
と鳴らす。
にあったMIDI利用 BEEP は何とか成功した。
Dim lngmidHndVal As HMIDIOUT__
Dim lngmidHndPtr As HMIDIOUT
Dim lngmidHndPtrPtr As LPHMIDIOUT
で宣言して、
'declare function midiOutOpen(byval phmo as LPHMIDIOUT, byval uDeviceID as UINT, byval dwCallback as DWORD_PTR, byval dwInstance as DWORD_PTR, byval fdwOpen as DWORD) as MMRESULT
MSerrorCodeMM = midiOutOpen(@lngmidHndPtr, MIDI_MAPPER, 0, 0, CALLBACK_NULL)
If (MSerrorCodeMM = MMSYSERR_NOERROR) Then BeepMidiOut (lngmidHndPtr, MdiMsg)
Sleep mTime
midiOutClose (lngmidHndPtr)
とならす。
Private Function BeepMidiOut(lngmidHndPtr As HMIDIOUT, DataString As String) As Wata
Dim MLMsg() As Byte
Dim As Long IAA, IBB
Dim lpMidiOutHdr As MIDIHDR
と、宣言して、
ReDim MLMsg(0& To Len(DataString) \ 2& - 1&)
For IAA = 1& To Len(DataString) Step 2&
MLMsg((IAA - 1&) \ 2&) = Val("&H" & Mid(DataString, IAA, 2&))
Next
lpMidiOutHdr.lpData = VarPtr(MLMsg(0))
lpMidiOutHdr.dwBufferLength = UBound(MLMsg) + 1&
lpMidiOutHdr.dwFlags = 0&
'declare function midiOutPrepareHeader(byval hmo as HMIDIOUT, byval pmh as LPMIDIHDR, byval cbmh as UINT) as MMRESULT
MSerrorCodeMM = midiOutPrepareHeader (lngmidHndPtr, @lpMidiOutHdr, Len(lpMidiOutHdr))
'declare function midiOutLongMsg(byval hmo as HMIDIOUT, byval pmh as LPMIDIHDR, byval cbmh as UINT) as MMRESULT
MSerrorCodeMM = midiOutLongMsg (lngmidHndPtr, @lpMidiOutHdr, Len(lpMidiOutHdr))
と鳴らす。
114デフォルトの名無しさん
2017/03/12(日) 18:21:32.40ID:a1qa7agM 音が聞こえなかったのは、Sleep mTime の解釈が原因だと思う。
BeepMidi("02", "60", 2000)
'BeepMidi("57", "60", 2000) 'C7:2093Hz
のように、演奏時間を2000としたら、何秒か聞こえた。
遅延が、2-3秒ぐらいあり、その期間無答となるので、ゲームサウンドには使えない。
BeepMidi("02", "60", 2000)
'BeepMidi("57", "60", 2000) 'C7:2093Hz
のように、演奏時間を2000としたら、何秒か聞こえた。
遅延が、2-3秒ぐらいあり、その期間無答となるので、ゲームサウンドには使えない。
115デフォルトの名無しさん
2017/03/12(日) 19:21:01.74ID:a1qa7agM さっぱりわからんけど
https://blogs.windows.com/buildingapps/2016/09/21/midi-enhancements-in-windows-10/#HWygA7trSYw9sboJ.97
なんてものを見つけた。
Windows 10でMIDIを強化するというが、2秒ぐらいの遅延が発生していることからみれば
対応を取らなければ、MIDI関係ルーチンが使い物にならないわけで
主要用途である、ゲームのバックグラウンドサウンドにうまく適応で切るような、低負荷ルーチンの存在が必要となってくる。
Win 10では、1/4を超えるCPU占有をTSSで他のタスクに割り振るために認めていない。
より負荷を軽くすることが要求される。
しかし、負荷を軽くする内容については記載がない。
https://blogs.windows.com/buildingapps/2016/09/21/midi-enhancements-in-windows-10/#HWygA7trSYw9sboJ.97
なんてものを見つけた。
Windows 10でMIDIを強化するというが、2秒ぐらいの遅延が発生していることからみれば
対応を取らなければ、MIDI関係ルーチンが使い物にならないわけで
主要用途である、ゲームのバックグラウンドサウンドにうまく適応で切るような、低負荷ルーチンの存在が必要となってくる。
Win 10では、1/4を超えるCPU占有をTSSで他のタスクに割り振るために認めていない。
より負荷を軽くすることが要求される。
しかし、負荷を軽くする内容については記載がない。
116デフォルトの名無しさん
2017/03/12(日) 19:38:38.32ID:a1qa7agM いくらやっても見つからないと思ったらば、こんなの見つけた。
https://www.slideshare.net/garicchi/windows10api
37. バックグラウンドタスク
38. BackgroundTask • UWPは基本的にアプリを閉じるとタスクを実行できなくなる • BackgroundTaskに登録しておくとTriggerが発動したときに別
のプロセスとして処理を実行できる App System System Trigger BackgroundTask 別プロセス BackgroundTask登録
39. Background Task Triggerの例 • Time Trigger • 一定時間でTaskを実行 • 最短15分間隔 • System Trigger • システムのあらゆるイベント時にTask実行
• 例 Internet Available , Power State Changed • Push Notification Trigger • プッシュ通知が来た時にTask実行
MIDI 再生専用のタスクを作って、何かしかの指示を送って実行、
という処理が必要なのかな?。
https://www.slideshare.net/garicchi/windows10api
37. バックグラウンドタスク
38. BackgroundTask • UWPは基本的にアプリを閉じるとタスクを実行できなくなる • BackgroundTaskに登録しておくとTriggerが発動したときに別
のプロセスとして処理を実行できる App System System Trigger BackgroundTask 別プロセス BackgroundTask登録
39. Background Task Triggerの例 • Time Trigger • 一定時間でTaskを実行 • 最短15分間隔 • System Trigger • システムのあらゆるイベント時にTask実行
• 例 Internet Available , Power State Changed • Push Notification Trigger • プッシュ通知が来た時にTask実行
MIDI 再生専用のタスクを作って、何かしかの指示を送って実行、
という処理が必要なのかな?。
117デフォルトの名無しさん
2017/03/13(月) 22:50:24.29ID:71lamdyx http://www.utp.or.jp/bd/978-4-13-064067-1.html
機会があったらば読んでほしいのだけれども。
細かい計算や理論は除外して、
SALSの運用の話を見てほしい。
全部のソースリストが記載されているものがあって、
記載内容を修正した後でソースリスト(2万枚のパンチカード?)を修正する
という旨の内容が書いてあったはず。
いつ、どのような修正をしたのか、修正の前後の内容を保存している
ということをしないと、障害の巣窟になってしまう、なんて内容が書いてあったはず。
これは、デカコンを使っていたころ読んだ本なので、手元にない。版元では品切 の模様。
どこが、どのようにおかしいから、どのように変更した、
ことを記載しておくこと。
現実としては、作業記録として専用に作るのは面倒だから、
ライブを定期的に、あるいは大規模な修正を行う前に、一括して圧縮保存。
修正作業に入って、修正した日時と修正の原因をコメント行としてソースに残しておく、
ということで、済ましている。
FreeBasicの癖がよくわからないので、>>111 の様な事をやっていて、
本格的な移植作業には入っていない。
ライブの移植が終わるころには、癖がつかめてくるのではないかと思われる。
機会があったらば読んでほしいのだけれども。
細かい計算や理論は除外して、
SALSの運用の話を見てほしい。
全部のソースリストが記載されているものがあって、
記載内容を修正した後でソースリスト(2万枚のパンチカード?)を修正する
という旨の内容が書いてあったはず。
いつ、どのような修正をしたのか、修正の前後の内容を保存している
ということをしないと、障害の巣窟になってしまう、なんて内容が書いてあったはず。
これは、デカコンを使っていたころ読んだ本なので、手元にない。版元では品切 の模様。
どこが、どのようにおかしいから、どのように変更した、
ことを記載しておくこと。
現実としては、作業記録として専用に作るのは面倒だから、
ライブを定期的に、あるいは大規模な修正を行う前に、一括して圧縮保存。
修正作業に入って、修正した日時と修正の原因をコメント行としてソースに残しておく、
ということで、済ましている。
FreeBasicの癖がよくわからないので、>>111 の様な事をやっていて、
本格的な移植作業には入っていない。
ライブの移植が終わるころには、癖がつかめてくるのではないかと思われる。
118デフォルトの名無しさん
2017/03/13(月) 22:59:35.57ID:71lamdyx MIDIファイル再生に関して、こんなものを見つけた。
http://officetanaka.net/excel/vba/tips/tips22.htm
以下のファイルが関係している。
C:\tool\FreeBASIC\inc\win\mmsystem.bi
C:\tool\FreeBASIC\inc\win\ddk\mmddk.bi
ここまでしかやっていない。
http://officetanaka.net/excel/vba/tips/tips22.htm
以下のファイルが関係している。
C:\tool\FreeBASIC\inc\win\mmsystem.bi
C:\tool\FreeBASIC\inc\win\ddk\mmddk.bi
ここまでしかやっていない。
119デフォルトの名無しさん
2017/03/13(月) 23:49:42.95ID:71lamdyx >>114 こんなの見つけたので知らせておく
http://www.cactussoft.co.jp/Sarbo/divMIDISeqLongMsg.html
そのためmidiOutLongMsg()関数は、非同期式で動作する仕様になっています。
非同期式とは、関数が実行された段階でデバイスドライバーは、
「はい、ロングメッセージの送信ですね、受け付けました。」と言うだけで制御を戻します。
と待ち時間に関係なしに制御が戻って、勝手に演奏してくれないと、パックグラウンド゜サウンドに使えない。
ズンチャカやっていて、それ以外の処理系が止まってしまうのは、使えない。
http://www.cactussoft.co.jp/Sarbo/divMIDISeqLongMsg.html
そのためmidiOutLongMsg()関数は、非同期式で動作する仕様になっています。
非同期式とは、関数が実行された段階でデバイスドライバーは、
「はい、ロングメッセージの送信ですね、受け付けました。」と言うだけで制御を戻します。
と待ち時間に関係なしに制御が戻って、勝手に演奏してくれないと、パックグラウンド゜サウンドに使えない。
ズンチャカやっていて、それ以外の処理系が止まってしまうのは、使えない。
120デフォルトの名無しさん
2017/03/14(火) 22:02:38.43ID:1/oLMu3p >>118 非同期の起動に成功した。
http://eternalwindows .jp/winmm/mci/mci02.html
http://www13.plala .or.jp/kymats/study/MULTIMEDIA/mciCommand_callback.html
https://msdn.microsoft.com/ja-jp/library/cc410496.aspx
http://eternalwindows .jp/winmm/mci/mci02.html
http://www13.plala .or.jp/kymats/study/MULTIMEDIA/mciCommand_callback.html
https://msdn.microsoft.com/ja-jp/library/cc410496.aspx
121デフォルトの名無しさん
2017/03/14(火) 22:03:19.95ID:1/oLMu3p Case MM_MCINOTIFY
'「MM_MCINOTIFY」定数を使うには 要 #Include Once "win/mmsystem.bi"
Astring = "MM_MCINOTIFY "+ Hex$(wParam) + " " + Hex$(lParam)
TakaDammyReturnCode = SoundFilePlay(10, Astring)
buff = Astring
SetDlgItemText(hWin, IDC_STC1, @buff)
'wParam = (WPARAM) wFlags
'lParam = (LONG) lDevID
'「MM_MCINOTIFY」定数を使うには 要 #Include Once "win/mmsystem.bi"
Astring = "MM_MCINOTIFY "+ Hex$(wParam) + " " + Hex$(lParam)
TakaDammyReturnCode = SoundFilePlay(10, Astring)
buff = Astring
SetDlgItemText(hWin, IDC_STC1, @buff)
'wParam = (WPARAM) wFlags
'lParam = (LONG) lDevID
122デフォルトの名無しさん
2017/03/14(火) 22:06:03.27ID:1/oLMu3p あと
CmdZString ="Open " & SoundFile+" notify"
MSerrorCodeMI= mciSendString(CmdZString, @CmdRetZString, SizeOf(CmdRetZString), TakaHWND)
buff ="Openを開始します"
SetDlgItemText(hWin, IDC_STC1, @buff)
Case IDC_BTN3
CmdZString= "Play "&SoundFile + " notify"
MSerrorCodeMI =mciSendString(CmdZString,@CmdRetZString, SizeOf(CmdRetZString), TakaHWND)
buff= "Playを開始します"
SetDlgItemText(hWin, IDC_STC1, @buff)
Case IDC_BTN4
CmdZString ="Close " & SoundFile+" notify"
MSerrorCodeMI= mciSendString(CmdZString, @CmdRetZString,SizeOf(CmdRetZString), TakaHWND)
buff ="Closeを開始します"
SetDlgItemText(hWin, IDC_STC1, @buff)
CmdZString ="Open " & SoundFile+" notify"
MSerrorCodeMI= mciSendString(CmdZString, @CmdRetZString, SizeOf(CmdRetZString), TakaHWND)
buff ="Openを開始します"
SetDlgItemText(hWin, IDC_STC1, @buff)
Case IDC_BTN3
CmdZString= "Play "&SoundFile + " notify"
MSerrorCodeMI =mciSendString(CmdZString,@CmdRetZString, SizeOf(CmdRetZString), TakaHWND)
buff= "Playを開始します"
SetDlgItemText(hWin, IDC_STC1, @buff)
Case IDC_BTN4
CmdZString ="Close " & SoundFile+" notify"
MSerrorCodeMI= mciSendString(CmdZString, @CmdRetZString,SizeOf(CmdRetZString), TakaHWND)
buff ="Closeを開始します"
SetDlgItemText(hWin, IDC_STC1, @buff)
123デフォルトの名無しさん
2017/04/09(日) 21:36:39.17ID:LdLCQwyT Test
124デフォルトの名無しさん
2017/04/09(日) 21:43:21.61ID:LdLCQwyT >>122 のあと、マンゴーがなにんとかで、かけなくなって放置。
気が付いた点で関係情報を
外部タスクの同期起動は、Shell 等がある。
保守関係で、被同期にしたいので探して見つかったのが
'declare function WinExec(byval lpCmdLine as LPCSTR, byval uCmdShow as UINT) as UINT
'MSReturnCodeUINT = WinExec(byval "notepad", SW_SHOW)
とか
MSReturnCodeUINT = WinExec(byval "notepad "+OutFile, SW_SHOW)
これは、MSが切り替えを予定している。それで
'declare function CreateProcessA(byval lpApplicationName as LPCSTR, byval lpCommandLine as LPSTR,
byval lpProcessAttributes as LPSECURITY_ATTRIBUTES, byval lpThreadAttributes as LPSECURITY_ATTRIBUTES,
byval bInheritHandles as WINBOOL, byval dwCreationFlags as DWORD,
byval lpEnvironment as LPVOID, byval lpCurrentDirectory as LPCSTR, byval lpStartupInfo as LPSTARTUPINFOA,
byval lpProcessInformation as LPPROCESS_INFORMATION) as WINBOOL
Dim pi As _PROCESS_INFORMATION
Dim PiPtr as LPPROCESS_INFORMATION
dim si as _STARTUPINFOA
Dim SiPtr as LPSTARTUPINFOA
Dim As Zstring * 256 szCmd = "notepad "+OutFile
PiPtr = @pi
SiPtr = @si
memset(@si, 0, sizeof(STARTUPINFO))
memset(@pi, 0, sizeof(PROCESS_INFORMATION))
si.cb = sizeof(STARTUPINFO)
' 1 2 3 4 5 6 7 8 9 10
MSReturnCode = CreateProcess(NULL, szCmd, NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS, NULL, NULL, @Si, @pi)
気が付いた点で関係情報を
外部タスクの同期起動は、Shell 等がある。
保守関係で、被同期にしたいので探して見つかったのが
'declare function WinExec(byval lpCmdLine as LPCSTR, byval uCmdShow as UINT) as UINT
'MSReturnCodeUINT = WinExec(byval "notepad", SW_SHOW)
とか
MSReturnCodeUINT = WinExec(byval "notepad "+OutFile, SW_SHOW)
これは、MSが切り替えを予定している。それで
'declare function CreateProcessA(byval lpApplicationName as LPCSTR, byval lpCommandLine as LPSTR,
byval lpProcessAttributes as LPSECURITY_ATTRIBUTES, byval lpThreadAttributes as LPSECURITY_ATTRIBUTES,
byval bInheritHandles as WINBOOL, byval dwCreationFlags as DWORD,
byval lpEnvironment as LPVOID, byval lpCurrentDirectory as LPCSTR, byval lpStartupInfo as LPSTARTUPINFOA,
byval lpProcessInformation as LPPROCESS_INFORMATION) as WINBOOL
Dim pi As _PROCESS_INFORMATION
Dim PiPtr as LPPROCESS_INFORMATION
dim si as _STARTUPINFOA
Dim SiPtr as LPSTARTUPINFOA
Dim As Zstring * 256 szCmd = "notepad "+OutFile
PiPtr = @pi
SiPtr = @si
memset(@si, 0, sizeof(STARTUPINFO))
memset(@pi, 0, sizeof(PROCESS_INFORMATION))
si.cb = sizeof(STARTUPINFO)
' 1 2 3 4 5 6 7 8 9 10
MSReturnCode = CreateProcess(NULL, szCmd, NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS, NULL, NULL, @Si, @pi)
125デフォルトの名無しさん
2017/04/09(日) 21:48:26.55ID:LdLCQwyT タイマー割り込み処理。
Case IDC_BTN1
buff = "IDC_BTN1を開始します"
'declare function SetTimer(byval hWnd as HWND, byval nIDEvent as UINT_PTR, byval uElapse as UINT, byval lpTimerFunc as TIMERPROC) as UINT_PTR
SetTimer(hwnd, 1, 2000, NULL)
SetDlgItemText(hWin, IDC_STC1, @buff)
で起動して
case WM_TIMER
'
buff = "WM_TIMER が発生しました"
SetDlgItemText(hWin, IDC_STC1, @buff)
Case WM_SIZE
と「WM_TIMER」事象発生を受けて、かン系ルーチンを起動する
Case IDC_BTN1
buff = "IDC_BTN1を開始します"
'declare function SetTimer(byval hWnd as HWND, byval nIDEvent as UINT_PTR, byval uElapse as UINT, byval lpTimerFunc as TIMERPROC) as UINT_PTR
SetTimer(hwnd, 1, 2000, NULL)
SetDlgItemText(hWin, IDC_STC1, @buff)
で起動して
case WM_TIMER
'
buff = "WM_TIMER が発生しました"
SetDlgItemText(hWin, IDC_STC1, @buff)
Case WM_SIZE
と「WM_TIMER」事象発生を受けて、かン系ルーチンを起動する
126デフォルトの名無しさん
2017/04/09(日) 22:09:11.11ID:LdLCQwyT V.B.用に作ったタートル関係、FreeBasicでは関係命令が存在するだが、
変な拡張をしたがために、廃止できない状態に。
うまく動かないと思ったらば、ByRef, ByValの関係で、出力値に常に0が定義されていた。
(なんたら)=(かんたら)のなんたら部のみを検索するルーチンを作って、
Function文から引数名を引き抜くルーチンを作って、比較。
1ファイル平均3引数程度、ByRefをしなければならない場所がByValになっていた。
短期即興のルーチンだから解釈できない引数が800近くある。
ルーチン数でも同じくらいだから、引数の関係した未発見のエラーが多いと思われる。
タートル関係のルーチンが増えて、現在1170ルーチンのライブラリーとなっている。
変な拡張をしたがために、廃止できない状態に。
うまく動かないと思ったらば、ByRef, ByValの関係で、出力値に常に0が定義されていた。
(なんたら)=(かんたら)のなんたら部のみを検索するルーチンを作って、
Function文から引数名を引き抜くルーチンを作って、比較。
1ファイル平均3引数程度、ByRefをしなければならない場所がByValになっていた。
短期即興のルーチンだから解釈できない引数が800近くある。
ルーチン数でも同じくらいだから、引数の関係した未発見のエラーが多いと思われる。
タートル関係のルーチンが増えて、現在1170ルーチンのライブラリーとなっている。
127デフォルトの名無しさん
2017/04/09(日) 22:26:03.33ID:LdLCQwyT ファミコン等、かなり古いゲームでは8*8文字とか使っている。
それ前だと、ニキシー管 https://ja.wikipedia.org/wiki/%E3%83%8B%E3%82%AD%E3%82%B7%E3%83%BC%E7%AE%A1
を使ったスロットマシーンとかもある。
V.B.でこれを再現しようとした名残で、7セグとか14セグ、16セクとか
https://ja.wikipedia.org/wiki/7%E3%82%BB%E3%82%B0%E3%83%A1%E3%83%B3%E3%83%88%E3%83%87%E3%82%A3%E3%82%B9%E3%83%97%E3%83%AC%E3%82%A4
の文字表示ルーチンがある。
結果として、V.B.用のタートルが捨てられない。
それ前だと、ニキシー管 https://ja.wikipedia.org/wiki/%E3%83%8B%E3%82%AD%E3%82%B7%E3%83%BC%E7%AE%A1
を使ったスロットマシーンとかもある。
V.B.でこれを再現しようとした名残で、7セグとか14セグ、16セクとか
https://ja.wikipedia.org/wiki/7%E3%82%BB%E3%82%B0%E3%83%A1%E3%83%B3%E3%83%88%E3%83%87%E3%82%A3%E3%82%B9%E3%83%97%E3%83%AC%E3%82%A4
の文字表示ルーチンがある。
結果として、V.B.用のタートルが捨てられない。
128デフォルトの名無しさん
2017/04/13(木) 21:48:58.87ID:CzF9QVAq ByRef, ByVal 接頭語に関して。
サブルーチン内で定義する方法をLet文、具体的には「=」記号のみに限定する
という方法を選択して、
引数の変数を示す語をInstrで探して、
前が数字とアルファベット以外・又は文頭、後ろが数字とアルファベット以外、の場合に、変数を参照していると解釈する。
Open、For、Dim、ReDim、Select Case、IF、DO、LOOP、WHILE、Untilの場合には専用にルーチンで語の一致をみて、参照する場合と決定
IF THEN ELSE 文は、IF - Then 間、THen-Else間、ELSE移行の3文に分割
変数の前の文字を 「# : , ( 算術演算子」の場合に分けて
変数の後ろの文字を 「: , ) 算術演算子」の場合に分けて
「,」や「()」の場合には、前後の()を探して、配列名か関数名を特定。Declear文に記載がある場合に限って関数と解釈、ない場合が配列と解釈。
関数の場合には、自己の検査結果より引数が定義にしているか参照しているを調べる。配列名の場合には参照すると決定(MSやUnix系関数は判断できない)。
算術演算子の場合には参照と決定。
前に「#」があるばあいには、参照と決定。
前に「=」があるばあいには、参照と決定。
後ろに「=」があるばあいには、定義と決定。
多文字演算子として、MOD 演算子は + に書き換えで処理。
までやって、100位解釈できない引数があるけど、なんとかそれらしきものができた。
あとちょっとやれば、ByRef ByVal ガ原因の混乱は終焉すると思う。
サブルーチン内で定義する方法をLet文、具体的には「=」記号のみに限定する
という方法を選択して、
引数の変数を示す語をInstrで探して、
前が数字とアルファベット以外・又は文頭、後ろが数字とアルファベット以外、の場合に、変数を参照していると解釈する。
Open、For、Dim、ReDim、Select Case、IF、DO、LOOP、WHILE、Untilの場合には専用にルーチンで語の一致をみて、参照する場合と決定
IF THEN ELSE 文は、IF - Then 間、THen-Else間、ELSE移行の3文に分割
変数の前の文字を 「# : , ( 算術演算子」の場合に分けて
変数の後ろの文字を 「: , ) 算術演算子」の場合に分けて
「,」や「()」の場合には、前後の()を探して、配列名か関数名を特定。Declear文に記載がある場合に限って関数と解釈、ない場合が配列と解釈。
関数の場合には、自己の検査結果より引数が定義にしているか参照しているを調べる。配列名の場合には参照すると決定(MSやUnix系関数は判断できない)。
算術演算子の場合には参照と決定。
前に「#」があるばあいには、参照と決定。
前に「=」があるばあいには、参照と決定。
後ろに「=」があるばあいには、定義と決定。
多文字演算子として、MOD 演算子は + に書き換えで処理。
までやって、100位解釈できない引数があるけど、なんとかそれらしきものができた。
あとちょっとやれば、ByRef ByVal ガ原因の混乱は終焉すると思う。
129デフォルトの名無しさん
2017/04/15(土) 11:39:21.57ID:e+ro1QoX >>122 のあとのマンゴー関係で書けなかった内容。
画面中にある表示枠情報。
Dim CmWndpl As WINDOWPLACEMENT
CmWndpl.length = sizeof(CmWndpl): 'MS指示、参照前に定義のこと
MSReturnCode = GetWindowPlacement(hWnd, @CmWndpl)
で取得、
MSReturnCode = SetWindowPlacement(hWnd, @CmWndpl)
で復元。
'使用TVの物理サイズの取得
Dim R As RECT
Dim as HWND hWnd
hWnd = GetDesktopWindow()
MSReturnCode = GetWindowRect(hWnd, @R): 'スクリーン座標の取得
'タスクバーの位置と大きさを返す
Dim TaskBerInfo As _AppBarData
'(大域) Dim MSReturnCodeUintPtr as UINT_PTR
ZeroMemory(@TaskBerInfo, sizeof(TaskBerInfo)) : '(MS指定) 「TaskBerInfo」領域内を0で塗りつぶす
TaskBerInfo.cbSize = sizeof(TaskBerInfo): '(MS指定) 初期化、領域の大きさを定義
'declare function SHAppBarMessage(byval dwMessage as DWORD, byval pData as PAPPBARDATA) as UINT_PTR
MSReturnCodeUintPtr = SHAppBarMessage(ABM_GETTASKBARPOS, @TaskBerInfo)
リターンコードが「UINT_PTR」という使用頻度の低い型を使っていることに注意。
画面中にある表示枠情報。
Dim CmWndpl As WINDOWPLACEMENT
CmWndpl.length = sizeof(CmWndpl): 'MS指示、参照前に定義のこと
MSReturnCode = GetWindowPlacement(hWnd, @CmWndpl)
で取得、
MSReturnCode = SetWindowPlacement(hWnd, @CmWndpl)
で復元。
'使用TVの物理サイズの取得
Dim R As RECT
Dim as HWND hWnd
hWnd = GetDesktopWindow()
MSReturnCode = GetWindowRect(hWnd, @R): 'スクリーン座標の取得
'タスクバーの位置と大きさを返す
Dim TaskBerInfo As _AppBarData
'(大域) Dim MSReturnCodeUintPtr as UINT_PTR
ZeroMemory(@TaskBerInfo, sizeof(TaskBerInfo)) : '(MS指定) 「TaskBerInfo」領域内を0で塗りつぶす
TaskBerInfo.cbSize = sizeof(TaskBerInfo): '(MS指定) 初期化、領域の大きさを定義
'declare function SHAppBarMessage(byval dwMessage as DWORD, byval pData as PAPPBARDATA) as UINT_PTR
MSReturnCodeUintPtr = SHAppBarMessage(ABM_GETTASKBARPOS, @TaskBerInfo)
リターンコードが「UINT_PTR」という使用頻度の低い型を使っていることに注意。
130デフォルトの名無しさん
2017/04/15(土) 11:46:28.47ID:e+ro1QoX 'システム枠の幅と高さの取得
'declare function GetSystemMetrics(byval nIndex as long) as long
Select Case ActionType
Case SM_CXSCREEN, SM_CYSCREEN
'0, 1 'プライマリモニタの画面全体の幅と高さを取得します。
WideLong = GetSystemMetrics(SM_CXSCREEN)
HightLong = GetSystemMetrics(SM_CYSCREEN)
Case SM_CXVSCROLL, SM_CYHSCROLL
'2, 3 垂直スクロールバーの幅、または垂直スクロールバーの矢印の高さをピクセル単位で取得します。
WideLong = GetSystemMetrics(SM_CXVSCROLL)
HightLong = GetSystemMetrics(SM_CYHSCROLL)
'const SM_CYCAPTION = 4 ''通常のタイトルバーの高さをピクセル単位で取得します。
Case SM_CXBORDER, SM_CYBORDER
'5, 6 立体効果のないウィンドウの境界の幅と高さを取得します。
WideLong = GetSystemMetrics(SM_CXBORDER)
HightLong = GetSystemMetrics(SM_CYBORDER)
Case SM_CXDLGFRAME, SM_CYDLGFRAME
'7,8 'タイトルバーがあり、サイズが変更できないウィンドウの周囲を囲む枠の幅と高さをピクセル単位で取得します。
WideLong = GetSystemMetrics(SM_CXDLGFRAME)
HightLong = GetSystemMetrics(SM_CYDLGFRAME)
以下略。「GetSystemMetrics」関係がやたら沢山あって下手に書くとマンゴーに引っかかりそうなので一部分だけ。
Case SM_CXVIRTUALSCREEN, SM_CYVIRTUALSCREEN
'78, 79 仮想画面の幅と高さをピクセル単位で取得します。
WideLong = GetSystemMetrics(SM_CXVIRTUALSCREEN)
HightLong = GetSystemMetrics(SM_CYVIRTUALSCREEN)
と、40組ぐらいある。
'const SM_CXFOCUSBORDER = 83
から
'const SM_CMETRICS = 97
まで、Win系BIファイル('C:\tool\FreeBASIC\inc\win\winbase.bi)には記載があるが、内容が検索では見つけられなかった定数がある。
'declare function GetSystemMetrics(byval nIndex as long) as long
Select Case ActionType
Case SM_CXSCREEN, SM_CYSCREEN
'0, 1 'プライマリモニタの画面全体の幅と高さを取得します。
WideLong = GetSystemMetrics(SM_CXSCREEN)
HightLong = GetSystemMetrics(SM_CYSCREEN)
Case SM_CXVSCROLL, SM_CYHSCROLL
'2, 3 垂直スクロールバーの幅、または垂直スクロールバーの矢印の高さをピクセル単位で取得します。
WideLong = GetSystemMetrics(SM_CXVSCROLL)
HightLong = GetSystemMetrics(SM_CYHSCROLL)
'const SM_CYCAPTION = 4 ''通常のタイトルバーの高さをピクセル単位で取得します。
Case SM_CXBORDER, SM_CYBORDER
'5, 6 立体効果のないウィンドウの境界の幅と高さを取得します。
WideLong = GetSystemMetrics(SM_CXBORDER)
HightLong = GetSystemMetrics(SM_CYBORDER)
Case SM_CXDLGFRAME, SM_CYDLGFRAME
'7,8 'タイトルバーがあり、サイズが変更できないウィンドウの周囲を囲む枠の幅と高さをピクセル単位で取得します。
WideLong = GetSystemMetrics(SM_CXDLGFRAME)
HightLong = GetSystemMetrics(SM_CYDLGFRAME)
以下略。「GetSystemMetrics」関係がやたら沢山あって下手に書くとマンゴーに引っかかりそうなので一部分だけ。
Case SM_CXVIRTUALSCREEN, SM_CYVIRTUALSCREEN
'78, 79 仮想画面の幅と高さをピクセル単位で取得します。
WideLong = GetSystemMetrics(SM_CXVIRTUALSCREEN)
HightLong = GetSystemMetrics(SM_CYVIRTUALSCREEN)
と、40組ぐらいある。
'const SM_CXFOCUSBORDER = 83
から
'const SM_CMETRICS = 97
まで、Win系BIファイル('C:\tool\FreeBASIC\inc\win\winbase.bi)には記載があるが、内容が検索では見つけられなかった定数がある。
131デフォルトの名無しさん
2017/04/15(土) 11:51:10.66ID:e+ro1QoX '表示枠全体, 表示枠使用可能範囲、最大表示可能枠の取得
Dim MainWaku as tagRECT
Case 1
'declare function GetWindowRect(byval hWnd as HWND, byval lpRect as LPRECT) as WINBOOL
MSReturnCode = GetWindowRect(InhWin, @MainWaku) 'InhWinの左上端と右下端の座標をスクリーン座標で取得します。
Case 2
'declare function GetClientRect(byval hWnd as HWND, byval lpRect as LPRECT) as WINBOOL
MSReturnCode = GetClientRect(InhWin, @MainWaku) 'InhWinの表示枠内、ユーサー領域の左上端と右下端の座標をスクリーン座標で取得します。
Case 3
'declare function GetClipCursor(byval lpRect as LPRECT) as WINBOOL
MSReturnCode = GetClipCursor(@MainWaku) 'マウスカーソルの移動可能な範囲に相当するスクリーン座標を取得します(最大表示範囲)。
Case 4
'http://liweijing.blogspot.jp/2007/03/blog-post.html
'declare function SystemParametersInfoA(byval uiAction as UINT, byval uiParam as UINT, byval pvParam as PVOID, byval fWinIni as UINT) as WINBOOL
MSReturnCode = SystemParametersInfo(SPI_GETWORKAREA, 0, @MainWaku, 0) 'タスクバーの大きさをのぞいた画面の大きさ
Dim MainWaku as tagRECT
Case 1
'declare function GetWindowRect(byval hWnd as HWND, byval lpRect as LPRECT) as WINBOOL
MSReturnCode = GetWindowRect(InhWin, @MainWaku) 'InhWinの左上端と右下端の座標をスクリーン座標で取得します。
Case 2
'declare function GetClientRect(byval hWnd as HWND, byval lpRect as LPRECT) as WINBOOL
MSReturnCode = GetClientRect(InhWin, @MainWaku) 'InhWinの表示枠内、ユーサー領域の左上端と右下端の座標をスクリーン座標で取得します。
Case 3
'declare function GetClipCursor(byval lpRect as LPRECT) as WINBOOL
MSReturnCode = GetClipCursor(@MainWaku) 'マウスカーソルの移動可能な範囲に相当するスクリーン座標を取得します(最大表示範囲)。
Case 4
'http://liweijing.blogspot.jp/2007/03/blog-post.html
'declare function SystemParametersInfoA(byval uiAction as UINT, byval uiParam as UINT, byval pvParam as PVOID, byval fWinIni as UINT) as WINBOOL
MSReturnCode = SystemParametersInfo(SPI_GETWORKAREA, 0, @MainWaku, 0) 'タスクバーの大きさをのぞいた画面の大きさ
132デフォルトの名無しさん
2017/04/15(土) 11:54:37.99ID:e+ro1QoX '表示枠全体, 表示枠使用可能範囲取得
Dim hBtn As HWND
Dim MainWaku as tagRECT
Dim PointXY as tagPOINT
hBtn = GetDlgItem(InhWin, IDnoGRALong): '表示枠内部品のハンドル(枠番号)を取得, hBtn=0でエラー
Select Case ActionType
Case 1, 11
MSReturnCode = GetWindowRect(hBtn, @MainWaku) 'hBtnの表示枠内部品の、左上端と右下端の座標を表示枠座標で取得します。
Case 2, 12
MSReturnCode = GetClientRect(hBtn, @MainWaku) 'hBtnの表示枠内部品の、左上端(0,0)と右下端の座標を取得します。
Dim hBtn As HWND
Dim MainWaku as tagRECT
Dim PointXY as tagPOINT
hBtn = GetDlgItem(InhWin, IDnoGRALong): '表示枠内部品のハンドル(枠番号)を取得, hBtn=0でエラー
Select Case ActionType
Case 1, 11
MSReturnCode = GetWindowRect(hBtn, @MainWaku) 'hBtnの表示枠内部品の、左上端と右下端の座標を表示枠座標で取得します。
Case 2, 12
MSReturnCode = GetClientRect(hBtn, @MainWaku) 'hBtnの表示枠内部品の、左上端(0,0)と右下端の座標を取得します。
133デフォルトの名無しさん
2017/04/15(土) 11:58:30.77ID:e+ro1QoX 'スクリーン座標 → ユーザー座標に換算
Dim as tagPOINT PointXY1, PointXY2
PointXY1.X = InWaku.Left
PointXY1.Y = InWaku.Top
IF (ActionType = 1) Then
MSReturnCode = ScreenToClient(InhWin, @PointXY1)
Else
MSReturnCode = ClientToScreen(InhWin, @PointXY1)
End If
IF (MSReturnCode = 0) Then IError = 1
PointXY2.X = InWaku.Right
PointXY2.Y = InWaku.Bottom
IF (ActionType = 1) Then
MSReturnCode = ScreenToClient(InhWin, @PointXY2)
Else
MSReturnCode = ClientToScreen(InhWin, @PointXY2)
End If
IF (MSReturnCode = 0) Then IError = 1
IF (Ierror = 0) Then
InWaku.Left = PointXY1.X
InWaku.Top = PointXY1.Y
InWaku.Right = PointXY2.X
InWaku.Bottom = PointXY2.Y
Else
'エラー
End If
てな感じ。
Dim as tagPOINT PointXY1, PointXY2
PointXY1.X = InWaku.Left
PointXY1.Y = InWaku.Top
IF (ActionType = 1) Then
MSReturnCode = ScreenToClient(InhWin, @PointXY1)
Else
MSReturnCode = ClientToScreen(InhWin, @PointXY1)
End If
IF (MSReturnCode = 0) Then IError = 1
PointXY2.X = InWaku.Right
PointXY2.Y = InWaku.Bottom
IF (ActionType = 1) Then
MSReturnCode = ScreenToClient(InhWin, @PointXY2)
Else
MSReturnCode = ClientToScreen(InhWin, @PointXY2)
End If
IF (MSReturnCode = 0) Then IError = 1
IF (Ierror = 0) Then
InWaku.Left = PointXY1.X
InWaku.Top = PointXY1.Y
InWaku.Right = PointXY2.X
InWaku.Bottom = PointXY2.Y
Else
'エラー
End If
てな感じ。
134デフォルトの名無しさん
2017/04/15(土) 12:03:35.44ID:e+ro1QoX 表示枠や表示部品移動、大きさの変更について、
MSReturnCode = MoveWindow(hBtn, PointXY.X, PointXY.Y, WideLong, HightLong, True): '個別表示物の枠の寸法を定義, 再作画を指示
MSReturnCode = SetWindowPos(InhWin, HWND_TOP, 0, 0, new_width, new_height, SWP_NOMOVE)
MSReturnCode = SetWindowPos(hBtn, NULL, 0, 0, new_width, new_height, uFlags)
MSReturnCode = GetWindowRect(hBtn, @rw)
MSReturnCode = ScreenToClient(InhWin, @PointXY)
MSReturnCode = MoveWindow(hBtn, PointXY.X, PointXY.Y, new_width, new_height, True): '個別表示物の枠の寸法を定義, 再作画を指示
MSReturnCode = SetWindowPos(InhWin, HWND_TOP, LeftLong, TopLong, 0, 0, SWP_NOSIZE)
が関係しているらしいのだけれども、現在混乱して、作成中止中。
MSReturnCode = MoveWindow(hBtn, PointXY.X, PointXY.Y, WideLong, HightLong, True): '個別表示物の枠の寸法を定義, 再作画を指示
MSReturnCode = SetWindowPos(InhWin, HWND_TOP, 0, 0, new_width, new_height, SWP_NOMOVE)
MSReturnCode = SetWindowPos(hBtn, NULL, 0, 0, new_width, new_height, uFlags)
MSReturnCode = GetWindowRect(hBtn, @rw)
MSReturnCode = ScreenToClient(InhWin, @PointXY)
MSReturnCode = MoveWindow(hBtn, PointXY.X, PointXY.Y, new_width, new_height, True): '個別表示物の枠の寸法を定義, 再作画を指示
MSReturnCode = SetWindowPos(InhWin, HWND_TOP, LeftLong, TopLong, 0, 0, SWP_NOSIZE)
が関係しているらしいのだけれども、現在混乱して、作成中止中。
135デフォルトの名無しさん
2017/05/02(火) 10:03:18.39ID:qBaC0+Zg GFDL1.2の文書読んでいて気が付いた。
サブライセンス出来ないじゃん。
サブライセンス出来ないじゃん。
136デフォルトの名無しさん
2017/05/04(木) 11:36:41.54ID:+fiMgp6j そのままの意味で再許諾はできないよ
137デフォルトの名無しさん
2017/05/05(金) 06:45:28.53ID:tmTYNlNg かいとか。連投規制に引っかかった。
138デフォルトの名無しさん
2017/05/05(金) 07:11:15.97ID:tmTYNlNg >>128 の内容で一部抜けがある。
Line()等()の後ろに色々指定されている命令の場合、個別に処理して、参照だけで定義されていない
マルチステートにすると解釈が困難になる(:で切って1文1文を検索、表示は切る前の文節)ので、この手の命令を含むマルチステートを禁止した。
SelectCase, Sleep 文も同様な処理が必要になった。
MOD演算子の他にXOR演算子なども書き換えが必要であった。
ByVal, ByRef の間違いが1ファイルに2-3か所ぐらいあった。
引数として存在する物の使われていない変数が結構ある。これは、Function文として()がないと解釈できないので、無意味な引数をつけている。
これがエラーになるので、Type YearnInteger As Integer とYearn型変数を用意して検索の対象から外した。
Astring = ComDeclareListDir2 + "*.txt"
IF (dir$(Astring) <> "" ) then Kill Astring
が動かないみたい。Kill文に*?を使った場合にエラーになるみたい。
対応ルーチン作成中。
日曜プログラマーの場合には、多少実行効率が悪くても、多少処理が遅くても、
ソフト作製時間が少なくて済むように、一番手間のかかる、障害発見時間を短くて済むようにすることが必要。
Line()等()の後ろに色々指定されている命令の場合、個別に処理して、参照だけで定義されていない
マルチステートにすると解釈が困難になる(:で切って1文1文を検索、表示は切る前の文節)ので、この手の命令を含むマルチステートを禁止した。
SelectCase, Sleep 文も同様な処理が必要になった。
MOD演算子の他にXOR演算子なども書き換えが必要であった。
ByVal, ByRef の間違いが1ファイルに2-3か所ぐらいあった。
引数として存在する物の使われていない変数が結構ある。これは、Function文として()がないと解釈できないので、無意味な引数をつけている。
これがエラーになるので、Type YearnInteger As Integer とYearn型変数を用意して検索の対象から外した。
Astring = ComDeclareListDir2 + "*.txt"
IF (dir$(Astring) <> "" ) then Kill Astring
が動かないみたい。Kill文に*?を使った場合にエラーになるみたい。
対応ルーチン作成中。
日曜プログラマーの場合には、多少実行効率が悪くても、多少処理が遅くても、
ソフト作製時間が少なくて済むように、一番手間のかかる、障害発見時間を短くて済むようにすることが必要。
レスを投稿する
ニュース
- 中国の局長は「両手をポケット」で対峙 宣伝戦で国民に示す ★3 [蚤の市★]
- 中国側が首相答弁の撤回要求、日本側拒否 [夜のけいちゃん★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★4 [ぐれ★]
- 映画「鬼滅の刃」の興行収入急減、日本行き航空券大量キャンセル…中国メディア報道 [蚤の市★]
- 【音楽】Perfume・あ~ちゃんの結婚相手「一般男性」は吉田カバンの社長・吉田幸裕氏(41) 高身長で山本耕史似 [Ailuropoda melanoleuca★]
- 「タワマン天国」に飛びつく若者…SNSに転がる「成功体験」に続けるのか 湾岸エリアの業者が語った現実 [蚤の市★]
- 【悲報】高市効果で「1ドル=160円」が相場へwwwwwwwwwwwwwwwwwwwwwwwwwwwww 止まらぬ高市円安💥💥 [871926377]
- 小川彩佳アナ「高市総理はここまで影響が出ることを想像して発言したんでしょうか」高市ソルジャー「!!!!(シュババババ)」 [931948549]
- 【悲報】おこめ券、9.5億円配布分のうち2.4億が経費、うちJAが1億円中抜き🤗高市ありがとう [359965264]
- FGOで好きなサーヴァントがアビゲイル、北斎、楊貴妃なんだが
- 自閉症が「んなっしょい」と連呼するお🏡
- 【悲報】高市有事で日本に同調する国、1つも現れないwwwwwwwwwwwwwww [603416639]
