5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

【QBASIC互換!?】FreeBasic【GPL】

1 :デフォルトの名無しさん:2006/02/08(水) 15:23:06
FreeBasic
ttp://www.freebasic.net/

建てたいって人がいたので勝手に建てた
後はご自由にどうぞ
俺は知らん

2 :デフォルトの名無しさん:2006/02/08(水) 15:23:27
○フリーベーシックサイト
ttp://www.freebasic.net/

○動作
Windows・Linux・DOS

○一般的なHELLO WORLDの例
PRINT "Hello World!"
SLEEP


3 :デフォルトの名無しさん:2006/02/08(水) 15:23:41
○free basicとは
msQbasicとの互換を目指して作られた
フリーのベーシック言語です。

○ライセンス
free basicのライセンスはGPL
ライブラリのライセンスはLGPL
ドキュメントのライセンスはGFDL
意味は各自調べて欲しい。

○よくある質問
・WindowsGUIプログラムで出るコンソール画面の抑制
 -s をコマンドラインオプションに追加することで解決
・開発環境について
 FBIDEというIDEがあり、本家サイトにもリンクがあります。
 freebasicとセットになっているタイプもあり、
 これはインストールしてすぐに使えるものです。

○言語環境
 本体はUNICODE対応?で
 IDEにもJAPANESEの項目があるが
 文字化けしている模様。(xpで確認)


4 :デフォルトの名無しさん:2006/02/08(水) 15:24:11
関連スレ

【Delphi互換!?】FreePascal【GPL】
http://pc8.2ch.net/test/read.cgi/tech/1137051510/


5 :デフォルトの名無しさん:2006/02/08(水) 15:26:13
関連スレ2

【Winもいける】RealBasicってどう?【成長株】
http://pc8.2ch.net/test/read.cgi/tech/1062157124/

6 :デフォルトの名無しさん:2006/02/08(水) 16:03:23
またこのパターン?orz

7 :デフォルトの名無しさん:2006/02/08(水) 16:06:49
「俺は知らん」ばかりだな。
しかもせっかくパイレーツしたのに…。

8 :デフォルトの名無しさん:2006/02/08(水) 16:18:17
○オンラインドキュメント
ttp://www.freebasic.net/wiki/wikka.php?wakka=DocToc
○命令等のIndex
ttp://www.freebasic.net/wiki/wikka.php?wakka=CatPgFullIndex
ttp://www.freebasic.net/wiki/wikka.php?wakka=CatPgFunctIndex
○演算子
ttp://www.freebasic.net/wiki/wikka.php?wakka=CatPgOperators

9 :デフォルトの名無しさん:2006/02/08(水) 22:51:33
○訂正
>・WindowsGUIプログラムで出るコンソール画面の抑制
> -s をコマンドラインオプションに追加することで解決
-s gui
でした。
FBIDEの場合は
メニュー「View」→「Setting」
→タブ「FreeBASIC」→Compiler Command
<fbc> -s gui <filename>
でお願いします。

10 :デフォルトの名無しさん:2006/02/09(木) 15:48:37
早くも過疎の予感だが
私は諦めない。
FREEBASIC万歳!

現在FREEBASICとは
クラス無し言語であるが
OOPを実装することは可能。
Cなどでも使用されていた手段ですな。

数ヶ月後にはクラスが
搭載される可能性がありそうではある。

11 :デフォルトの名無しさん:2006/02/09(木) 15:57:23
クラスすら無いのか・・・・。

12 :デフォルトの名無しさん:2006/02/09(木) 15:59:35
ここまで来ると人はActiveBasicを選ぶ。
しかし俺は開発者が気に食わんのでこれでいい。

13 :デフォルトの名無しさん:2006/02/09(木) 16:02:42
せめてFreePascalくらいには実用的になってほしい。

14 :デフォルトの名無しさん:2006/02/09(木) 16:12:03
うむ。
では現在どこまでいけるのか
検証してみることにする。

ところでFreeBasicはDevCppの
C言語スタティックライブラリを
利用できると聞いたがどうだろうか。
帰宅したら検証してみる。
あとUNICODEもだ。
馬鹿にはコピペできないカーネルおじさんが
表示できればOKだ。

15 :デフォルトの名無しさん:2006/02/09(木) 20:35:53
BasicにOOPはいらん。 必要なのは手軽さだ。
OOPがやりたきゃ他の言語を選ぶ。

16 :デフォルトの名無しさん:2006/02/09(木) 20:53:01
>>15
うむ。しかし現にOOP搭載のBASICはある。
VB、AB、PureB。
俺はあえて選んだ。

17 :デフォルトの名無しさん:2006/02/09(木) 22:19:05
ぐふっ。
思ったよりIDEが使い物にならないようだ…。

18 :デフォルトの名無しさん:2006/02/10(金) 01:09:28
不勉強ですまんが、VBってクラス宣言できるの?
OOPだなんて初めて知った・・・。

19 :デフォルトの名無しさん:2006/02/10(金) 01:11:49
>>18
クラス定義できる
インタフェイス実装できる

が継承できない

20 :デフォルトの名無しさん:2006/02/10(金) 01:12:33
↑VB6な

.NETはC#と同等

21 :デフォルトの名無しさん:2006/02/10(金) 01:16:25
継承できなかったらほとんど使えないじゃんw
ソース整理するためにちょっと気の利いた構造体用意しましたって感じか。

22 :デフォルトの名無しさん:2006/02/10(金) 02:25:10
1ファイル=1クラスだからまさにそんな感じだね。

23 :デフォルトの名無しさん:2006/02/10(金) 15:58:03
GPLのコンパイラで作ったコンパイラ作ったとして
それはやはりGPLなのですか?

24 :デフォルトの名無しさん:2006/02/11(土) 00:58:47
>>23
それだと使い辛いので、例外規定を設けてる場合が多いよ。

25 :デフォルトの名無しさん:2006/02/11(土) 01:03:42
そのコンパイラは成果物扱いじゃないの?

26 :デフォルトの名無しさん:2006/02/11(土) 22:37:44
>>24-25
有難き幸せにござりまする。
私はこれでコンパイラを作り
さらにそのコンパイラでコンパイラを作って
資金洗浄でこそないが
オープンソース(GPL)に縛られない
フリーゲルなものをいつか
つくれたらばよかれりと。
海よりもふかい心のそこから思うとります。

27 :デフォルトの名無しさん:2006/02/11(土) 22:38:47
>>26
・・・ま、ガンバレ

28 :デフォルトの名無しさん:2006/02/11(土) 22:42:48
レス早!
俺の思うに専ブラ
そしてタブで開いていると見た。

29 :デフォルトの名無しさん:2006/02/11(土) 22:46:13
>>28
そんなことない

30 :デフォルトの名無しさん:2006/02/11(土) 22:53:53
そうか。
近日FreeBASIC関連な
サイト立ち上げてみようかと思う。

31 :デフォルトの名無しさん:2006/02/12(日) 07:38:17
>>30
期待してまつ


本家掲示板、
自称「中一ハッカー」の挑戦状がおもろいので、
つづきが見たいとおもふ。

32 :デフォルトの名無しさん:2006/02/12(日) 11:44:18
海外なら普通に中一ハッカー居そうだが
自称ってのはそういうことなんだろうな。

33 :デフォルトの名無しさん:2006/02/14(火) 10:45:48
ドイツ語のフォーラムに犬夜叉がいた。
ttp://www.freebasicforum.de/forum/viewtopic.php?t=268

34 :デフォルトの名無しさん:2006/02/15(水) 15:31:19
 FBIDEはFreeBasicのインストール先によってかコンフィグでエラーが出るので
下記の方いいかも。(でも何故かヘルプファイルが設定できない)
ttp://www.planetsquires.com/jellyfishpro_freebasic.htm

35 :デフォルトの名無しさん:2006/02/15(水) 15:37:05
FBもインストールされるバージョンのFBIDEはどうだった?(付属)
やはり同じ結果になる?

36 :デフォルトの名無しさん:2006/02/15(水) 17:38:29
>>35
過去に試した時はダメだったが、今最新版のZIPを試したら問題なかった。
でも、プロジェクト管理が無いようなので、やっぱり「jellyFish]の方が好き。

37 :デフォルトの名無しさん:2006/02/15(水) 17:39:19
ジェリーフィッシュってクラゲだったっけな。
今度試してみるよ。

38 :デフォルトの名無しさん:2006/02/16(木) 22:46:52
FBIDEには沢山のサンプルコードが憑いて来ることに気付いた。

39 :デフォルトの名無しさん:2006/02/16(木) 23:07:15
>>38
うそーFreeBasicのサンプルじゃねーの?

40 :デフォルトの名無しさん:2006/02/16(木) 23:32:05
質問の意図がわからないがFreeBASICのサンプルだよ。
うにこーどの各国のサンプルとかあった。
お。winsockのサンプルもある。
いろいろと楽しめそうだと思う。
解説サイト作成してるのだが
意外と出来上がりがしょんぼりいになりそうだ。

41 :デフォルトの名無しさん:2006/02/16(木) 23:43:52
>>40
やはり、それはFBIDEに付属のサンプルでは無くバンドルされているFreeBasicのサンプルだと...
あと、サンプルの起動に別途DLLが必要な物もあるので必要に応じて取得するべし。
:基本的にGCCなのでlibxxxxx.aはMINGW・CYGWINの物が利用可能だよ。

42 :デフォルトの名無しさん:2006/02/16(木) 23:47:10
同じだった?
ありゃま!

43 :デフォルトの名無しさん:2006/02/16(木) 23:51:49
ところでこのスレには何人くらい人がいるんだろうか?

*ちなみに俺はABのサイトでFB関連の書き込みした犯人ではない。

44 :デフォルトの名無しさん:2006/02/17(金) 00:22:09
どんな書き込み?

45 :デフォルトの名無しさん:2006/02/17(金) 00:33:17
uh○pの人のことです。
ABのフォーラムでFBとHSPの宣伝している人?という印象をうけた。
工作員ではないかと疑っている。

46 :デフォルトの名無しさん:2006/02/17(金) 00:46:53
あっ、それオレだ。...でも工作員ではないと思う。
HSP掲示板ではAB・FB・他言語の書き込みしてるし(宣伝)

47 :デフォルトの名無しさん:2006/02/17(金) 00:49:16
だ・か・ら
うんこは寝て食えってば〜
もう何回も言ってるじゃん♪

(´・ω・`)

48 :デフォルトの名無しさん:2006/02/17(金) 09:14:21
>>46
おまえかー!
あまりやりすぎるとPBのお(ryaさんみたいに叩かれるぞ。

49 :デフォルトの名無しさん:2006/02/18(土) 18:33:46
>>48
すまん!
ActiveBasicは純国産で富士市発だったので応援していたのだが...
夢から覚めるまで近寄らない事にするよ。

余談ですが、FBSL・FreeBasicは製作者が直接ユーザーに対応してくれ好感が持てる。

50 :デフォルトの名無しさん:2006/02/19(日) 14:23:31
とりあえずヘローワールドまでできた。
ttp://www.geocities.jp/pulse124124/freebasic/index.html

51 :デフォルトの名無しさん:2006/02/19(日) 14:44:20
>>50
GJ !! 期待age

52 :デフォルトの名無しさん:2006/02/19(日) 16:02:36
てs

53 :デフォルトの名無しさん:2006/02/19(日) 18:32:41
マジレスするとnが全角

54 :デフォルトの名無しさん:2006/02/23(木) 01:13:28
暇だな!何か無いのか?

55 :デフォルトの名無しさん:2006/02/23(木) 09:10:37
すまん。
サイトの方はとりあえず1.5の途中まで書いてある。
なんというか文面が可哀相なことになっているが気にしないでくれ。

56 :デフォルトの名無しさん:2006/02/25(土) 00:12:50
とりあえずここは保守だ。

57 :デフォルトの名無しさん:2006/02/25(土) 17:57:29
サイトを書きながらの保守。

このスレにネタを投下したいが
なかなか。

58 :デフォルトの名無しさん:2006/02/25(土) 18:40:45
ねた?。
BCXGUI・・・BCXの構文を模倣した物(パック)付属のソースコードが参考になる事と
GUIプログラミングが簡単に行える事とDLLでは無くLIB提供なので扱いやすい。
BCXGUIをググればヒットすると思う。

FreeBasicは色んなパックプロジェクトがあるので目的にあった物を早く見つけて習得しよう。
と言いつつ種類が多すぎて悩む。

最低、下記の定義ファイルには目を通しておいた方がいいと思う。

#Include Once "windows.bi"
#Include Once "win\commctrl.bi"
#Include Once "win\commdlg.bi"
#Include Once "crt.bi"

なんちゃって。

59 :デフォルトの名無しさん:2006/02/25(土) 20:56:20
すまん。ナタク作ってた。
BCX具具って見る。
ぐぐってから書き込めというかも知れんけど
スレ消費させてくれ。

60 :デフォルトの名無しさん:2006/02/25(土) 21:50:04
PRAKTICA BCX electronic
ですか。なかなか美しいカメラですな。
て違いますか。
BCXGUI…。
チェス…。
やってみる。

61 :デフォルトの名無しさん:2006/02/25(土) 22:02:18
つええ。

62 :デフォルトの名無しさん:2006/02/27(月) 00:27:50
なんかDAT落ちの予感!!!

63 :デフォルトの名無しさん:2006/02/27(月) 00:57:21
SUSE 10 にインストールしたんですけど、

fbc: Symbol `ospeed' has different size in shared object,
consider re-linking

と出ますよ。コンパイルは出来るみたいだけど。。。
気になる。

64 :デフォルトの名無しさん:2006/02/27(月) 06:07:30
64bitとlinuxは未知の領域だから。。。

65 :デフォルトの名無しさん:2006/02/27(月) 15:37:26
これって「完全に」QBASIC互換じゃないんだな

66 :デフォルトの名無しさん:2006/02/27(月) 15:45:05
完全ではないな。

67 :66:2006/02/27(月) 15:52:23
うわ。すまん。
話が膨らまなかったな。
ちうかQBASIC使ったこと無いし〜

68 :デフォルトの名無しさん:2006/03/02(木) 18:20:56
保守。

69 :デフォルトの名無しさん:2006/03/04(土) 23:52:33
やべ。落ちそうじゃん。

70 :デフォルトの名無しさん:2006/03/06(月) 01:50:46
70 Gets 意味は無いけどageとくか。

71 :デフォルトの名無しさん:2006/03/06(月) 14:26:59
長い目で見てくれ。

72 :デフォルトの名無しさん:2006/03/06(月) 18:52:50
FBIDEもjellyFishもソースをユニコードにすると
エディタが表示できねー!

73 :デフォルトの名無しさん:2006/03/06(月) 23:23:03
コマンドラインしかない???

74 :デフォルトの名無しさん:2006/03/10(金) 03:51:26
>>50
がんがれ

75 :デフォルトの名無しさん:2006/03/10(金) 13:53:48
おお。勇者よ。
あなたは落ちかけたスレの救世主様!

76 :デフォルトの名無しさん:2006/03/13(月) 22:46:30
>>74
がんがれ

77 :デフォルトの名無しさん:2006/03/14(火) 00:36:07
すまぬ。

78 :デフォルトの名無しさん:2006/03/15(水) 17:17:53
>>76
がんがれ

79 :デフォルトの名無しさん:2006/03/15(水) 17:28:10
プログラム板のスレなんて
一年放置しても落ちねぇよ。

80 :デフォルトの名無しさん:2006/03/15(水) 17:59:13
移転の可能性はあるがな。

81 :http://www.vector.co.jp/soft/win95/util/se072729.html:2006/03/18(土) 20:02:32
TextSS のWindowsXP(Professional)64bit化おながいします

もしくは64bitにネイティブ対応したテキスト置換ソフトありますか?




82 :デフォルトの名無しさん:2006/03/19(日) 01:54:26
>>78
がんがれ

83 :デフォルトの名無しさん:2006/03/19(日) 12:54:32
ここはがんがれ祭り会場ですね。

84 :デフォルトの名無しさん:2006/03/19(日) 15:14:04
「がんがら祭り」参加者募集中!詳細は>>82にお問い合わせ下さい。


85 :デフォルトの名無しさん:2006/03/19(日) 16:09:10
>>82
kwsk

86 :デフォルトの名無しさん:2006/03/21(火) 01:47:15
>>82
がんがれ

87 :デフォルトの名無しさん:2006/03/27(月) 22:33:52
>>86
定期「がんがれ」発動。

88 :デフォルトの名無しさん:2006/03/27(月) 22:47:10
>>87
定期がんがれ乙

89 :デフォルトの名無しさん:2006/04/02(日) 17:07:44
>>87
がんがれ
んがれが
がれがん
れがんが
がんがれ
んがれが

90 :デフォルトの名無しさん:2006/04/08(土) 19:18:39
がんがれ!俺!
サイトの更新まだか!俺!

91 :デフォルトの名無しさん:2006/04/10(月) 03:42:11
>>90
無理しなくていいよ。

92 :デフォルトの名無しさん:2006/04/10(月) 10:16:34
ブランクが長すぎた。
今リハビリ中

93 :デフォルトの名無しさん:2006/04/16(日) 17:22:04
保守しとく?

94 :デフォルトの名無しさん:2006/04/21(金) 13:47:25
FreeBASICのリソース担当が
GoRCだということに今更気付いたのであった。

95 :デフォルトの名無しさん:2006/04/21(金) 15:54:20
>>94
最初から/binにあるだろうに...

96 :デフォルトの名無しさん:2006/04/28(金) 12:09:07
ABスレで営業するのかYO!

97 :デフォルトの名無しさん:2006/04/28(金) 13:51:47
>>96
お互い暇だなwww

98 :デフォルトの名無しさん:2006/04/28(金) 13:55:19
暇とは失礼な!

99 :デフォルトの名無しさん:2006/04/28(金) 14:06:57
忙しいのかYO!

100 :デフォルトの名無しさん:2006/04/28(金) 14:07:24
うむ。忙しい。

101 :デフォルトの名無しさん:2006/04/28(金) 14:09:44
産婦人科医じゃ忙しいよな。w

102 :デフォルトの名無しさん:2006/04/28(金) 14:10:29
なぜわかった!!!

103 :デフォルトの名無しさん:2006/05/09(火) 16:44:34
5月最初の保守

104 :デフォルトの名無しさん:2006/05/11(木) 16:26:29
>>34
Version1.70で修正されました。

105 :デフォルトの名無しさん:2006/05/12(金) 02:00:56
ActiveBasicよりFreeBasicの方が
マイクロソフト系Qbasicを継承しているのでN88Basicに近いから好きです。


106 :デフォルトの名無しさん:2006/05/12(金) 02:21:33
このスレ二人しかいないと思ってたが
けっこういるんだな。

107 :デフォルトの名無しさん:2006/05/17(水) 16:49:46
もう大変、一人で2〜5人役演じるの。

108 :デフォルトの名無しさん:2006/05/17(水) 18:09:56
mjd?

109 :デフォルトの名無しさん:2006/05/18(木) 03:51:30
そろそろ名前空間が実装されクラスも実装されるらしいから期待age。

110 :デフォルトの名無しさん:2006/05/18(木) 10:56:18
お。オブジェクト来るのか!?

111 :デフォルトの名無しさん:2006/05/22(月) 23:02:35
またABスレで営業したやろ!

112 :デフォルトの名無しさん:2006/05/22(月) 23:07:24
>>111
俺じゃない!

ちょつと待って別人格呼び出して聞いてみるみるから。
でも最近ひとり増えて6人だから時間かかるけど。

113 :デフォルトの名無しさん:2006/05/23(火) 01:50:41
>>111
それ俺だ
悪かった

114 :112:2006/05/24(水) 01:42:23
>>111
俺の別人格では無いようだ。

「お詫びに:TheEditor 0.91にバージョンアップ」

マクロの無いエデイタだけど使ってね。

115 :デフォルトの名無しさん:2006/05/24(水) 23:59:49
TheText?TheEditor?

116 :デフォルトの名無しさん:2006/05/25(木) 14:56:06
QBasic++

117 :デフォルトの名無しさん:2006/05/25(木) 14:59:07
略してQ++?
Q#も欲しいところ。

118 :デフォルトの名無しさん:2006/05/25(木) 15:15:31
FreeBASIC SUPERが

119 :デフォルトの名無しさん:2006/05/25(木) 15:30:20
FreeBASICスプラッシュスターとか?

120 :デフォルトの名無しさん:2006/05/25(木) 15:33:09
えっ??????FreeBASIC Splatter?

121 :デフォルトの名無しさん:2006/06/01(木) 06:37:02
FreeBASIC RePureとか?
どんなプログラムでも12個のスレッドを作る仕様


122 :デフォルトの名無しさん:2006/06/01(木) 10:14:47
それはいいな。
スレッド使用に特化とかあこがれる。
そして使用しないときはCPUの占有率を抑えてくれ!

123 :デフォルトの名無しさん:2006/06/04(日) 22:55:55
暇だ何か無いの〜「ActiveBasicもどうぞよろしく」「TheTextもあるでYO]

124 :デフォルトの名無しさん:2006/06/05(月) 11:29:02
>>123
またABのスレに宣伝しただろ!
うざがられてるじゃねえか!

125 :デフォルトの名無しさん:2006/06/11(日) 16:50:29
FreeBasic 0.16 Stable がリリースされました。
某言語と比較して安心して継続開発が出来るからスバラシイ!

126 :デフォルトの名無しさん:2006/07/03(月) 19:38:49
First Basic

127 :デフォルトの名無しさん:2006/07/16(日) 08:58:54
公式サイト落ちてて見れない

128 :デフォルトの名無しさん:2006/07/16(日) 12:44:22
復旧してるっぽい

129 :デフォルトの名無しさん:2006/09/22(金) 22:55:50
ActiveBasicが敵前逃亡した今こそFreeBasicだ!

130 :デフォルトの名無しさん:2006/09/22(金) 22:58:10
まだ敵前逃亡ではない。事業が失敗しただけ。
ということは山ちゃんNEET?かフリーランサー?か

131 :デフォルトの名無しさん:2006/09/22(金) 23:22:13
>>130
ActiveBasicを基軸に安直な考えとブームに乗って起業した結果、
破綻(未踏の金:我々の税金分を損失)した状況は敵前逃亡
以前にActiveBasicには販促ツールに値する魅力が無かったと言う事で、
ユーザーの意見を聞けない自己中心的な性格がまねいた当然の結果であろう。

しかし、そこそこな知識を持っているのだからユーザーの意見を受け入れニーズにマッチした
製品を開発する謙虚な気持ちになれれば爆発的な復活も夢では無いが
叱咤激励していたユーザーの気持ちが理解できない人間性が...

132 :デフォルトの名無しさん:2006/09/22(金) 23:31:50
未踏の金着服したのかよ!!!111?

133 :デフォルトの名無しさん:2006/09/23(土) 00:07:47
うわ最低。
一年ももたないって何よ。

134 :デフォルトの名無しさん:2006/09/25(月) 19:53:06
日本語の情報が少な過ぎ。

135 :デフォルトの名無しさん:2006/09/25(月) 21:16:57
>>134
一般的な基本構文を知っていれば、
サンプル弄るだけで理解できる程度に簡単だから必要ないかも。(APIは必須?)

#Include "windows.bi"
CreateWindowEx(0,"BUTTON","",WS_SYSMENU Or WS_VISIBLE,0,0,320,240,0,0,0,0)

Do Until(GetMessage(@wMsg,NULL,0,0) = FALSE)
TranslateMessage(@wMsg)
DispatchMessage(@wMsg)
Loop

136 :デフォルトの名無しさん:2006/10/25(水) 20:49:26
HSPで使うDLLをFBで作ってみたら
・・・・・・すげえFB!簡単!ヽ(*`Д´)ノ
作者様これから使わさせていただきます

137 :デフォルトの名無しさん:2006/10/25(水) 22:45:58
>>136
[4445] Re: FreeBasicによる簡単なDLLの作り方 - 投稿者:秋房 投稿日:06/02/05(日) 15:47

138 :デフォルトの名無しさん:2006/10/25(水) 23:38:35
>>137
ActiveBasicで作るより簡単ジャマイカ。
ぬれもFreBasicでがんがってみる。

139 :デフォルトの名無しさん:2006/10/25(水) 23:57:07
>>138
どっちも同じようなもんじゃね?
ライブラリの差?

140 :デフォルトの名無しさん:2007/01/04(木) 06:46:28
FreeBasic万世!

141 :デフォルトの名無しさん:2007/02/24(土) 02:28:10
FreeBASIC_Medium.rarていうファイルはどこにありますか?

142 :デフォルトの名無しさん:2007/02/24(土) 06:03:59
拡張子.rarは圧縮形式だから...何が必要なのかわからない。

143 :デフォルトの名無しさん:2007/02/24(土) 14:25:47
最新のバージョン
FBIDE_0.4.6
FB_0.17b

本家見てもzipかexeだから
rarというと別のサイトの物かな?

144 :142:2007/02/24(土) 14:45:30
>>141
解ったよ
FreeBasic_Medium.rarはDailyUpdateだね普段
FreeBasic_Large.rarしかDLしないから気づかなかったよ。

ttp://ecowles.dyndns.org/
のFreeBASIC DailyUpdateの中にある

(出来ればFreeBasic_Large.rarをDLした方がincファイルの不備が解消されると思う)

145 :141:2007/02/25(日) 22:23:29
ありがとうございました。おかげで試すことができると思って少しいじって
みたんですがprint文だけのコードですら実行ファイルを生成できませんでした。

>>144さんは実行ファイルを生成できているのですか?こつなどがあれば
教えて頂きたいです。

146 :142:2007/02/25(日) 22:49:39
>>145
FreeBASIC_Medium.rarは日々更新されているβ版(CVS)なのでこれだけでは動作しない
試すだけならttp://www.freebasic.net/から0.16b StableをDLして試せるが
名前空間やクラスを扱いたければ上記から0.17b TestingをDLしフォルダーに上書きし
さらにFreeBASIC_Medium.rar等をDLしフォルダーに上書きして試す事が出来る。
(0.16のソースはそのままでは動作しない)

FreeBasic/start_shell.exeでシエルを起動すればパスを通す手間が省けるが
FBIDE:FBEDIT:JELYYFISH等のIDEを利用するとさらに簡便になる。

fbc test.bas
fbc test.bas -s gui -v test.rc

147 :141:2007/02/26(月) 22:11:48
今まで試したことを報告しておきます。0.17bTestingに上書きしてみましたがダメ
でした。0.16bStableインストーラ付き版に上書きして、FreeBasicWikiのクラスを
使っているコードをコピペしてコンパイルしたらうまくいきました。

いいかげんな予想ですが、リンカあたりがなかったのかな?と思っています。
詳しくは調べていませんが。

ここからはWindowsプログラミングの話になるので、ここでは聞きません。
>>142さん、今までどうもありがとうございました。

148 :デフォルトの名無しさん:2007/02/26(月) 22:19:06
そろそろエラー時に出たメッセージを晒してみようか

149 :141:2007/02/27(火) 03:02:59
>>148さん
CVS版を素で実行した時の、ですか?
はじめはas.exeがない、と怒られました。で、bin\win32にas.exeをコピーして
再度やってみたらFBIDEの下ペインには何も表示されませんでしたが
ステータスバーにCompile Failed!の文字がでました。
ViewメニューのShow logを見てみてもcompile Failed以外のメッセージは
見られませんでした。なので、fbcのソースでも見てみないと解らないかな?と
思いました。コンパイラの勉強がしたいとは思ってないのでソースはまだ
見ていません。

150 :デフォルトの名無しさん:2007/02/27(火) 13:32:56
bin\win32にas.exeが無い状況がわからない。
無かったのはasだけなのか?

ちなみに
gdb ar dlltool gorc ld i386pe.xも
そのフォルダに入ってると思う

151 :141:2007/02/28(水) 03:32:41
>>150に書かれている中であったのはi386pe.xだけでした(FreeBASIC_Medium.rarの
事です)。fbcがどういう順序でbin\win32の中のツールを呼んでいるのかが
解るかな?と思ってまずas.exeだけ入れてみたら>>149の状態になりました。
それで>>150の残りのツールやリソースもいれてみましたがダメだったので
0.16bStableに上書きしてEXEを作成することができました。

152 :デフォルトの名無しさん:2007/02/28(水) 04:21:27
>>151
周知な事実だと思いますが念のためFreeBasicのコンパイラーはGCCです
よってGCCの資源は利用可能です。

153 :デフォルトの名無しさん:2007/03/19(月) 14:28:09
ぐぬーライセンスか

154 :デフォルトの名無しさん:2007/03/24(土) 21:01:15
QB使いの俺が来ましたよ(´・ω・`)

155 :デフォルトの名無しさん:2007/03/24(土) 21:03:51
来ましたかサイバスター!

156 :毛の生えたブリーフ:2007/04/01(日) 16:49:25
最近,FbEDITを本家サイトのリンクからたどって落とし、使ってみました。
昔のvc++みたいな使い心地で、ダイアログベースのアプリが少しは簡単に
作れるguiエディタが付いています。でも、やっぱりwin32apiゴリゴリの
コーディングはきついので、もう少し楽できるライブラリを探しています。
Cのコードの移植がすごく楽なBASICであることをあらためて認識
しました。

157 :デフォルトの名無しさん:2007/04/02(月) 20:13:20
http://www.radasm.com/fbedit/index.html

これはなに?

158 :毛の生えたブリーフ:2007/04/02(月) 20:42:04
>>157
FreeBASICに特化した非常に高機能な統合開発環境です。
コードエディタ上でキーワードの色分けはもちろん、キーワードの頭文字が
自動的に大文字になったり、キーワードでF1を押すとWin32APIのリファレンスか
FreeBASICのHELPが自動的に立ち上がったり、自動入力支援機能があったりと
けっこう使い勝手のよい環境です。旧バージョンのVisualStudioみたいな
GUIエディタもあります。コントロールのプロパティが少ないのが難点ですし、
一部日本語が文字化けするところがありますが、個人的に80%は満足してます。

159 :毛の生えたブリーフ:2007/04/02(月) 20:42:58
このエディタでC/C++が使えたらな〜

160 :デフォルトの名無しさん:2007/04/02(月) 21:04:57
157の日本語化まだ〜

161 :デフォルトの名無しさん:2007/04/02(月) 23:07:42
J-cref用の設定ファイルを作ってください(><)

162 :デフォルトの名無しさん:2007/04/03(火) 14:16:53
何それ?

163 :デフォルトの名無しさん:2007/04/03(火) 14:39:14
ABマンセー

164 :デフォルトの名無しさん:2007/04/03(火) 18:46:45
他のスレかってに売り込むなw
確かに今はABスレ盛り上がってるけど

165 :デフォルトの名無しさん:2007/04/03(火) 21:46:36
wiki出来たら伸びが異常
ここも作ったら?

166 :デフォルトの名無しさん:2007/04/11(水) 00:51:51
今日はじめて使ってみたけど趣味的な言語だな〜。
これはまるやつはオタクじゃなくてマニアだね。
遊べるけど何に使うか迷うw


167 :デフォルトの名無しさん:2007/04/11(水) 10:42:54
>>166 正解! 大概Free言語を弄る香具師はマニアック。

168 :デフォルトの名無しさん:2007/04/12(木) 00:23:51
よく分かったな。
俺なんか今、趣味感覚で仕事用ツール作ってるとこ。

169 :デフォルトの名無しさん:2007/04/12(木) 01:29:32
>>167
Free言語というのはよくわからんが、GPLなコンパイラという意味?
FreeBasicは激しくマニアックで趣味性が高いと思うけど、gccは実用重視だと思う。
FreePascalもマイナーなわりに実用一辺倒だね。良くも悪くもただのObjectPascalの
GPL実装で新しいことは何もない。Delphiのソースをクロスコンパイルできるだけ。
その「だけ」がものすごいことなんだけど。

やっぱマニアックさでいうと圧倒的にFreeBasicだと思う。無理矢理捻出しないと
使い道が見つからないところがマニア心をくすぐる。

170 :デフォルトの名無しさん:2007/05/24(木) 20:35:52
qbasic互換って事はVBとも基本部分は互換では?

171 :デフォルトの名無しさん:2007/05/26(土) 20:52:00
マウスとフルカラー使えるの?

172 :デフォルトの名無しさん:2007/07/26(木) 12:37:56
>>169
Free PascalってGPLだっけ?

173 :デフォルトの名無しさん:2007/09/16(日) 16:51:55
FREE DOS? 上でも動くのでしょうか?

174 :デフォルトの名無しさん:2007/11/14(水) 18:06:11
>>173 そんなの関係ね〜

175 :本田:2007/11/26(月) 00:42:07
HX DOS Extender
http://www.japheth.de/HX.html
Many development environments which support creating Win32 console applications are compatible with HX, among them are:

* Open Watcom C++
* Digital Mars C++
* MinGW (uses GCC)
* CygWin (uses GCC)
* MS Visual C++, including the free version of MS Visual C++ Toolkit 2003
* Borland C++, including the free version of C++ Builder Command Line Tools
* LADSoft CC386
* Pelles C
* LCC-Win32 (C compiler)
* Borland Delphi
* Free Pascal (Win32)
* Pascal Pro
* Virtual Pascal (Win32)
* FreeBasic (Win32)
* PowerBasic
* MicroFocus Object Cobol
* XDS Modula II
* MASM, TASM, POASM, WASM, FASM, LZASM, NASM, GOASM, ...

176 :デフォルトの名無しさん:2007/11/29(木) 04:40:44
FreeBasic って結構良さそうだけど、
言語名に Free とか Basic が入ってるのってちょっとね…。

177 :デフォルトの名無しさん:2007/12/08(土) 23:12:20
その理屈で行くと
BASIC系はほとんどアウトなわけだが

178 :デフォルトの名無しさん:2007/12/12(水) 17:26:57
#include once "crt.bi"
printf( !" %d ", 100 )

C言語ライク
現在のFBのバージョンは0,18,2b

179 :デフォルトの名無しさん:2007/12/14(金) 00:14:31
ttp://www.petesqbsite.com/sections/tutorials/freebasic.shtml
勉強サイト発見した。

うん。カミングスーンだね。
またなんだすまない。許してもらおうなんて思ってない。
仏の顔も三度までっていうしね。
でもまずはQBASICの情報でも拾って落ち着いて欲しい。

180 :デフォルトの名無しさん:2007/12/29(土) 05:54:37
tmnn

181 :デフォルトの名無しさん:2008/03/01(土) 19:26:08
>>179
勉強サイトの紹介ありがとう。


182 :デフォルトの名無しさん:2008/04/11(金) 16:06:34
2008-03-29
Version 0.18.4 Beta

183 :デフォルトの名無しさん:2008/05/02(金) 21:45:48
2008-04-18
Version 0.18.5 Beta

184 :デフォルトの名無しさん:2008/08/27(水) 20:35:57
2008-08-10
Version 0.20.0 Beta

185 :デフォルトの名無しさん:2008/08/28(木) 02:20:08
いいから沈めよ

186 :デフォルトの名無しさん:2008/10/20(月) 08:55:18
こんなのあるんだ?

187 :デフォルトの名無しさん:2008/10/20(月) 13:41:02
>>186
あるんだよ
ABよりいいよ

188 :デフォルトの名無しさん:2008/10/26(日) 15:33:38
HSPは便利だけど、便利さと関係ないところで文法や動作がひどいから、
その代替になるならやってみたいけどぐぐっても情報無いな。
pos 0,0
font "メイリオ",16
mes "Hello, world!"
みたいな楽々プログラミングとはいかない?

189 :デフォルトの名無しさん:2008/10/26(日) 18:17:27
>>188
出来るけど
BASIC窓限定の話になる

GUIとか使う前提なら
そうはいかないかな

このスレの少し上の方に
お勉強サイトあるけど
QBASICの域を出てないと思う

本家のドキュメントとか掲示板
ヘルプファイルくらいしかないな

190 :デフォルトの名無しさん:2008/10/26(日) 19:05:29
> GUIとか使う前提なら
> そうはいかないかな
なるほど

> 本家のドキュメントとか掲示板
> ヘルプファイルくらいしかないな
やっぱそんな感じか

レスありがと。1年後くらいにまた様子見にくるよ!

191 :デフォルトの名無しさん:2008/10/26(日) 21:16:26
俺の予想だと
1年後もこんな感じ

192 :デフォルトの名無しさん:2008/10/29(水) 18:35:59
DOSでCOM3、COM4も使える?

193 :デフォルトの名無しさん:2008/11/02(日) 22:10:34
誰か鬼車のbiファイル作った人いない?
フォーラムでみっけた連想配列とコレがあればかなりの用を足せると思うんだけど

194 :デフォルトの名無しさん:2008/11/03(月) 15:52:52
鬼車どころかこのスレに何人いるのかと

195 :デフォルトの名無しさん:2008/11/03(月) 16:05:24
>>194
おるで〜

>>193
関数定義ぐらい自分でやれよVBと同じだぜ。

196 :デフォルトの名無しさん:2009/01/02(金) 16:45:58
qqbasicから移ってきても安心?いや、qqはいい環境だと思うけどさ、巨大配列とかしたいの。。。

197 :渡辺真:2009/01/10(土) 15:43:29
FbEditの日本語化
http://www.hi-ho.ne.jp/makoto_watanabe/FbEdit/

と、
FreeBasicの日本語化に着手しました。
http://makoto-wat.hp.infoseek.co.jp/freebasic/PgMetaLang.html

分からないことだらけなので、乞う、ご支援!





198 :デフォルトの名無しさん:2009/01/10(土) 16:11:08
期待

199 :デフォルトの名無しさん:2009/01/14(水) 22:23:09
>>197
すごい! 頑張れ!!

200 :sage:2009/01/19(月) 18:54:22
期待あげ

201 :デフォルトの名無しさん:2009/01/20(火) 22:00:57
>>197のリンク先何気に頑張っているんじゃないか?

ご支援って書かれると期待しているだけでいいのかっておもうけど期待してしまう。
FreeBASICがぐっと身近なものになったのは確か。

202 :渡辺真:2009/01/31(土) 14:02:16
マニュアル翻訳支援のお願い!

 少し翻訳を始めてみましたが、私の能力では、私が一生かかっても完了できないことが、分かりました。
http://makoto-wat.hp.infoseek.co.jp/freebasic/
 このままでは、お互い不幸ですよね。

 お得意の分野でも、関心のある部分でも、FBWiki の、どの部分でも結構ですから、翻訳原稿のテキストを、メイルでお送りください。
 また、記述内容の誤りなどのご指摘も、具体的な修正方法も合わせて教えていただければ、幸いです。

 このスレッドを使わせていただいて、意見の交換や、ノウハウの共有ができればよいと思います。

 どうぞ、よろしくお願いいたします。

203 :デフォルトの名無しさん:2009/01/31(土) 14:58:11
取り敢えず、>202が目がおかしいか頭がおかしいか、或いはその両方であることが判った。
どうみても色が変だ。

204 :デフォルトの名無しさん:2009/01/31(土) 16:19:22
色弱か

205 :渡辺真:2009/01/31(土) 18:42:03
さっそくご指摘いただき、有難うございます。
正解は、パソコン中毒性の弱視です。
どうぞよろしく。

206 :デフォルトの名無しさん:2009/01/31(土) 20:17:31
普通に白と黒ではダメな訳か

207 :デフォルトの名無しさん:2009/01/31(土) 21:56:16
ヘンな言い訳しなくていいのに。
別に色覚障害だろうがそうでなかろうが同じ対応だからさ。

208 :デフォルトの名無しさん:2009/02/04(水) 00:14:39
>>202
http://sakuratan.ddo.jp/uploader/source/date103904.png

209 :デフォルトの名無しさん:2009/02/04(水) 00:24:04
>>202
とりあえずですね、
英文とその下に色違いで機械翻訳を並べた形で作りなさい。
英文を参照できるように
翻訳の間違いの部分は、後から修正する方向で。
最初は、機械翻訳で100%完了の形に仕上げる事。

機械翻訳で50%くらいは良い訳が出て来る。残りを修正すれば良いでしょう。


210 :渡辺真:2009/02/07(土) 23:38:29
>>208
ご指摘いただき、有難うございました。
修正しました。
今後とも、よろしくお願いいたします。

211 :デフォルトの名無しさん:2009/02/08(日) 01:25:22
全体的なんだけど

function これは機能ではなくて、関数 と訳す
flag これは旗ではなく、フラグと訳す。専門用語として一般化されている。
可変タイプとあるが、変数の型の意味だろう。変数タイプ
expression は式、論理式を意味する場合が多い。

カタカナ単語は、無理に訳さず英語のままで理解される、
 間違いの訳よりも英単語の方がマシ。
機械翻訳の時に、単語登録を行うと精度が高くなる。


212 :渡辺真:2009/02/08(日) 12:22:00
>>211
教えていただいて、有難うございます。
訂正しました。

まだまだ先が遠いので、末永くご指導、お願いいたします。

213 :デフォルトの名無しさん:2009/02/08(日) 12:26:47
間違いはあるかもしれないけど
それでも日本語で最初から読めるってだけで敷居は低くなる。

俺は何の力にもならないぐらい無知だけど頑張ってほしいなぁ・・・

214 :デフォルトの名無しさん:2009/02/08(日) 13:40:45
レファレンス→ リファレンス

215 :デフォルトの名無しさん:2009/02/08(日) 13:47:16
statement
命令文
ステートメント

*声明は間違い

http://eow.alc.co.jp/statement/UTF-8/


216 :デフォルトの名無しさん:2009/02/08(日) 16:12:19
俺も期待してる
誤翻訳直すのも良いけど
コンテンツ増やしてくれ

217 :213:2009/02/11(水) 17:19:40
できればサイト製作者がダメだしを善意だと思うことを期待する。
できればダメ出しする人たちもサイトを育てることを期待しているように。

将来freeb basic使う人が世界中からアクセスするほど充実することをほんとに願う。

218 :デフォルトの名無しさん:2009/02/11(水) 20:10:18
善意だと思ってなかったら
指摘して欲しそうな眼差しでこちらを見ないだろう

期待してるが
世界中からアクセスされる事はないな
英語圏の方が情報あるし
日本だけで十分

219 :デフォルトの名無しさん:2009/02/14(土) 13:41:14
argument → 引数を意味する事が多い

220 :渡辺真:2009/02/15(日) 00:49:40
「2次元 描画関数」の項について、いちおう、日本語で埋めてみました。
チェックを、よろしくお願いいたします。
その他の項目でも、原稿を、お送りいただければ、幸いです。

なお、ご指摘いただいた項目について、全てをマニュアルに反映できるとは限りません。
この点について、ご了解下さい。

この次、5月の連休までは、まとまった時間が取れそうにありません。
悪しからず。

221 :デフォルトの名無しさん:2009/03/14(土) 01:52:47
はいはい

222 :デフォルトの名無しさん:2009/03/18(水) 09:13:03
80186で使えるFreeBasicってないでしょうか

223 :デフォルトの名無しさん:2009/03/18(水) 16:17:33
>>222
寡聞にして80186用のbinutilsの存在を知りませんが、もし用意できれば
FreeBASICのソースは公開されているので作れるのではないかと。
まぁ、80186で32ビット環境を構築するのは至難の業だと思いますが。

224 :デフォルトの名無しさん:2009/03/19(木) 00:57:13
>>222
freeBasicにDos版があるけれども80386以上でないと働きません。
80186の利用目的を提示してくれれば、ヒントを出せるかもしれません。

225 :デフォルトの名無しさん:2009/03/19(木) 12:21:39
DOS版つーか、DOSExtender版だね。サイトの書き方は紛らわしいかもしれない。

226 :デフォルトの名無しさん:2009/03/19(木) 12:36:15
>>224
HP 200LXとWin2k共用で使いたいんです。
Go32版とかDJGPP?とかですかね

>>225
ですね、ちょっとがっかりしました

227 :デフォルトの名無しさん:2009/03/19(木) 13:11:51
>>226
>223

228 :デフォルトの名無しさん:2009/03/19(木) 17:04:31
>>226
HP 200LXはわかったけれども、何を作るのかがわからない。
MS-DOS用のBASICを探せば、簡単に見付かるだろう。
MBASIC,BASCOM など、
但しライブラリが無いのでI/Oへのアクセスに工夫が必要でしょう。


229 :デフォルトの名無しさん:2009/03/19(木) 17:12:00
QBASICが使えると思う。試してみなさい。

230 :デフォルトの名無しさん:2009/03/19(木) 18:10:04
みなさんありがとう
MS Quick Basic 4.5の中古でも探すことにします

231 :デフォルトの名無しさん:2009/03/19(木) 19:21:17
QuickBASICは入手できないだろう

Windows95のCDの中にQBASICが入っている。

http://support.microsoft.com/kb/135315
このページの
Download Olddos.exe をDLしなさい。

その中に QBASICが見付かるはずだ、注意は英語モードでなければ動かない


232 :230:2009/03/19(木) 19:45:46
>>231
>QuickBASICは入手できないだろう

そうかもしれないですね
昨年オークションに出ていたのをがんばって落札すべきでした

233 :デフォルトの名無しさん:2009/04/09(木) 20:51:25
またそういうことを

234 :デフォルトの名無しさん:2009/04/16(木) 00:28:03
http://www.rkmath.rikkyo.ac.jp/~kida/ubasic.htm

235 :デフォルトの名無しさん:2009/04/18(土) 13:07:08
ダメ

236 :デフォルトの名無しさん:2009/05/03(日) 02:00:50
FreeBASIC v0.18.6b で Win32 の GFXを直したとあるが、逆に動かなくなっているのはなぜ?

237 :渡辺真:2009/05/10(日) 21:29:00
「標準のデータ型」の項について、いちおう、日本語で埋めてみました。
チェックを、よろしくお願いいたします。

この次、お盆の連休までは、まとまった時間が取れそうにありません。
悪しからず。
この次は、どこに着手しましょうかね。
ご意見を、お願いします。
(提案いただいた方は、協力していただく義務が発生します??)

238 :236:2009/05/24(日) 00:30:38
環境変数FBGFX=GDI, FBGFX=DIRECTX, FBGFX=OPENGL のうち、GDIだけは動作しました。
atomの945GでDIRECTXとOPENGLの設定が特におかしいとも思われないのですが、
その辺の設定の問題らしいことはわかりました。

239 :デフォルトの名無しさん:2009/07/31(金) 22:35:16
吉報?上げ。

>>237
 突然すまないです。Euphoria Version.3.1のマニュアル和訳している者ですが、やれる範囲という制限がつきますが引き受けましょうか?
つきましては現在の進捗状況を教えてください。それによってお手伝いするか決定します。水増しや虚偽は一切なしです。


240 :デフォルトの名無しさん:2009/07/31(金) 22:36:07
age忘れスマン。

241 :デフォルトの名無しさん:2009/07/31(金) 22:43:25
日本語マニュアル 途中
http://makoto-wat.hp.infoseek.co.jp/freebasic/


242 :デフォルトの名無しさん:2009/07/31(金) 23:18:49
>>241
 了解しました。とりあえず「序論、コンパイラ」まで引き受けておきます。完成は8月上旬をめどにします。
では来週月曜から作業を開始して、こちら[ ttp://d.hatena.ne.jp/ninetailfox/ ]のSandBoxカテゴリに順次投げていきます(この時点では何もありません)。
適当にRSSでチェック入れておいて、完成したら持って行ってください。利用条件はクレジット一個で結構です。以上よろしくお願いします。

243 :デフォルトの名無しさん:2009/08/01(土) 01:51:08
ここ2か月近くに渡り、スレッドの流れが止まって無理もないと思いました。

現在の作業状態で著作権の保有を宣言したり
2ちゃんスレの占用に抵触する行為はどうかと思います。

244 :デフォルトの名無しさん:2009/08/01(土) 02:07:05
原本はフリーだから、翻訳の独占権利も無い。
翻訳したければ自由に別系列で翻訳してよいと思う。

俺も半分くらい翻訳してあるけど、
標準のMS-BASICとほとんど同じだから 翻訳するまでも無い
ちょろっと見ればわかる。

245 :デフォルトの名無しさん:2009/08/01(土) 13:10:44
このスレの住人であれば、多かれ少なかれ
英語版マニュアルを読解していると思います。
また、スレが立ち上がってからほぼ3年近く
翻訳版が欲しいという意見は出ておりません。
原典の著者ではないのに、翻訳による著作権の保有を宣言するのであれば
翻訳提唱者として認めたくありません。

>>244
個人的に使う目的で、部分翻訳したものを公開する義務は無いと思います。

246 :デフォルトの名無しさん:2009/08/01(土) 14:05:30
ああ、おれの翻訳した部分はフリーで公開するかもしれんね。
なんたってフリーBASICだからな

日本語マニュアルはあったほうがよいと思う。
欲しい人はどんどん申し出る。
 ってゆうかここで質問した方がはやい。


247 :デフォルトの名無しさん:2009/08/01(土) 18:27:09
エキサイト翻訳利用規約
ttp://www.excite.co.jp/world/agreement/

248 :デフォルトの名無しさん:2009/08/01(土) 18:49:06
注意!
このレス上では、それぞれの内容が正しいかどうかについて言及しません。


『自分のサイトをYahooやgoogle、infoseekなどで自動翻訳して
英語バージョンをアップロードすること
(動的でなくて静的なページをサイトに載せる)ことは
規約違反、法律違反でしょうか?
抜粋ならば大丈夫でしょうか?』
ttp://q.hatena.ne.jp/1137731284

『Wikipedia:井戸端/subj/翻訳ソフト・翻訳サイトの利用』
ttp://www.google.co.jp/search?hl=ja&safe=off&q=%E4%BA%95%E6%88%B8%E7%AB%AF%2Fsubj%2F%E7%BF%BB%E8%A8%B3&btnG=%E6%A4%9C%E7%B4%A2&lr=

249 :デフォルトの名無しさん:2009/08/01(土) 18:57:12
意味不明だな、何を言いたいのかわからんよ

freeBasicには関係ないし


250 :デフォルトの名無しさん:2009/08/01(土) 18:58:46
(前レスの続き)

『Wikipedia:井戸端/subj/GFDL違反』
http://www.google.co.jp/search?hl=ja&safe=off&q=%E4%BA%95%E6%88%B8%E7%AB%AF%2Fsubj%2FGFDL%E9%81%95%E5%8F%8D&btnG=%E6%A4%9C%E7%B4%A2&lr=

251 :デフォルトの名無しさん:2009/08/01(土) 18:59:55
>>250>>248の続き)

252 :デフォルトの名無しさん:2009/08/01(土) 19:11:27
>>248の続き >>250は頭にhが残ってました)

『Wikipedia:井戸端/subj/GFDL違反』
ttp://www.google.co.jp/search?hl=ja&safe=off&q=%E4%BA%95%E6%88%B8%E7%AB%AF%2Fsubj%2FGFDL%E9%81%95%E5%8F%8D&btnG=%E6%A4%9C%E7%B4%A2&lr=

『クリエイティブ・コモンズ』(Wikipedia)
ttp://www.google.co.jp/search?hl=ja&q=%E3%82%AF%E3%83%AA%E3%82%A8%E3%82%A4%E3%83%86%E3%82%A3%E3%83%96%E3%82%B3%E3%83%A2%E3%83%B3%E3%82%BA+wiki&lr=&aq=0r&oq=

253 :デフォルトの名無しさん:2009/08/01(土) 20:03:30
>>245
 ...(^^;
 つ。翻訳著作権。二次著作物に該当する。
といいますか、あのサイトにおいて寄贈者が著作権放棄するという条項の記載はなくて、
さらにFDLにもCCにも、どこにもないはずですが。もっとも必要ないというのであればしかたない。
なんか不審な点が多いな...今回は寄贈やめておきます。別の形でまったりやります。もうしわけない。

>>247
 過負荷の項目が該当しそう。
あと、exciteはBizlingo系は思えないほど辞書腐っているのでお勧めしないよ。

254 :デフォルトの名無しさん:2009/08/01(土) 20:32:40
そもそも、プログラム言語をひとつも知らない人が翻訳できないでしょ
専門用語を知らないから 本すら読んでないと思う。
その人の勉強になるんだろうと思うけど

255 :デフォルトの名無しさん:2009/08/01(土) 20:47:31
>>253
今回の指摘は直接的には貴方宛ではありません。
但し、クレジット付きで加担した場合、加担した相手の権利表明の内容によっては
他者から同じ扱いを受けても止む無しかと思います。

翻訳著作権や二次著作物の該当については、単体の権利として
そう受けとめることが可能かも知れません。
但し、FreeBasicのマニュアル原典のライセンスについてきちんと理解した上で
著作権表記しても問題が無いことを証明できない限り、反感を買う原因にもなりかねません。

256 :デフォルトの名無しさん:2009/08/01(土) 20:55:52
硬いことを言うと、freeBasicマニュアルは一人が作ってる
そのひとから許可を取ればなんら問題ない。

257 :デフォルトの名無しさん:2009/08/01(土) 21:36:24
「一人が作ってる」ソースは何処ですかー?
ttp://www.freebasic.net/wiki/wikka.php?wakka=PageIndex

258 :デフォルトの名無しさん:2009/08/01(土) 21:43:37
なんだか、気持ち悪い奴が沸いてるな

259 :デフォルトの名無しさん:2009/08/01(土) 22:04:39
レス内容を吟味しないと不味い流れ方になってるね

260 :渡辺真:2009/08/13(木) 20:55:07
「画面関数」の部分を、日本語で埋めてみました。
http://makoto-wat.hp.infoseek.co.jp/freebasic/

共同翻訳者を募集します。

一節を翻訳するのに、結構な時間がかかるので、私の小さなモチベーションが、萎えてしまいそうです。
それでも、サンプル・プログラムを動かすと、新しい発見があったりして、翻訳作業を進めています。

個人的に勉強になることも、多々あると思います。
どうぞ名乗り出てください。


261 :デフォルトの名無しさん:2009/08/14(金) 00:11:15
working with 〜 って、「〜を使って何かいろいろとやる」 っていう意味なんだけど、「〜を使用する」「〜で使える」
とするのが普通みたいですね。
http://blog.creamu.com/mt/2007/09/2020_tools_for_working_with_fo.html で、「仕事で使う人のための」
というのは誤訳あるいは超訳ですね。

262 :渡辺真:2009/08/14(金) 11:37:55
>>261
早速ご指摘いただき、有難うございました。
修正しました。すっきりしました。

今後とも、よろしくお願いいたします。

263 :foi.americanprogress.org:2009/08/17(月) 17:49:45
自動焼人 ★ = 自動保守 ◆KAWORUKOFI = 自動保守#K9K?_D[L

名言集 その1
『アパッチ砲はワシが作った』

http://jbbs.livedoor.jp/bbs/read.cgi/internet/134/1229674638/5062
自分の管理するしたらばで借りた掲示板にて

> 5062 :自動保守 ◆AOIMAD.NZM [] :2009/08/16(日) 00:46:29 ID:nQYgq9jg0
> そもそも、アパッチ砲っていうのは、私が指揮官になった時代に私の先輩たちが導入して
> 先輩たちが命名したもの、っていうかまぁ、そういう砲は今まで存在してないから
> 名前つけなくちゃいけないしw
>
> ってことで、使っているうちに広まった名前なので、それが正式名称になるんじゃないかと。
>
> http://www.paradisearmy.com/doujin/pasok_apache.htm(俺の先輩が命名)
> http://www.paradisearmy.com/doujin/pasok_hping.htm(俺が命名?)

※注 「アパッチ砲」の正式名称は「Apache Jmeter」で、もちろん自動焼人の先輩が作ったものではありません


----------------------------------------------
この自動焼人 ★メールマガジンの配信停止をご希望される方は
http://qb5.2ch.net/test/read.cgi/sec2chd/1250169591/
にて自動焼人 ★までご連絡ください

264 :デフォルトの名無しさん:2009/08/18(火) 00:09:29
コピペ君って馬鹿だな、まで読んだ。

265 :デフォルトの名無しさん:2009/09/03(木) 10:20:38
BASIC繁栄時代

266 :デフォルトの名無しさん:2009/09/05(土) 19:36:21
>>393
つ COMB(n,r)

267 :デフォルトの名無しさん:2009/09/05(土) 19:37:55
>>266は誤爆スマソン

268 :渡辺真:2009/09/25(金) 10:56:20
「コンソール関数」と「ユーザ入力関数」の部分を、日本語で埋めてみました。
http://makoto-wat.hp.infoseek.co.jp/freebasic/

PRINT 文の中に直接日本語を書くと、コンソール画面には日本語を表示できることが、分かりました。
変数に日本語を入れたり、描画画面に日本語を表示することは、うまく行きませんでした。

FreeBASIC の英語マニュアルの原本は、約1,000ページ有ります。

私が一年間に日本語化したページ数は、約50ページの実績でした。
このペースで進めば、1,000/50=約20年間で完訳の予定です。

乞う、ご期待!

269 :デフォルトの名無しさん:2009/09/25(金) 11:37:19
20年後じゃ要らねw

270 :デフォルトの名無しさん:2009/09/25(金) 12:33:52
>テキスト・モードと描画モードの両方で、画面をきれいにします。

たしかにそうなんだが、 他のマニュアルではどのように記述されているのだろうか?

271 :渡辺真:2009/09/25(金) 23:28:12
日本語を変数に格納して、メッセージ・ボックスで表示できることは、分かりました。

http://makoto-wat.hp.infoseek.co.jp/freebasic/PgWstr.html#start

272 :デフォルトの名無しさん:2009/09/25(金) 23:48:39
expression は、 式

273 :渡辺真:2009/09/26(土) 10:24:05
>expression は、 式
有難うございます。以前にも教えていただきましたね。
忘れていました。適宜見直します。

日本語を変数に格納することですが、日本語環境なら単純に String 変数に格納できました。
http://makoto-wat.hp.infoseek.co.jp/freebasic/PgPrint.html#start
表示は、やはりコンソール画面のみで、描画画面はムリのようですね。


274 :デフォルトの名無しさん:2009/09/26(土) 22:45:52
CAST  型変換。C言語などのプログラミング言語で、変数の型を変換すること。

275 :デフォルトの名無しさん:2009/09/27(日) 07:03:10
>>270
具体例は挙げないけど、その部分で独自解釈は入れてないよ。

276 :渡辺真:2009/09/27(日) 07:57:16
>>274
教えていただいて、有難うございます。

「QBは、ユーザー定義型について、型変換をサポートしていません。このため、QBでは、ユーザ定義型を Print できません。」

私としては、文意を理解できました。
感謝いたします。




277 :275:2009/10/01(木) 18:22:07
>>270
原文を見ていて該当文の確認すべき所を間違えていたことに
気付いたので>>275の発言は撤回する。○| ̄|_

278 :渡辺真:2009/10/03(土) 00:01:45
いろいろご指摘いただき、有難うございます。

>>270
>たしかにそうなんだが、 他のマニュアルではどのように記述されているのだろうか?

>>254
>専門用語を知らないから 本すら読んでないと思う。

はい、そのとおりでございます。
そこで、「Tiny Basic」のマニュアルを読んでみました。
このマニュアルは、学校の先生が書いているだけあって、分りやすく良くできていますね。

有りました、クリアは「消去」と訳すとよいことが分りました。
FBのマニュアルの翻訳を訂正しました。
ご指摘いただき感謝いたします。

ところで、「Tiny Basic」のマニュアルに、フラクタルのプログラム例がありました。
http://www2.cc.niigata-u.ac.jp/~takeuchi/tbasic/TBIntro/tbasic.html

これを、FBにして動くようにしたものを、マニュアルに追記しました。
ご参考まで。
http://makoto-wat.hp.infoseek.co.jp/freebasic/PgPset.html#start

279 :デフォルトの名無しさん:2009/10/03(土) 15:37:51
QuickBasicのマニュアルは現在入手不可能だろうから、
VisualBasicのマニュアルを読みなさい。同じマイクロソフト系列だから
低水準コマンドは同じような扱いをしている。

280 :渡辺真:2009/10/09(金) 23:53:42
ユニコードが使えるようなのですが、私の環境ではうまく表示されません。

http://makoto-wat.hp.infoseek.co.jp/freebasic/PgMidfunction.html#start

マニュアルに書かれている結果にするには、どうすればよいか、教えて下さい。


それと、英数字と2バイトの日本語の抽出処理は、一応できたのですが、もっとスマートなやり方が無いのですかね。

281 :ninetailfox:2009/10/11(日) 15:53:43
>>280
FreeBasicに限らずcmd.exe上では正常に表示できません(Windowsの仕様)
非公式で方法はありますが、不安定なようです。諦めてShiftJISで処理するか、
内部をUnicode扱って表示するさいにShiftJISへ変換してからにしてください。

なおcygwinのバイナリであれば正常に扱えるはずですので、必要であればそちらをお使いください。

282 :デフォルトの名無しさん:2009/10/11(日) 16:30:39
つ DarkBASIC

283 :渡辺真:2009/10/12(月) 09:51:55
>>281
教えていただいて、有難うございました。

ninetailfox さん、
>とりあえず「序論、コンパイラ」まで引き受けておきます。

の方も、どうぞよろしく、お願いいたします。
期待しています。

284 :デフォルトの名無しさん:2009/11/01(日) 18:57:08
今の時代にFreeBasicって誰が嬉しいんだろう

285 :渡辺真:2009/11/28(土) 14:27:52
>>284

FreeBasic を嬉しいと思うだろう人を、一人見つけました。
「パソコンで宇宙物理学」を書いた人です。
http://www.kiyoshikawabata.com/support/
のサイトで配布されているプログラムは、FbEdit で、行頭に
'$lang: "qb"
を追加することで、動きました。

ただし、描かれるグラフが何を意味するかは、この本を読まない限り、意味不明ですね。

286 :デフォルトの名無しさん:2009/11/28(土) 19:52:58
FreeBasicは手続き型最後のBASICです。
その後はVBであり、OOPになった。

OOPに馴染まない人は手続き型を使う。
初心者は手続き型を好む、そして落ちこぼれが少ない。

OOPを否定しないが、OOPを使うのは簡単だが、良い設計は難しい
そして逆の思考をしなければならないから初心者は混乱する。


287 :渡辺真:2009/11/29(日) 12:03:51
LinuxとWindows用の、新しいFreeBASIC用のIDE(Integrated Development Environment:統合開発環境) が発表されました。
操作イメージの動画
1.3M demo2.avi
http://temp.mzws.de/stueber_ide_demovideo.7z
0.8M gui.avi
http://temp.mzws.de/gui_video.7z

詳細:
http://www.freebasic.net/forum/viewtopic.php?t=14795&start=0

FreeBASIC は生きている!

288 :デフォルトの名無しさん:2009/12/05(土) 20:04:04
1名無しフリークとして、去年まではこのスレが好きだった。
今年のスレの流れを見て、まともに辟易したけれど
他のスレで同じ真似をしないように気を付けようって反省が出来た。

289 :デフォルトの名無しさん:2009/12/09(水) 21:30:11
>>283
その件は俺の大嫌いな人種のせいでやる気なくしたんで
本当に渡辺氏とは無関係かつ別の機会にということで。

それ以前になんでこんなに進捗が遅いのか疑問ですが・・・(最悪3〜5ヶ月で草稿終わるかと)。

>>288
プログラミング言語にとってコミュニティの死滅と
言語自体のバージョンアップの遅延は致命的ですんで
必要ならスレ立て直したほうがいいかと。


290 :デフォルトの名無しさん:2009/12/10(木) 13:08:10
>その件は俺の大嫌いな人種のせいでやる気なくしたんで
気持ちがわからなくはありませんが、ここは2chです。
スレに関わっている限り、他者のレスで行動意欲を失ったとしても
自業自得の扱いになってしまいます。

291 :デフォルトの名無しさん:2009/12/10(木) 19:00:36
ライブラリの豊富さに轢かれてFBに手を出した初心者です。
DLLが同梱されていないんですが、DLL詰め合わせパックはどこでDLできますか?
ちょっと調べたんですが、必要とされるバージョンが微妙に古くて、紹介されてる場所に
もバイナリどころかソースコードすら残ってないことがあるんですが。

あと、日本語をグラフィック面に描画するのは、ビットマップフォントを用意して
Allegroで表示するのと、頑張ってOpenType2を使うのではどちらが楽ですか?



292 :デフォルトの名無しさん:2009/12/11(金) 00:39:37
多分、DLLはFreeBasicに含まれない外部のライブラリ呼び出しのことと思ってレスしてみる。
過去にサンプルをいじって知っている限りでは個別に該当するDLLを落とさないと使えないと思った。
微妙に古いものに関しては今のところ、根気良く探してみろとしか言いようがない。
それより気になったことがあるんだけど「DLL詰め合わせパック」なんて存在するのか?

日本語表示は表示したいフォントにもよるけど、外部のライブラリ使用が
前提だったら自力で何とかしてくれ。
TTF系統だったら適切なライブラリのソースを改造して専用DLLを再生成しないと
無理な気がする。
どちらが楽かと聞かれても、それ以外の方法で考えていた漏れには答えようが無い。

293 :デフォルトの名無しさん:2009/12/11(金) 03:28:50
Windows版を使っている人がいるならばば、外部ライブラリのDLLを揃えてる人が居る
はずだと考えたんですが、甘かったですかね?特定バージョンを要求され、かつ、
そのバージョンのみ入手困難というケースに何度も当たったので、ちょっと楽をして
みようと思ったんですが。

標準で用意されてないライブラリをソース探してきて自分でDLLをビルドするのは、
まあ、いいんですが、したあとにヘッダファイルをFB向けに修正する作業がだるくて
しょうがないです。AlFontを使えばフリーのTTF読込んでやるだけで日本語出力できて
他の環境もAllegroに統一できて楽かな、と思ってビルドしたまではいいんですが、
ヘッダーファイルの変換支援のプログラムが見あたらず。
手作業しかないんですかね、これ?

294 :デフォルトの名無しさん:2009/12/11(金) 14:04:51
確かに外部ライブラリの使用が本願だったらDLLを揃えようとするとは思う。
但し、利便性が高い分、有償配布に対して使用条件が付加されていたりする
DLLが少なくないのでFreeBASICの採用自体に躊躇するかも?

楽するって言えばFreeBASICが使えることそのものだと思っていたけど
機能拡張するのであれば作業量が増えても無理ないかと。

>手作業しかないんですかね、これ?
つ「マニュアル上で SWIG を検索」

295 :デフォルトの名無しさん:2009/12/11(金) 15:34:25
検索しましたが、SWIG自体はFBに対応してないようなので、自分でFB用のモジュールを
書いてFBに変換できるようにしなければいけないみたいですね。正直、手書きするのと
同じくらいだるいです。

各機種間で互換性を維持するために、使用する外部ライブラリのバージョンが統一して
ユーザが拡張できないようにするなら、動作に必要なDLL等の入手手段はキチンと提供
すべきだと思うし、そうではなくCと同じ手続きを踏んで拡張できる事をウリとするなら、それを
補助するツールは公開されるべきですよね。なんかちょっとガッカリ。

BasicならMain関数とか書かないでだらだらとメインループとか書いて楽できるぜ!
とか思ってたんですが・・・。なんかやりたい事をやる環境を整える内に、MinGWで
やった方が早くて楽なんじゃないかって思えてきました。

296 :デフォルトの名無しさん:2009/12/11(金) 17:36:42
日本語が必要なら、 DXライブラリ を改造して実装するのが良いと思われる。
日本製でないと日本語処理は難しいとおもう

テキストだけなら、コンソールの代替を探す。

297 :デフォルトの名無しさん:2009/12/11(金) 20:04:02
FB用のswigがあるんだよ
たしかforum辿って拾った

298 :デフォルトの名無しさん:2009/12/11(金) 20:12:32
あった
http://www.freebasic.net/temp/swig_fb.zip

299 :294 ◆Xid36FvXt. :2009/12/11(金) 20:38:15
>>295
単純な話、成果物の用途によってはFreeBASICに拘る必要は全く無いかと。

>BasicならMain関数とか書かないでだらだらとメインループとか書いて楽できるぜ!
えっ・・・・・?









(どうやら、漏れは釣られたようだ)

300 :デフォルトの名無しさん:2009/12/11(金) 21:40:32
時間の無駄と思わせるような発言をされたらレスしようとは思わなくなるわ

301 :デフォルトの名無しさん:2009/12/12(土) 13:41:51
どれだけ技術があっても面倒がり屋では相手にメリットは無い。
こういうスレの使い方をしていれば自然と廃れて行くだけ。

302 :デフォルトの名無しさん:2009/12/12(土) 14:06:21
>>298
ありがとうございます。おかげでものすごく楽になりました。

303 :渡辺真:2009/12/12(土) 22:53:24
>>289
> その件はやる気なくしたんで

それは、とても残念ですね。
先が長いことなので、また気が変わることがありましたら、お願いいたします。
ご指摘、ご指導の方は、これまでどおり、今後ともよろしくお願いいたします。

> それ以前になんでこんなに進捗が遅いのか疑問ですが・・・(最悪3〜5ヶ月で草稿終わるかと)。

そうですね。
5ヶ月で、稼働日数が、月20日間とすると、オリジナルのマニュアルが、約1,000ページなので、

1000ページ/(5カ月*20日)=10ページ(/日)
一日10ページというのは、妥当な見積もりですね。

ただ、私がこの仕事に従事できるのが、盆暮れとゴールデン・ウィークの、年間10日間程度に限られます。
従って、
100日間/10=10年間
かかると見込まれます。
気長にご支援いただきますように。m(__)m

304 :デフォルトの名無しさん:2009/12/13(日) 07:12:32
>>301
いや、楽をしたがることは他の人の役にも立つと思うのデスよ。
FB対応のSWIGなんかは、存在を教えていただかなかったら、おそらくずっと知らない
ままでしたし、リンク貼ってもらえた事で探し回る時間を大幅に節約できましたし。

経験や情報は、出来る限り共有して後に続く者の役に立ててこそ意味があるので、
こうやって母国語で掲示板に情報が残り続ける事は、それ自体、とても価値のある
事だと思いますよ。

さて、おかげさまでグラフィック面に日本語を表示するという当初の目標は、ほぼ
達成する事ができました。テキストを別ファイルに保存する、表示する度に文字列を
加工する、などの面倒無しに、関数へ直接SJISの文字列を渡して表示できるように
なったので、概ね、満足しています。

質問に答えてくださった方々と、FB対応のSWIGを見つけ出してきてくださった方に
感謝します。とても助かりました。

305 :デフォルトの名無しさん:2009/12/13(日) 17:17:19
自分の行為が正当であり、他の人を理解している主張をしたつもりでしょうが
私的観点では、長々と御託を並べているようにしか見えませんでした。
どう見ても、他の人の役にも立つどころか手間をかけさせているだけです。
必要最低限の情報源を確認しないで質問すると、人の多いスレだったら
一蹴されるか突っ込み三昧になります。

306 :デフォルトの名無しさん:2009/12/13(日) 18:51:30
はあ、そうですか。そういうつもりは全く無かったんですが、そういう風に感じて
しまったのなら、少なくとも、貴方にとってはそうなんでしょうね。申し訳ありません。

で、人の多いスレだったらとの事ですが、その仮定は全く無意味ですね。
事実としてFreeBASICはメジャーとは言い難く、日本語で読める資料もそれほど多くは
ありませんから、人の多いスレになる事は、まず、ありえませんし。

個人的にはぜひとも一蹴されてみたいですね。初心者はテンプレ入りしてる資料を読め、
お前の聞いた程度の内容はここに全て日本語で書いてある、とね。
初心者が手を付けるべき情報源がどこにあるのかを、わざわざ人に聞かなくて済むなら、
それより楽なことは無いですから。

英語ですがfreebasic.netのフォーラムの方が敷居が低そうなので、次からはそっちで
質問する事にします。

307 :デフォルトの名無しさん:2009/12/13(日) 19:55:14
最初っからフォーラム行けよ
グダグダうるせえヤツだな
てめえがテンプレ作るわけでもないくせに
swig教えてやったの俺だけど、お前何様なんだよ

308 :デフォルトの名無しさん:2009/12/14(月) 07:17:19
>少なくとも、貴方にとってはそうなんでしょうね
態度デカすぎて笑った。
他人のこと見下さないと生きていられないタイプなんだな。
長々と他人をバカにする長文(自慰)カいて、気は済んだのかい?

309 :デフォルトの名無しさん:2009/12/14(月) 16:46:17
少なくとも俺には役に立った

310 :デフォルトの名無しさん:2009/12/15(火) 00:19:00
>>306
問題は、回答者の皆さんに不要な面倒をかけたか否かであって
人の多寡には関係無いと思います。
真の突込みどころは、FreeBASICの初心者を自称していたことであり
マニュアルを熟読することやフォーラムの情報を把握すること自体に
FreeBASICの初心者も熟練者も無いと思います。
それ以前に、プログラマとして、ライブラリをカスタマイズするスキルは
全く初心者の範疇にありません。

次回からfreebasic.netのフォーラムへ行くのであれば
ご健闘をお祈りします。

311 :デフォルトの名無しさん:2009/12/15(火) 01:08:28
FBのフォーラムでトピック立てて>>291>>293>>295みたいな流れで書き込みする・・・
のを想像したら人事ながら鳥肌が立ってしまったw

312 :デフォルトの名無しさん:2009/12/20(日) 00:39:40
>>310
はて?不要な面倒とは何でしょうか?
質問に関する情報について知っている人間が、知っているという事実を自発的に示し、
その情報を必要とする人間に伝える事が、不要な面倒である、と?

情報について知らない人間や、答える気のない人間が答えることは、ありえません。
自発的に答えた人間なら、質問に答えるという自由を選んだのは回答者自身ですから、
この選択に伴う作業について、不要な面倒などと表現する事はあり得ません。
自分の自由意志で選択した行動について、してやってる、させられてる、などと感じる
人間は存在しませんから。居たとしたらそれは「恥知らず」と呼ばれるべきモノです。

313 :デフォルトの名無しさん:2009/12/20(日) 00:40:00
さて、マニュアルを熟読する事は初心者も熟練者もない、とのことですが。
今回の事に関して言えば、マニュアルにはヘッダファイルの変換にFB対応させたswigを
使用したという記述はありますが、肝心の所在については記されていません。

従って、FreeBASICで添付されてない外部ライブラリを使いたいと望む日本人の大半は、
たとえマニュアルを熟読していたとしても、ここでつまづきます。この後、swigの情報
を得ようとweb検索をしても、FBに対応していない普通のswigに関するページばかりが
引っかかりますから。

フォーラムで検索かけると、英語圏の初心者さんのおかげで、有用なリンク集と共に
あっけなく見つかりますが、ダウンロードページに無い物を、フォーラム内にあると
思って探すというのはなかなか難しい事です。纏めたという事は、向こうの人でも
わりと知らなかったり、見つけられない事が多い、ということなんでしょう。
ttp://www.freebasic.net/forum/viewtopic.php?t=14481

おや、初心者向けのリンク集なのに、今回私が知りたかった情報に関連したものが
たくさんありますね。どうやら向こうの人達は、初心者の範疇に無いとは考えては
いないようです。

314 :デフォルトの名無しさん:2009/12/20(日) 00:40:38
>>307
質問と回答の後にテンプレが出来上がっていくんですよ。
どこかの特定の誰かが作るのではなく、やりとりがあった結果、自然に出来上がっていく
ものです。要は、テンプレが出来上がる程度にはFreeBASICが使われていない、という
現状について述べただけにすぎません。

私はここに書き込んでる人間に作れだの何だのと命じたりはしませんし、そうして
もらう事を期待したりもしていませんよ。もちろん、より良い環境を求める人間が、
ボランティア精神を発揮して作るというのなら、感謝しつつ、その恩恵に与りますが。

ところで、一方的に下品な罵倒を始める貴方は一体何様ですか?
貴方がswigの情報を伝えてくれたから、それが一体何だと言うんです?
貴方のボランティア精神には感謝しますが、それは貴方がチンピラじみた行動を
取ることの免罪符にはなりえません。

大体、質問に応じて知っている情報を掲示板に書き込む、ある特定のソフトウェアの
所在を示す、その程度の事が負担になる程度の人ならば、無理に書き込まなくても
いいんですよ?誰も貴方を指名して、貴方の負担になる行動を強要したりはしません。
それを負担に感じない人にまかせてください。理解できましたか?



315 :デフォルトの名無しさん:2009/12/20(日) 00:41:04
>>308
おや?それはつまり、貴方は自分が見下されたように感じた、という事ですか?
私は、見下すだの見下されるだのといった必要の無い視点は、持ち合わせては
おりません。表現や言葉の選び方には十分気を付けていましたが、そのように勘違い
させてしまったとしたら、それは、なんというか、非常に残念に思います。

ところで、直接的な罵倒をする事で、少しは気が済みましたか?



316 :デフォルトの名無しさん:2009/12/20(日) 10:17:37
完全にムキになっちゃってるw
大笑いしたw

317 :デフォルトの名無しさん:2009/12/20(日) 10:20:49
ああ、俺は>>308だけど、
君に直接的な罵倒をする事で大笑いさせていただいて、すごい気が済みました。
ありがとうございます。
いや、期待以上の反応で嬉しいよ。

318 :渡辺真:2009/12/20(日) 14:12:56
私は周知のとおり「初心者」ですが、話題のswig_fb.zip のFBでの使い方について、お時間ができた時点で結構ですので、具体例で教えて下さい。
私が理解できれば、日本語マニュアルにも反映させたいと思っています。


319 :デフォルトの名無しさん:2009/12/20(日) 21:43:32
>>318
応援する。
とりあえず「がんばれ」って言葉で許してねw

320 :デフォルトの名無しさん:2009/12/22(火) 18:29:57
ここは元々2ちゃんねるのスレであってFBフォーラムの延長でも出張所でも無い。
単に要望があって立てられたスレの一つでしか無い。

321 :310:2009/12/23(水) 14:44:25
>>316-317
こちらに来たレスは、突っ込みどころ満載でした。
それでも、このスレの現状を見る限り、持論を堂々巡りさせるような流れは
好ましくないと思います。従って、当面の間は様子見します。

322 :デフォルトの名無しさん:2009/12/23(水) 18:49:22
はいはいお疲れちゃん。
突っ込みどころ満載なら遠慮なくつっこめばよかったのに。
まぁ真面目に取り合ったら負けだと、顔真っ赤にしながら必死にがんばったのは認めるよ。
その結果がそのレスなのは流石に期待外れだが。
ダメなやつだなあ、お前は。

323 :デフォルトの名無しさん:2009/12/28(月) 02:18:41
┌─────────────────────────┐
│                                            │
│  このレスのみ釣られた人が使う為に予約されています。  │
│                                            │
└─────────────────────────┘

324 :デフォルトの名無しさん:2009/12/28(月) 18:33:30
で、みんな何が不満でスレの流れを止めようとするわけ?

325 :デフォルトの名無しさん:2009/12/29(火) 00:13:56
┌─────────────────────────┐
│                                            │
│  新しい話題に移行する為のレスは開放されています。  │
│                                            │
└─────────────────────────┘

326 :デフォルトの名無しさん:2009/12/29(火) 02:08:41
>>303
宇宙英雄ローダン・シリーズを生涯の趣味で全巻訳すより小規模ですから、いくらなんでも10年もかかりませんよ。
原因はメソッドやワークフローに問題があるかと(毎日やることを想定していない気がしますが)。

もっとも、興味を失っていて素直に言い出せなかったり本当に忙しいのでしたら
一度翻訳から引退して充電したほうがいいと思います。

>>324
 ヒント:このスレの使い方。あと、なんか違和感を感じる。

327 :デフォルトの名無しさん:2009/12/29(火) 19:00:50
>>326
彼に協力することは、彼を主導の代表者として認めることになります。
但し、FreeBASICのライセンス上、彼を介する必然性は全くありません。
マニュアルの日本語化に関しては、みんなで協力作業したければみんなで協力作業すればいいし
各自で翻訳したければ各自で翻訳するという意味合いで良いかと思います。

328 :デフォルトの名無しさん:2009/12/31(木) 21:10:21
未完成 和訳マニュアル

http://www1.axfc.net/uploader/He/so/258946

329 :デフォルトの名無しさん:2009/12/31(木) 21:52:49
>>328
お疲れ様です。配布方法を含めて、出出しとして上出来だと思います。
wikiを使わないのであれば、同じようにHTML書き換えを考えていました。
早速、加勢させていただきます。
そのうち編集履歴が必要になる思いますが、最低限度として
自分が作業した分の加筆修正リストは、その都度作成します。

ダブルブッキングが発生した時は各々で好きなものを使ってもらう形で
良いかと思います。

330 :デフォルトの名無しさん:2009/12/31(木) 22:05:19
忘れてたので、補足
日本語ファイルが文字化けする時は、htmファイルの冒頭にこの一行を追加してださい。

<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">



331 :デフォルトの名無しさん:2009/12/31(木) 22:12:55
了解しました。

332 :331:2009/12/31(木) 22:17:07
ダブルブッキングと言うより同一ページ編集者の同時発生でした。

333 :デフォルトの名無しさん:2009/12/31(木) 23:23:46
来年に持ち越さないように飛び火レスしとく。

>おや、初心者向けのリンク集なのに、今回私が知りたかった情報に関連したものが
>たくさんありますね。どうやら向こうの人達は、初心者の範疇に無いとは考えては
>いないようです。

freebasic.net Forum Index (フォーラムの索引)
 I
...+----- Beginners (初心者)   
 I.    New to FreeBASIC? Post your questions here. (新参ですか?質問はこちらへ)
 I.    ttp://www.freebasic.net/forum/viewforum.php?f=2
 I
...+----- Libraries (ライブラリ)
 I.    External libraries (GTK, GSL, SDL, Allegro, OpenGL, etc) questions. (外部ライブラリの質問)
 I.    ttp://www.freebasic.net/forum/viewforum.php?f=14
 I          I
 I         ...+---- Basic questions about libraries (ライブラリに関する基本的な質問)
 I          I.    ttp://www.freebasic.net/forum/viewtopic.php?t=14481
 I          I
 :          :
 :          :
 :          :

流石にFreeBASIC初心者とライブラリ初心者は同一にならないと思うよ。
あと、フォーラム内の一つの記事を初心者向けのリンク集扱いにする解釈はどうかt(ry

334 :デフォルトの名無しさん:2010/01/02(土) 03:07:01
329です。
加勢方法についてですが、翻訳者同士による混乱防止の為
328氏の作成したファイルへの修正加筆(上書き追加)は行わないまま
全く別のファイルとしてアップする予定です。
複数人の翻訳により、どうしても噛み合わない部分が出て来ますので
各々で好きなHTMLファイルを組み合わせてもらう形式にしたいと思います。

335 :渡辺真:2010/01/16(土) 11:34:10
FreeBASIC 日本語マニュアル に 文字列関数 の翻訳を追加しました。
http://makoto-wat.hp.infoseek.co.jp/freebasic/CatPgString.html

336 :デフォルトの名無しさん:2010/01/16(土) 20:54:18
オレも今328氏のをもとにFreeBasicの日本語翻訳してるよ
ついでにhtmlも書き直してる
さらにrrlichtWrapper for Freebasicもやってるよ
気長に待っててねん


337 :デフォルトの名無しさん:2010/01/16(土) 20:59:38
Irrlicht062は完了、手抜きだけどね。

338 :デフォルトの名無しさん:2010/01/23(土) 15:30:25
もう遅いかもしれないが、翻訳メモリー使うようにすると訳者間で辞書を
共有できるようになるから効率上がるよ。
かといってTRADOS高いんでOmegaTやSunGloss使うといいかと。

339 :デフォルトの名無しさん:2010/01/23(土) 18:29:08
>>338
OmegaTを使ってみたけど
htmlにした時に、色を変えて別の行に原文を表示したいんだよね
後で手作業になること考えるとかなりめんどくさい
OmegaTで<翻訳する段階で、//: 〜 ://こういった記号で原文を囲って
htmlエディタで<div>とかに置き換えとかやればいいんだけど
OmegaTだと、ピリオドで区切られた一文ずつの翻訳作業になるから
その都度コピペして、段落の最後に持ってかなきゃならない
使わないで手作業翻訳とどっちが効率いいかなあ

辞書とか便利だから、OmegaT使ってこうと思う
教えてくれてありがとう

他の訳者は手作業なんかな?

340 :デフォルトの名無しさん:2010/01/23(土) 19:33:53
2000円の翻訳ソフトで事足りる、
自動的に処理してくれるし、専門用語だけ単語登録すれば読める形になる。
全部を読んで手直しをするから同じ事だけど、整形処理と単語を調べるのが楽になる。
専門分野だと、専門知識と専門書の読書量の方が重要だと思う。


341 :デフォルトの名無しさん:2010/01/23(土) 23:05:23
>>340
翻訳自体はさほど苦にならないんだよね
英語の勉強も兼ねているし
OgmaTで単語登録出来るし、似た文章を
ピックアップしてくれるし
OgmaTと機械翻訳、辞書、ネット検索で
なっとかなりそうだ
といっても、1週間で13ページ行くか行かないかだから
毎日やっても1年以上かかるなあ

342 :デフォルトの名無しさん:2010/01/24(日) 00:34:54
2年間で出来上がるのなら それでかまわんよ

343 :341:2010/01/29(金) 00:45:12
http://www1.axfc.net/uploader/Sc/so/77479

試しにヘルプファイルを作成してみたので、未完成ですがうpしときます
やったことは:
htmlファイルの文字コードをUTF-8からSJISへ変換
英文を色分け
htmlの表示のcharasetをUTF-8からSJISへ変換
Chm形式へパック化

これで英文参照できて、文字化けもせずに日本語による検索も出来ると思う
なるべく、用語とかは既存のに沿った形にしているつもりですが
おかしな訳文とか表示があったら、指摘してください

今後の予定:
翻訳の継続
アスキーコード表がSJISに変換できず、また文字化けしてしまうので
Wikiから正しいアスキーコード表を画像にして掲載するつもりです
一部文字化けする文字が使われているのでそれの変更
htmlの書き直しもしてたのですが、めんどくさくなったので止めました

翻訳している方でOmegaTを使用しているなら、用語集と訳文のすり合わせして
いただくとありがたいです



344 :デフォルトの名無しさん:2010/01/29(金) 01:12:15
良いと思います

.chmの生は別のPCに送ると読めなくなるんですよ、
だから、.zipでください。

ASCIIコード表はそのページだけ元のままで良いと思う、日本語の表じゃないし
むりやり漢字にして中国語のようなのも読みづらいとかある


345 :デフォルトの名無しさん:2010/01/29(金) 02:54:24
>>344
ありがとう
参考になったよ

改めて作成してみた:
一部へんな漢字を修正
表示のおかしい所を修正
zipに圧縮

今後の課題:
訳文の表記がバラバラであったりするので統一する
意味不明な訳文もあるので、通じるようにがんばる
原文の作者(イギリス人だと思う)の書き方が独特でも泣かない

FreeBASIC日本語ドキュメント(chm形式)
http://www1.axfc.net/uploader/Sc/so/77524.zip

もうこんな時間なんだ
というわけで作業は明日へ
おやすみなさい

346 :デフォルトの名無しさん:2010/01/29(金) 13:22:11
>>344
エクスプローラーでプロパテイのチェック外せばいいんよ。

347 :デフォルトの名無しさん:2010/01/31(日) 15:50:05
目次だけちょっと眺めて

優先演算子 / Operator Precedence
なんだろう、演算子の優先順位かな?

変数の存続期間 / Variable Lifetime
変数の寿命のことだろう

配列索引 / Array Indexing
インディックス、添え字だね。

348 :341:2010/01/31(日) 17:00:14
>>347
最初、

演算子の優先順位
変数の寿命
配列インデックス

としていたんだけど、言い回しがなんか変だなあと
独断で変えた奴ばかりだったりするw
これでいいんだ、戻しておこう

ありがとう、参考になった

翻訳ペースがそれなりに安定してきたんだけど、意味不明な訳が多々ある
自分が理解している内容であれば意訳できるんだけどね
あと、句読点とかの使い方や変な言い回しとか、
人称をわざと抜いているんだけどたまに入っていたりなど、おかしな点が沢山ある
客観的に見ないとね

翻訳に限らず、第三者からの目ってのがものすごく大事だと改めて考えさせられた
というわけで、ご指摘あればどんどんやってください

今後の課題:
人がいなくてもくじけない







349 :デフォルトの名無しさん:2010/01/31(日) 18:39:04
訳語を決めるのは訳者の役得だから
説明できれば良いと思う。
私は基準があると思う、「高橋麻奈やさしいC」を基準にする。
書籍に使われる用語は裏付があるし、ネットでもヒットする。

訳した当初は良いと思っても、3ヶ月くらいして忘れた頃に見直すと
違うな、とか思ってしまう。良い訳語(単語)が見つからなかったりとかある。
素人に解らせる説明はなかなか難しい。


350 :デフォルトの名無しさん:2010/01/31(日) 20:16:17
>>349
そうですね
何かを基準にするのは大事だね

自分は、ネット検索でのヒット数と自分自身の雑多な知識を基準としているけど
知らないことはネット検索に頼っているから

もっと良い語句があるんじゃないか、もっと分かりやすい語句があるんじゃないか

といった感じで、躊躇してしまう
それだと進まないから、暫定しておいて暫くしたら読み返すの繰り返しをやってる
そうすると、限界が出てくるので第三者の目が必要になる
それこそ、原文にある「Work in progress」なわけですよ
だから、具体的に指摘してもらえると、なるほど!となる

というわけで、一定期間で訳文公開していきますので、指摘してもらえたらうれしいです


351 :341:2010/02/07(日) 02:28:13
FreeBASIC日本語マニュアル(未完成)
http://www1.axfc.net/uploader/Sc/so/80361

作業内容:
・翻訳
・原書の表示が、横スクロールバーが出たりして崩れていたので
 スタイルシートを調査、.chm形式でも.html形式でも
 表示が崩れない入れ子状に変換した(結構めちゃくちゃな指定してあった)
・今までの翻訳の微調整
・UTF-8からSJISへ変換
・.chm形式へパック化

過疎っていますが、精力的に翻訳作業は続けます
翻訳の指摘、要望等あれば、お願いします






352 :渡辺真:2010/02/07(日) 10:26:13
>OmegaTやSunGloss使うといいかと。

こんなツールが有ることを知りませんでした。いまダウンロードしました。
テキスト・ファイルの翻訳には使えるかもしれませんね。
有難うございます。


>他の訳者は手作業なんかな?

私のやり方をご紹介します。
私は、原稿として、FB-manual-0.20.0-chm.chm を Decompile した html ではなく、Wiki の html をベースに使っています。
chm 版を使わない理由は、
1.chm 版は、2008年8月時点のもので、その後の更新が織り込まれていない。
例えば、標準データ型 / Standard Data Types の 誤:Integral types 正:Integer types の、英語のつづりのミスなど。
2.マニュアルの更新時点(Page History)と、ページの著作者(Owner)が表示されない。
からです。

353 :渡辺真:2010/02/07(日) 10:28:25
私のやり方は、以下です。
1.Wiki のURL を、excite に入れて、機械対訳を作ります。例えば、
http://www.excite-webtl.jp/world/english/web/?wb_url=http%3A%2F%2Fwww.freebasic.net%2Fwiki%2Fwikka.php%3Fwakka%3DCatPgUserDefTypes&wb_lp=ENJA&wb_dis=3

2.この対訳のブラウザの上で、マウス右クリックして、「ソースの表示」をします。
3.このソースを、拡張子html で自分のパソコンに保存します。
4.テキスト・エディタで、Wiki のスクリプト部分を削除します。
<SCRIPT LANGUAGE="JavaScript">・・・</SCRIPT>
以上で、対訳htmlの原稿ができあがります。

5.html を見やすくするために、テキスト・エディタで、
<br /> を<br>改行に、</div>を</div>改行に、</li>を</li>改行
に、一括置換します。

更に何箇所か置換をすると、例えば、下記の状態になります。
http://makoto-wat.hp.infoseek.co.jp/freebasic/CatPgFile.html

6.後は、html エディタで、日本語を修正して、英文を削除します。

この方法のメリットは、以下で、わたし的には、比較的作業が容易です。
1.対訳を見ながらで作業できる
2.日本語の部分にも、それなりのhtmlタグが入っている


354 :デフォルトの名無しさん:2010/02/07(日) 11:49:41
integral typesは綴りミスではないかと
用語を統一したんでない?
integral types = 整数の型
integer types = 整数型


355 :渡辺真:2010/02/12(金) 23:34:16
FreeBASIC 日本語マニュアル に 「ファイル入出力機能」 の翻訳を追加しました。
http://makoto-wat.hp.infoseek.co.jp/freebasic/CatPgFile.html

ご意見、ご指摘を、よろしくお願いいたします。

(内容に命令文も含まれるため、Function は、機能と訳しました。)

356 :渡辺真:2010/02/12(金) 23:38:09
>integral typesは綴りミスではないかと
>用語を統一したんでない?

私もそう思います。
>>352
では、「うけ」を狙って、刺激的な表現にしてしまいました。
すみませんでした。

357 :341:2010/02/13(土) 00:26:39
FreeBASIC日本語マニュアル(未完成)
http://www1.axfc.net/uploader/Sc/so/82324

作業内容は変わらず翻訳の継続と修正をやりました
また、Readmeを設けました

本家のフォーラムで配布の事を聞いてきました
配布している後で何を今更なのですが
ちょっと気になっていたので、だいぶ躊躇していましたが
つたない英語で聞いてみました
いいみたいなので、気合い入れて翻訳継続していきます
それと、推奨されているwakkaフォーマットのマニュアルを
教えてもらったんだけど、どう使っていいのか分からないので
その当たりも調べてみようかと思います


358 :341:2010/02/13(土) 00:45:57
しまった違う奴をうpしてしまった
内容は、chm形式のファイル、Htmlファイル、readme.txtです

http://www1.axfc.net/uploader/Sc/so/82356

359 :デフォルトの名無しさん:2010/02/13(土) 01:15:33
まことくんへ
file openは、開くよりもオープンと書く。
読み手が混乱しないように

もっと本を読むことだ。
これを読んでみなさい。
http://www1.axfc.net/uploader/Ne/so/74819


360 :渡辺真:2010/02/13(土) 11:26:47
>これを読んでみなさい。

教材を提供いただき、有難うございます。
印刷して、一度、まじめに通して読んでみます。
感謝いたします。m(__)m

361 :341:2010/02/13(土) 14:06:33
>>359
自分も開くとしてある
なるほど、勉強になりました
それにしてもN88BASICとは懐かしいですね
持っていたN88BASICのマニュアルを紛失したので
とても参考になります

wakkaフォーマットについて
FreeBASICのwikiがwikka wikiだからwakka系のwiki用のフォーマットなのは
分かるんだけど、wikka wikiで新しいページを作れって事なんだろうか
コピーレフトのGNU Free Documentation Licenseの規約が守られているか
よく分からないんですが、訳語を追加する分には構わないみたいだし
ソースを添付すればいいようなのでとりあえず、chm形式と
それのソースであるhtmlを梱包したものを配布していきます。
ご指摘等あればよろしくです。

362 :デフォルトの名無しさん:2010/02/13(土) 18:46:12
ライセンスは、特に問題ないです。
Webドキュメントの作り方を教えてくれてるのだと思う。
http://www.execulink.com/~coder/freebasic/docs.html
ここを見ればわかるだろう。

小規模で行うからアップローダーの方が手軽だと思う。


363 :341:2010/02/20(土) 18:35:56
FreeBASIC日本語マニュアル(未完成)
http://www1.axfc.net/uploader/He/so/265738

作業内容:
翻訳の継続と修正、翻訳履歴のテキストを梱包、スタイルシートの一部改変

ピリオド区切りの翻訳する文節数は、40,484文節で100%重複する文節を取り除いたのが、20,442文節です
翻訳した文節が4,411文節なので、翻訳率は約21.5%です
コードなどの翻訳する必要のないものも含まれているので翻訳率はもう少し上がると思います
やっと1/5ですが、モチベーションは下がっていないので気合い入れて続けていきます
ご指摘あればよろしくです
>>362
そうですね、wiki系の編集は苦手なのでアプロダでいいと思う

364 :デフォルトの名無しさん:2010/02/20(土) 20:33:22
>>363
DLしてみた、展開してfbdoc.chmを開くと目次は出るけど中身は表示できませんになる
現状はこれで正常?


365 :341:2010/02/20(土) 21:19:59
>>364
あれ?おかしいですね
こちらでは立ち上げたのと同時にhtml形式のDocToc.htmlが最初に
表示されるんですが、何でだろう
目次を選んでも何も表示されないでしょうか?

今規制の煽りを食らっている状態ですので、すぐに返答できませんが
こちらでも調べてみます

366 :341:2010/02/20(土) 21:41:45
ブロックされているみたいですね
chmのプロパティのブロック解除をしてみてください
それで表示されると思います

367 :デフォルトの名無しさん:2010/02/20(土) 21:48:10
え〜と最初開いたときは左側は目次が選択された状態で右側は「取り消されたアクション」
ほかの項目を選択すると右側が「ページを表示できません」になります
サーバーが見つからないか、DNS エラーですとのことです

ほかのかたはどうなのかな?もしかしてうちだけ?


368 :367:2010/02/20(土) 21:51:55
>>366
なるほど、こんなプロパティがあったのですね
うまくいきました
さんきゅー



369 :デフォルトの名無しさん:2010/02/20(土) 23:23:16
>>368>>346

370 :デフォルトの名無しさん:2010/02/21(日) 12:22:10
うーん、個人的には
FAQ→チュートリアル→リファレンス
の順に読みたい優先順位がある。


371 :デフォルトの名無しさん:2010/02/21(日) 12:27:22
それから、アップローダーは ここを登録する。
専用のサイトを無料で作る事が出来る。
http://www.uploader.jp/

2チャンネルに接続できなくても更新できるから良いと思う。

372 :367:2010/02/21(日) 12:42:00
翻訳者の皆様お疲れ様です、そして感謝

英語苦手なんでほんと助かります
英語だと調べたいところをピンポイントで探して読むくらいしかできないんですけど
日本語になってるとつらつらとながめて読んでいけるので全体像から把握できていっていいですね

QuickBasic互換程度に思ってたんですけど、はるかにその上を行ってるものみたいですね
かなり使えそうじゃンって感じがしてます。
まあ実際のとこはこれからですが、さて何を作ってみようかなあ


373 :341:2010/02/24(水) 18:51:57
>>370
マニュアルの翻訳の第一の目的は、私自身の英語とFreeBASICの習得のためなので
基本は読みたい所から、知っている所からの翻訳になります
FAQは、理解をしていないと誤った翻訳になりかねないので最後の方になります
2chで翻訳済みのマニュアルを晒しているのは、翻訳のモチベーション維持と
添削してもらえるかもしれないという期待からです
また、乱雑になってしまうのと、間借りしているアップロダの軽減のために
アップロダに上げるのは絶えず1つであり、古いものは削除します
ゆえに、専用のアップロダを使うメリットはあまりありません
2chを規制されたら、代行レスをしてくれる人に甘えるか暫くアップを停止するかです

翻訳が一通り済む頃には、サイトを立ち上げてそちらで配布する予定です
予定は未定ですが、そんなところです



374 :渡辺真:2010/02/28(日) 13:29:14
FreeBASIC 日本語マニュアル に 「配列関連」 の翻訳を追加しました。
http://makoto-wat.hp.infoseek.co.jp/freebasic/CatPgArray.html

ご意見、ご指摘を、よろしくお願いいたします。

(今回から、Function は、「関連」と訳すように変えました。)

375 :341:2010/03/14(日) 09:07:35
FreeBASIC日本語マニュアル(未完成)
http://www1.axfc.net/uploader/He/so/268887

翻訳する時間が余り取れなかったので、以前から時間がかなり経っていますが
余り多く翻訳できませんでした
翻訳率は、若干上がって約26.8%です
誤字、誤訳、ご指摘等ありましたら、よろしくお願いします


376 :渡辺真:2010/03/14(日) 15:08:22
>>375
> 言語リファレンス フロー制御 / Control Flow
> 言語リファレンス 変数とデータ型 / Variables and Data Types
> を完訳、調整必要

コーディングのシーンでも使えるようになって来ましたね。

FbEditでの使い方を追記しました。
http://www.hi-ho.ne.jp/makoto_watanabe/FbEdit/OptionsHelpMenu.htm

377 :デフォルトの名無しさん:2010/03/28(日) 21:27:36
FreeBasic日本語マニュアル(未完成)
http://www1.axfc.net/uploader/He/so/271114

演算子リストを完訳しました
翻訳率は33.7%といった所です

今後の予定:
グラフィックライブラリ辺りに手をつけています
FreeBASICのWikiを見てみるとこのマニュアルと
結構違いがあるので、それをどうしようか考えてます

誤字、誤訳、ご指摘等ありましたらよろしくです

378 :341:2010/04/07(水) 03:09:48
FreeBASICマニュアルを翻訳している341です
過疎化していてスレを占有している形になっているので
色々試行錯誤した結果、サイトを立ち上げてそちらで配布することにしました
Axfcアップロダにあるファイルは削除しました

サイト
http://syntaxerror445.blog21.fc2.com/

それでは

379 :デフォルトの名無しさん:2010/04/14(水) 18:41:16
過疎はこのスレに限った事じゃないsageてればおk

380 :渡辺真:2010/04/24(土) 16:27:03
「複数行にまたがる置換パターン」を、辞書に「複数パターン」登録して、「複数のファイル」を一括置換するツールを作りました。
http://makotowatana.ld.infoseek.co.jp/hotvbs.html#multiple
日本語マニュアルの html を整形するのに、とても役立っています。

FBWiki のソースは、Website Explorer を使うと、簡単にブッコ抜けます。
http://www.umechando.com/webex/

381 :デフォルトの名無しさん:2010/08/30(月) 06:17:54
FreeBASICの勉強がてらwikiを立ち上げたので、暇な時にでも是非。
http://geeeek.crz.jp/wiki/HomePage

382 :デフォルトの名無しさん:2010/08/30(月) 22:55:29
>>381
http://www1.axfc.net/uploader/Img/so/93076

383 :かわぶた大王:2010/08/31(火) 23:18:29
本日からFreeBasicで遊ぶことにしました。
プラットホームはPuppy Linux。

DOS Windows Linux
あと、Windows Movilesでも動けば俺様的には完璧なんだけどなぁ。

384 :かわぶた大王:2010/09/07(火) 21:19:39
FreeBasic、結構遊べるね。
やっぱり、ちょっといじってすぐ画面に反映されると楽しい。
でも、N88もQuickもいじったことないのでよくしらないんだよね。
MSX Basicならいじりまくったけど。

385 :デフォルトの名無しさん:2010/09/07(火) 22:00:58
MSXと同じです

386 :デフォルトの名無しさん:2010/09/08(水) 19:17:25
>>384
BASICだからあまり変わらないよ
明示的に変数宣言する所とGosubなんかを関数に置き換えて使うようになっただけだよ

387 :デフォルトの名無しさん:2010/09/09(木) 00:13:53
>>386
GUIのウインドウメッセージ関係が面倒だね。

388 :デフォルトの名無しさん:2010/09/09(木) 01:01:56
ああ、その辺鬼門だよなあ
WindowsならAPI勉強して知識付けるしかないなあ

389 :デフォルトの名無しさん:2010/09/09(木) 19:05:56
>>378
CatPgFunctIndex.html
関数別キーワードリスト / Functional Keyword List

ここの場合は、機能別キーワードリスト がよいと思う。


390 :渡辺真:2010/09/12(日) 00:41:59
FreeBASIC の 0.21.0 Beta が公開されました。
このリリースで、多くの改良と、バグ・フィックスがされています。age

http://www.freebasic.net/

で、ダウンロードできます。

(アクセス規制中で、2ちゃんねるに書き込みできない状態が続いていたので、古新聞ですみません。)

>デフォルトの名無しさん
>FreeBASICの勉強がてらwikiを立ち上げたので、暇な時にでも是非。

ご支援、感謝いたします。

391 :デフォルトの名無しさん:2010/09/12(日) 01:22:17
最新版は危ないから、しばらく様子を見る。 
安定していてライブラリとの整合性を重視する。

チャレンジャーは最新版が楽しいだろう

392 :378:2010/09/16(木) 22:47:51
>>389
意見ありがとう
確かにそうした方がいいですね
次のリリースには修正しておきます

393 :デフォルトの名無しさん:2010/09/18(土) 21:51:03
>>382
規制中で書き込めませんでしたが、レスを読んですぐに修正しました。
ご指摘ありがとうございます。

>>390
watanabeさんのサイトのおかげでFreeBASICを知りました。
日本語マニュアルには特にお世話になっております。

394 :デフォルトの名無しさん:2010/09/23(木) 11:19:34
New バージョンかぁ。
いいなぁ。

既に現行ではないLinuxの開発環境を使っている時点で、
「俺には関係ない話」なんだけどね。

ほそぼそやるさ。

395 :デフォルトの名無しさん:2010/10/17(日) 23:45:31
http://makoto-watanabe.main.jp/freebasic/ProPgProcedures.html#start

このページでProcedureの事を手順と書いてあるが、
一般的に「手続き」と呼ぶ。 「手順」は大いに違和感がある。
パスカル系の言語が元になるが、最近はどの言語にも導入されている。
VB関係ではプロシージャと書くこともある。

言語関係の本を読んだ方が良い、色々と勉強になるよ


396 :デフォルトの名無しさん:2010/10/22(金) 05:26:43
スプライトとか使いたいんだけど、
どうやって機能を追加すればいいんだろう?

海外で、ゲーム製作に特化した追加機能があるみたいだけど、よくわからない。

397 :デフォルトの名無しさん:2010/10/23(土) 21:25:45
>>396
手軽なのを紹介できればよいのですが、あまり知りません。
個人的には Irrlicht Wrapperが良いと思います、
コマンドが多いけれども、2Dだけを使うのも有りだと思うのです。

Irrlicht Wrapper for 3D games and applications
http://www.freebasic.net/forum/viewtopic.php?t=3584&postdays=0&postorder=asc&start=0

.dll と .biのファイルを含めれば出来ると思います。


398 :渡辺真:2010/10/24(日) 01:35:03
>>395
>このページでProcedureの事を手順と書いてあるが、
>一般的に「手続き」と呼ぶ。 「手順」は大いに違和感がある。

ご指摘いただき、感謝します。
とりあえず「手順」を「手続き」に、一括置換して、UPしました。
一括置換なので、やりすぎたところも有るかもしれませんが、ご容赦を。

>言語関係の本を読んだ方が良い、色々と勉強になるよ

ご教授いただき、有難うございます。
なかなか時間が取れないので、個々に教えていただけると、有り難いです。
m(__)m

399 :デフォルトの名無しさん:2010/10/27(水) 18:41:09
>>396
FreeBASICに各拡張ライブラリのサンプル入っていますよ
allegroやSDLなんかが一般的です
397氏のIrrlichtもお奨めです
別途、各ライブラリ.dllファイルを用意して
.biファイルをincludeすれば使用でます
日本でよく使われているDXライブラリとかのWrapper作れれば
FreeBASICももっと普及するかもしれないね



400 :デフォルトの名無しさん:2010/10/28(木) 17:15:00
VBに似てるな

401 :デフォルトの名無しさん:2010/10/28(木) 17:33:13
QuickBasic互換です。
M-BASIC→GW-BASIC→QuickBASIC→VisualBASIC

N88-BASICに相当するのがGW-BASICです。
QuickBASICはGW-BASICがほとんどそのまま走ります。


402 :デフォルトの名無しさん:2010/10/28(木) 23:46:06
>>400
おいおい・・・
何処がじゃ!

403 :デフォルトの名無しさん:2010/10/29(金) 08:42:38
QBはVBの先祖だから似てて当然

QBで書いたプログラムをVB6の標準モジュールに貼れば動くしな
グラフィック以外は

404 :デフォルトの名無しさん:2010/10/29(金) 08:55:34
文法の話かよ

405 :デフォルトの名無しさん:2010/12/01(水) 21:43:38
PureBasicとどっちがイイの?

406 :デフォルトの名無しさん:2010/12/01(水) 21:49:24
PureBasicは有料の最高BASIC、不満は無いだろう

FreeBasicは、無料BASIC
DOS環境の最高傑作を手本にしている。


407 :デフォルトの名無しさん:2011/01/03(月) 18:32:34
生きてる?

提案遅いかもしれないが、2chでは異様に機制多すぎて作業し辛いと思う。
そこで、そろそろSCMとしてbitbucket[ http://bitbucket.org/ ]借りてきたらと
思うんだが...どうだろうか。


408 :デフォルトの名無しさん:2011/04/01(金) 09:11:12.28
実行画面でしか日本語が使えないのか?

上手に実行画面とグラフィックスを使い分けるのか?
力技でなんとかしちゃうのか?

409 :デフォルトの名無しさん:2011/05/18(水) 14:12:05.78
2011-05-16 0.22.0

410 :渡辺真:2011/05/19(木) 22:44:52.78
描画画面に日本語を表示する事例を追加しました。

http://makoto-watanabe.main.jp/freebasic/PgDrawString.html#Japanese

やってみると、思ったより簡単?でした。

411 :天使 ◆uL5esZLBSE :2011/07/02(土) 17:17:53.74
> QuickBASICはGW-BASICがほとんどそのまま走ります。
↑↑ハアァァァアァァァアァァァァァァァァァァァァァアァアァァァ????????????????
ゴミグラマってなんだかな


412 :天使 ◆uL5esZLBSE :2011/07/02(土) 20:10:30.69
これ ; デリミタっていうんだけどさ、よく打ち忘れるよね
Rubyだとつけなくてよくなるんだけど

死ねよゴミ

413 :天使 ◆uL5esZLBSE :2011/07/04(月) 13:16:27.01
これ ; デリミタっていうんだけどさ、よく打ち忘れるよね
Rubyだとつけなくてよくなるんだけど


ゴミじゃねーか(笑)

414 :デフォルトの名無しさん:2011/07/04(月) 14:38:37.92
ポッカのデリミタスコヒー美味いですぅ

415 :天使 ◆uL5esZLBSE :2011/07/06(水) 21:01:05.65
2011年になっても未だにJAVA使い続けてる奴ってさ
仕事で仕方なくならわかるけど

家でもJAVAやってるなら本当にバカだよね。哀れ

土方が何をいっても



天使#test_s

「天使の煽り」の提供でお送りしました

416 :デフォルトの名無しさん:2011/07/10(日) 11:36:47.35
これはメニューなどのGUIは出来ますか?サンプルあったら教えてください。

417 :渡辺真:2011/07/10(日) 13:22:05.24
>>416

>これはメニューなどのGUIは出来ますか?サンプルあったら教えてください。

下記を参照下さい。

http://www.hi-ho.ne.jp/makoto_watanabe/FbEdit/tut3.htm#start

418 :デフォルトの名無しさん:2011/07/10(日) 13:37:21.51
サンクスでした

419 :渡辺真:2011/09/05(月) 18:05:56.00
90% まで日本語化した CHM 版のヘルプ・ファイルを UP しました。
http://makoto-watanabe.main.jp/freebasic/

420 :デフォルトの名無しさん:2011/09/15(木) 06:58:08.34
ttp://www.freebasic.net/wiki/wikka.php?wakka=LicenseGFDL
ttp://ja.wikipedia.org/wiki/GFDL


421 :デフォルトの名無しさん:2011/09/15(木) 22:35:07.12
sf

422 :デフォルトの名無しさん:2011/09/17(土) 02:40:07.73
GFDL Version 1.(ry

423 :デフォルトの名無しさん:2011/10/22(土) 07:50:53.11
おぉ。
日本語使えるようになったのか。

試してみる。

424 :渡辺真:2011/10/29(土) 12:01:50.25
日本語化すべきところは全て?翻訳した、日本語マニュアルのCHM版をアップロードしました。
http://makoto-watanabe.main.jp/freebasic/
修正すべき点、加筆すべき点など、ご指摘、ご意見を、お願いします。
FreeBASIC で遊んでみましょう。

425 :デフォルトの名無しさん:2011/10/29(土) 22:24:42.25
>>424
>>420

426 :渡辺真:2011/11/04(金) 14:33:39.11
>>423
>日本語使えるようになったのか。

KLen 関数と、KMid 関数を追加しました。
Shift_JIS の全角半角を、扱うことができます。

KLen
http://makoto-watanabe.main.jp/freebasic/PgLen.html#start
KMid
http://makoto-watanabe.main.jp/freebasic/PgMidfunction.html#start

竹内先生に感謝です。
http://visio.sc.niigata-u.ac.jp/tbasic/bbs/lightJP.cgi

ただ、ユーザ定義関数では、速度がいまいちなので、どなたか、もっと高速にする方法(組込み関数化?)を、考えて下さい。


427 :デフォルトの名無しさん:2011/11/04(金) 23:24:46.28
C言語で実装したDLLを呼べば早くなるんじゃね?
それよりUNICODE対応してるんだからそっち(WString)を使ったほうが・・・

428 :デフォルトの名無しさん:2011/11/05(土) 00:10:43.10
>>426
嘘を書いちゃダメだよ
例題でWStringで宣言している変数Japaneseに"こんにちは、世界!"を入れて
Lenで長さ取得しているけど、WStringのマルチバイト文字列でもLenは機能するよ

Dim a As WString * 20
a="今日は、世界!"
Print Len(a)
Sleep

これの結果は「7」だよ
マルチバイト、シングルバイト両方が混在していても、WStringで宣言すれば
シングルバイトもUNICODEでマルチバイトとして定義されているのだから
マルチバイト文字列として扱われ、長さをきちんと取得できるよ
因みに他の文字列関数もWStringで宣言すれば機能するよ

LenでIntegerなどの文字列以外の長さを取得すれば、その変数に割り当てられたバイト数が返される
UNICODEが使えるんだからそれ使いなよ


429 :デフォルトの名無しさん:2011/11/05(土) 00:34:56.15
それと
長さがまちまちなマルチバイト文字列を扱うなら
固定長文字列にせず、ポインタ使えばいいよ

Dim a As WString Ptr
a = Allocate(Len(WString))
*a = "今日は、世界!"
Print *a
Print Len(*a)
*a = "Hello World!"
Print *a
Print Len(*a)
Deallocate(a)
sleep

結果は

今日は、世界!
7
Hello World!
12

430 :デフォルトの名無しさん:2011/11/05(土) 04:31:38.98
馴れ合いは自己紹介板へ

自己紹介板
http://toki.2ch.net/intro/

431 :渡辺真:2011/11/05(土) 16:55:06.07
>>427
>>428
>>429

色々教えていただいて、有難うございます。

ところが、私の環境では、うまく行きません。
何か、設定とか有るのでしょうか?

Dim a As WString * 20
a="今日は、世界!"
Print Len(a)
Sleep
として、
Print a
とすると、文字化けします。
http://makoto-watanabe.main.jp/freebasic/WString.png


Print *a
でも、やはり文字化けします。
http://makoto-watanabe.main.jp/freebasic/PtrWString.png



432 :デフォルトの名無しさん:2011/11/05(土) 20:58:23.11
って言われても
君の環境がどういうものなのか分からないのに答えようがないよ
文字化けするなら文字コード辺りだろ?

433 :デフォルトの名無しさん:2011/11/05(土) 21:38:21.54
あーFBEdit使ってるのか
それはBOM無しUTF-8でファイル作成するからじゃないか?
ファイルをShift-JISかBOM付きUTF-8にエンコードすればいいんじゃね
それでコンパイルしてみりゃいいよ

つか、君のサイトでFBEdit推奨しているんだから
その辺りを調べておくべきじゃないの?

434 :渡辺真:2011/11/05(土) 22:49:48.92
>>427
>>433

> それよりUNICODE対応してるんだからそっち(WString)を使ったほうが・・・

みなさん、有難うございます。

そうでした。UNICODE対応してるのに、私は、ソース・コードを、Shift-JISで保存して、コンパイルするという、ばかげたことをしていました。
ソースのbas ファイルを、UNICODEで保存して、コンパイルしたら、文字化けしなくなりました。
(^_^)v


> 君のサイトでFBEdit推奨しているんだから
> その辺りを調べておくべきじゃないの?

はい。その通りです。FBEdit の使い方を、勉強します。

初心者の稚拙な質問に、みなさん、迅速に、真摯にお答えいただき、感謝をいたします。
m(__)m


435 :渡辺真:2011/11/06(日) 01:43:04.06
UNICODE を使ったとき、実行画面に、Print 文字列 する方法を教えて下さい。

>>428
有難うございました。
>Dim a As WString * 20
>a="今日は、世界!"
>Print Len(a)
>Sleep

>これの結果は「7」だよ

確かに、Len(a) は「7」になりました。

しかし、
Print a
は、「今日は」で切れてしまいます。
http://makoto-watanabe.main.jp/freebasic/PgLen.html#start
どうしたら、「今日は、世界!」と表示できるのか、お教え下さい。



436 :デフォルトの名無しさん:2011/11/09(水) 00:06:48.68
Print関数が勝手にLenの戻り値のバイト数で切り詰めるバグ?っぽい

437 :デフォルトの名無しさん:2011/11/09(水) 00:13:00.79
サンプルからしてWin32APIのMessageBoxを使うあたり把握してるけど直す気がなさそうな感じが

438 :デフォルトの名無しさん:2011/11/09(水) 01:06:09.28
詳しく検証していないけど
wstringでprintの後の( ; )や( , )が上手く機能していないっぽい
( + )で結合ならいけるね

>>435
ファイルのエンコード辺りを勉強しなおしたほうがいいね
>>426のフォーラムでユニコードに対応していない某BASIC言語とか
仕様そのもの理解していないじゃないの

439 :デフォルトの名無しさん:2011/11/09(水) 01:28:41.00
'&とか;は使えないけどとりあえずWStringを最後まで表示するWPrint関数をでっちあげ
'ちなみに自動で改行しないので注意

sub WPrint(s As WString)
dim buf as WString Ptr
dim i as integer

buf = Allocate((Len(s) + 2) * Len(WString))
*buf = s + " " 'これをしないと最後の文字列が2バイト文字の場合にうまく表示されない

for i = 1 to Len(*buf) - 1
if asc(mid(*buf, i, 2)) < 256 then
print mid(*buf, i, 1);
else
print mid(*buf, i, 2);
end if
next
end sub

Dim Japanese As WString * 200
Japanese = "今日は、世界!"
print Japanese
WPrint Japanese

440 :デフォルトの名無しさん:2011/11/09(水) 02:04:26.98
C:\FreeBASIC\examples\unicode\hello_japanese.bas
http://i.imgur.com/71i6S.png
コマンドプロンプトのフォントはMSゴシック

441 :デフォルトの名無しさん:2011/11/09(水) 02:20:32.54
俺のWindows7だと「こんにち」で途切れる、OSによって違うのかな?

442 :デフォルトの名無しさん:2011/11/09(水) 02:46:31.70
フォントを切り替えたらWindows7でもいけた

443 :デフォルトの名無しさん:2011/11/09(水) 16:24:28.99
何で繁盛してるのか?

444 :デフォルトの名無しさん:2011/11/09(水) 23:45:25.69
風の噂では、
Windowsのコンソール画面にバグがあって、日本語表示でミスするようだ。
つまり、Windowsのバグ

445 :デフォルトの名無しさん:2011/11/10(木) 20:09:32.70
へえ

446 :渡辺真:2011/11/11(金) 22:21:22.04
みなさん色々確認いただき、教えていただき、有難うございます。

>>441
>OSによって違うのかな?

まさしく、そのようです。
英語版の Windows で動かしてみましたが、日本語文字列が、右端まで、切れずに表示されました。
どうも、日本語 Windows (およびデフォルトのフォント)の固有の問題のようです。

>>442
>フォントを切り替えたらWindows7でもいけた
具体的に、どういう方法で、どのフォントに切り替えたのか、お教え下さい。


447 :渡辺真:2011/11/11(金) 22:27:00.76
>>439
WPrint関数のアイデア、すばらしいです。有難うございます。
ただ、Sub だと、引数がうまく取れないので、Function に書き換えてみました。
後ろに & が来ると、何故かうまく行きませんが、それ以外は、それなりに動いているようです。

マニュアルのサイトにも、借用させていただきました。ご了解ください。
http://makoto-watanabe.main.jp/freebasic/PgMidfunction.html#Expand

Dim Japanese As WString * 100
Dim mojisu As Integer
Declare Function Expand(s As WString) as WString Ptr

Japanese="今日は、世界! hello world!"
Print *Expand(Japanese);Len(Japanese)
Print *Expand(Japanese) & *Expand(Japanese)
Print Len(Japanese) & *Expand(Japanese) & Len(Japanese)
Sleep

Function Expand(s As WString) as WString Ptr
Dim buf As WString Ptr
Dim i As Integer

buf = Allocate((Len(s) * 2) * Len(WString))
*buf = s
For i = 1 To Len(s)
If Asc(Mid(s, i, 1)) > 256 Then
*buf = *buf & Space(1)
End If
Next
Expand = buf
End Function


448 :デフォルトの名無しさん:2011/11/12(土) 01:08:28.05
こんなんでいいと思うけど、最後だけは関数が先に処理されるみたいで表示が変だけどね
まあ、+や&は普通に連結すればいいね
Function wide( ByRef strings As WString ) As String
Dim As Integer count = Pos()
For i As Integer = 1 To Len( strings )
count -= ( Asc( Mid( strings , i , 1 ) ) > 256)
Next i
Print strings;
Locate , count + Len( strings )
Return ""
End Function

Dim As WString * 200 text = "こんにちは、世界!Hello World!"
Print text
Print wide( text ) ; Len( text ) ; wide( text )
Print wide( text ) , Len( text )
Print wide( text ) & Len( text )
Print wide( text ) + Str( Len( text ) )

Print wide( text ) & Len( text ) & wide( text )

Sleep

>>447
ポインタの戻り値はちゃんとポインタで受けてDeallocateしないと
それに慣れると思わぬとこでおかしな動作しちまうよ

449 :デフォルトの名無しさん:2011/11/12(土) 08:04:57.47
>>446
コマンドプロンプロを右クリックしてプロバティを表示
フォントタブがあるのでそこでMSゴシックに変えたら
素のprintでも全部表示した

450 :渡辺真:2011/11/12(土) 12:48:02.81
>>448
>ポインタの戻り値はちゃんとポインタで受けてDeallocateしないと
>それに慣れると思わぬとこでおかしな動作しちまうよ

教えていただいて有難うございます。
ただ、この場合は、下のようにすると、文字化けします。Expand に渡した後なので、よさそうなのですがね。
Expand = buf
Deallocate(buf)
End Function

それと、Function wide を使ってみましたが、やはり右側が欠落しますね。
http://makoto-watanabe.main.jp/freebasic/wide.png

>>449
>フォントタブがあるのでそこでMSゴシックに変えたら
>素のprintでも全部表示した

おう!そうですね。有難うございます。
私が、この一週間に試行錯誤した膨大な時間は、なんだったのか(^^ゞ
感謝いたします。マニュアルにも、追記しました。

451 :デフォルトの名無しさん:2011/11/12(土) 13:34:41.10
>>450
ポインタを勘違いしているよ
君のコードでbufをFunction内でDeallocateしたら
せっかく割り当てたメモリに格納したデータが消えてしまうでしょ

Functionの戻り値がWString型のポインタを返すのだから
返って来るのはデータを格納しているメモリ上のアドレス
だからそれを格納している変数にアスタリスク付けて(つまりValue Of)
値を取得するんだよ
君のコードで言ったらPrint *Expand(....の部分
これだとFunctionの中で割り当てたメモリ上のデータが残ったままになる(アドレスを手に入れておらずメモリリーク)
直接Printするのではなく、ポインタに入れてそれを後で解放するの

Dim As WString Ptr result ' 格納するポインタ
result = Expand(Japanese) ' アドレスを格納
Print *result        ' そのアドレスにある値を表示
deallocate( result ) ' resultが指し示しているアドレスに入っている値を開放
result = 0 ' ポインタに0を与えてポインタからアドレスを抹消

FreeBASICはBASIC言語だけど、ポインタを当たり前のように使うコードが多いから
日本語の解説が多いC言語辺りで勉強したら?
それと>>448のコードはちゃんと表示されるよ(因みにXP SP3 フォントはMSゴシック)

452 :デフォルトの名無しさん:2011/11/12(土) 13:47:51.70
あと、君がFBEditを使っているのは分かるんだけど
別の方法も試して見ることを勧めるわ
自分の記億ではFBEditはBOMなしUTF-8で保存すると思ったんだけど
他のテキストエディタでBOM付きUTF-8で保存して
コマンドプロンプトからコンパイルしてみ?



453 :渡辺真:2011/11/12(土) 16:07:23.60
>>451
丁寧に教えていただいて、有難うございます。

>ポインタを勘違いしているよ

勘違いするなどというレベルではなく、まったく分かっていないのです。(^^ゞ

コードの一行ごとにコメントを書いていただいたので、この部分に関しては、理解しました。
(コードが冗長に成るので、ポインターの使い方としては、今回の使い方は、余り適切ではないのかもしれませんね。
しかし、WString が固定長なので、WString そのものを、関数で受け渡しはできないのでしょうね。)

>日本語の解説が多いC言語辺りで勉強したら?
>別の方法も試して見ることを勧めるわ

はい。FreeBasic のマニュアルの翻訳も、一通り終わったので、勉強の範囲を、周辺に広げたいと思います。

454 :デフォルトの名無しさん:2011/11/13(日) 10:09:19.79
スクロールするプログラムでは、
どんな命令を使うのがいいんでしょうか?

Pcopyだと、同じ画面を写しとるだけで、移動出来ないのですが。
裏画面でCopyでズラして足りない分を追加して、
表示画面を切り替えですか?

455 :デフォルトの名無しさん:2011/11/13(日) 10:30:59.55
>>453
WString型は引数として関数に渡すことは出来るけど
WString型の戻り値はPtrでしか返せないのだから必須だと思うよ
もしそれをやらないで関数から返そうとすると文字列を文字コードに変換して
String型で返して、関数呼び出し元でそれを文字列に変換しながら1文字ずつ
表示するってことになるわ

AllocateしたものをDeallocateで解放するっての基本中の基本だよ
例えば君の>>447のコードを1万回繰り返す 簡 単 な コードを作ったとするよ
Expand関数の呼び出しがコード内に4個あるから、メモリ上に最大4万個の割り当て領域が
生成されて、実行が終了するまで占有してしまう
これがただ単に1回実験的に実行するだけならいいとしても(今回のようにね)
長く実行するようなソフトであったら、メモリリークしまくることになる

マニュアルにも書いてあるけど割り当てたものは解放するべきであって
ポインタの使い方が手法として適切かどうかの話じゃない
ポインタを全くわかっていないなら、メモリの割り当てと開放はセットであることを
覚えておくべきってことを言いたいの
分かっててやっていると捉えていたら、そんなことを指摘したりはしないよ


456 :デフォルトの名無しさん:2011/11/13(日) 10:48:46.94
>>454
考え方としては
画像を保存しているバッファA
画像を加工するバッファB
加工したものを表示するバッファC
に分けて、バッファAから画像をバッファBにコピーして加工
そのバッファB全体をバッファCにコピー
バッファCを表示

使うのはPutでバッファAから画像を切り出してバッファBに設置するといいかな
画像を任意のところに設置したらバッファBをバッファCにPCopyでコピー
バッファCを表示

こんな感じでいけると思う



457 :デフォルトの名無しさん:2011/11/13(日) 11:13:43.08
はやい。


ありがとうございました。
やっぱり、楽できる便利な命令はなくて、
ちょこちょとこコピーするんですか。

じゃあ、滝のように流れまくる高速なスクロールは難しいのか。

458 :デフォルトの名無しさん:2011/11/13(日) 11:29:20.89
>>457
秒間に表示できる回数を多く維持できればスムーズな高速スクロールは出来るんじゃない?
あとは画像の移動量を増やせばいいんじゃない?

FreeBASICのグラフィックスは拡張なしの組み込み命令で扱えますよって感じだから
グラフィック関連は拡張ライブラリを使ったほうがいいと思う
有名所ならAllegro、SDLとか
別途DLLが必要だけど、ヘッダファイルをFreeBASICで用意してくれているから導入は楽よ

459 :渡辺真:2011/11/13(日) 15:33:34.33
>>455
>ポインタを全くわかっていないなら、メモリの割り当てと開放はセットであることを
>覚えておくべきってことを言いたいの

重ね重ね教えていただいて、有難うございます。
マニュアルにも、追記いたしました。CHM 版も、更新しました。
http://makoto-watanabe.main.jp/freebasic/PgMidfunction.html#Expand

460 :デフォルトの名無しさん:2011/11/13(日) 20:25:58.40
CPUパワーが400〜500Mhz相当のマシンから
Pentum M 1.7Ghzにマシンを変えて実行してみたら、
バカみたいに速くなった。

うーん。
でも、古いマシンで動くゲーム作りたいんだよなぁ。。。
パズルじゃないやつ。

461 :デフォルトの名無しさん:2011/11/16(水) 18:04:35.74
>>459
>FbEdit は、これを書いている時点のバージョンでは、UNICODE のファイルを保存すると
>不要な文字が入るバグが有ります。

BOM無しを扱うFbEditでBOM付きをオープンすれば
そりゃ不要な文字が先頭に入るわな
ついでに2バイト文字が文字化けもするんじゃない?
どんなエディタでも同じだよ
製作者に怒られるよ?

462 :デフォルトの名無しさん:2011/11/19(土) 22:14:09.49
そうなの?

463 :渡辺真:2011/11/24(木) 01:04:19.34
>>461

下記で、BOM 付き Unicode に対応していた、最後のバージョンをダウンロードできるようにしました。
http://www.hi-ho.ne.jp/makoto_watanabe/FbEdit/fbedit1.0.7.4Unicode.zip

FbEdit は、拡張子を FbEdit に関連付ける操作をしないかぎり、レジストリを使いません。
このため、最新バージョン(1.0.7.6c)と、Unicode バージョン(1.0.7.4)を、別のフォルダに登録すれば、両方を使い分けることも、できます。

(ここ一年、FbEdit の作者である、KetilO さんの消息が不明なので、最新バージョンに改善を依頼することができなくて、残念です。)


464 :デフォルトの名無しさん:2011/11/24(木) 20:36:23.08
>>463
意味が分からないのだが
もしかしてオレが言っているのと症状が違うんかな?

他のエディタでBOM付きUTF-8とかを保存して、それをFbeditでオープンすれば
先頭にBOMのデータまで表示される(文字化けして「・ソ」みたいに表示される)
それでコード内に2バイト文字を使っていると文字化けする
確かオレの曖昧な記憶では、普通BOM付きはエンディアンが存在するUTF-16からで
シングルバイト文字コードとアスキーコードが同じUTF-8はBOMなしなんだよね
それでもユニコードであることを区別するのにUTF-8にBOMを付けたりする
実際にエディタによってはBOM無しUTF-8と判断できずにとりあえずShift-JISで開いたりする
2バイト文字はもちろん文字化けする

少なくともそのFbeditのどちらのバージョンもBOM付きUTF-8をオープンすれば
上記のようになるし、Fbedit自体にエンコード出来る機能はなかったと思う
試していないけど、FreeBASICで扱えるフォーマットはサポートしてるんかな

ややこしいならBOM無しUTF-8かBOM付きUTF-8のどちらかに統一すればいい
決してShift-JISなんて使わないように
FreeBASICは海外製だ

因みにFreeBASICでテキストデータを読み込む場合、そのテキストデータがBOM付きだとそれも読み込む
画面に表示したりする時はその辺り注意だな
読み込んだデータをファイルに収めるなら、そのまま書きだせば当たり前だけどBOM付きのテキストファイルになる

465 :渡辺真:2011/11/26(土) 02:35:04.26
誰か、FreeBASIC で使える、StrConv 関数を作ってくれると、うれしいですね。

VBA には、StrConv 関数があって、
vbUnicode で、Sift-JISの文字列を Unicode(UTF-16) に変換
vbFromUnicode で、Unicode(UTF-16) 文字列をSift-JISに変換
できるようです。
FreeBASIC でも、こんなことができるとうれしいです。
ついでに、UTF-8 も仲間に入れて。

既存のライブラリとか、DLLを使えば、実現できる?


466 :デフォルトの名無しさん:2011/11/26(土) 05:50:53.78
>>460
1980年ぐらいのBASIC言語だと、マシン語で画面描画を10KB
程度描画するだけで1秒以上ぐらい時間がかかった。

FOR NEXTループ1万回が数秒かかる時代にだってパズルゲーム以外が
普通にあったわけ。速度じゃなくて創作性=アイデアだから。
どちらかといえば記憶容量のほうが重要だ。
私が持っていたMZ80Kとか漢字というよりアルファベットの
小文字すら表示できず、色も無理でセミグラフィックというのが
80ドット×50ドットという恐ろしくアイコンな能力だった。

467 :デフォルトの名無しさん:2011/11/26(土) 09:00:57.43
そういうことじゃなくて、>>460は付属のグラフィックライブラリがOpenGLだから遅いって言ってるんじゃない?

468 :デフォルトの名無しさん:2011/11/26(土) 11:53:16.36
>>465
自分で作りなよ
つか、マクロ用のVBでは必要となるから存在するのであって
FreeBASICでサポートしていないShift-JISフォーマットに変換できても
表示すらできないのに大して役に立たないじゃない
むしろ、どちらもサポートしている言語で組めばいい
それに、変換するってことはその元となるデータが外部ファイルなりにあるってことだよね?
フリーソフト辺りにあるんじゃないの

>>466
単純にFreeBAISC内蔵グラフィックスライブラリの表示速度のことなんじゃないの?
FreeBAISC内蔵グラフィックスライブラリに過度な期待はせずに
外部ライブラリ使っておけばいいと思うよ





469 :渡辺真:2011/11/26(土) 18:42:25.24
>>468
>FreeBASICでサポートしていないShift-JISフォーマット

Shift-JIS のテキスト・ファイルを読み込んで、文字列を処理して、別のファイル名で、Shift-JIS のテキスト・ファイルとして書き出すプログラムを、下記に、例 3 として、掲示しました。
(サンプル・テキスト・ファイルと、ソース・コード・ファイルをダウンロードできます。)
http://makoto-watanabe.main.jp/freebasic/PgKLen.html#Sample3
私の、いかがわしい、KLen関数と、KMid関数を使っているので、1600 行処理するのに、3分かかります。(^^ゞ

Shift-JIS のテキストを読み込んで、UNICODEに変換して、FreeBASIC のオリジナルの Len関数とMid関数を使って変換して、その後、Shift-JISに戻して、ファイル書き出しできると、高速処理できると思うのですが。


470 :渡辺真:2011/12/03(土) 00:37:13.86
Shift-JIS←→UNICODE は、win32 に、MultiByteToWideChar と WideCharToMultiByte があることが分かりました。

日本語ドキュメント
WideCharToMultiByte(UNICODE→Shift-JIS)
http://msdn.microsoft.com/ja-jp/library/cc448089.aspx
MultiByteToWideChar(Shift-JIS→UNICODE)
http://msdn.microsoft.com/ja-jp/library/cc448053.aspx

FreeBASIC での実装例を教えて下さい。


471 :デフォルトの名無しさん:2011/12/06(火) 19:44:58.45
UNICODEとほかのコードは変換表を作って当てはめるしかないのであんまり参考にならない。
素直にそのAPIをコールするか、マルチプラットフォームにこだわりたいなら
iconvを導入してその関数をコールするかだけど・・・
でもそれだと結局変換に時間がかかって全く意味がないんじゃないかな。

472 :渡辺真:2011/12/10(土) 23:37:17.64
私は、WideCharToMultiByteを使った、動くプログラムの例を、2つ見つけました。
ただ、これらが何をしているのか、分からないのですが(^^ゞ

473 :デフォルトの名無しさん:2011/12/11(日) 07:14:34.64
http://pastebin.com/kCPcgUqf
マルチバイト/ユニコード変換
こんなんでいいのかな

474 :渡辺真:2011/12/11(日) 12:11:05.31
>>473
感謝いたします。
勉強します。

フォーラムに掲載されていたものも、下に転載します。
行数が多いので、この掲示板に載せるのに手間取りました。

475 :渡辺真:2011/12/11(日) 12:16:46.09
'http://www.freebasic.net/forum/viewtopic.php?t=2243&highlight=widechartomultibyte
#Include Once "windows.bi"
'':::::
Function convert _
( _
ByVal src As ZString Ptr, _
ByVal fromCP As Integer, _
ByVal toCP As Integer _
) As String
Dim As Integer lgt : Dim As WString Ptr buf : Dim As ZString Ptr res
lgt = Len( src ) : buf = Allocate( (lgt+1) * 2 ) : res = Allocate( (lgt+1) * 4 )
MultiByteToWideChar( fromCP, IIf( fromCP = CP_UTF8, 0, MB_PRECOMPOSED ), src, lgt+1, buf, lgt+1 )
WideCharToMultiByte( toCP, 0, buf, lgt+1, res, lgt+1, NULL, NULL )
Function = *res
DeAllocate( res ) : DeAllocate( buf )
End Function
Print "'"; convert( "qwerty", CP_ACP, CP_UTF8 ); "'"
Print "'"; convert( "qwerty", CP_UTF8, CP_ACP ); "'"
Sleep


476 :渡辺真:2011/12/11(日) 12:25:55.58
もう一つ
'http://www.freebasic.net/forum/viewtopic.php?t=9044&highlight=widechartomultibyte

477 :渡辺真:2011/12/23(金) 02:56:54.38
>>473
有難うございます。私が待望していたのは、まさしくこれでした。超感謝です。

マニュアルのページに、以下の例を追記しました。

1.「プログラムコード」から、「ShiftJISの日本語全角文字列を指定」して、
ShiftJIS のテキスト・ファイルに書き出す。そして確認のため読み戻す。
これを、UNICODEに変換して、テキスト・ファイルに書き出す。そして確認のため読み戻す。
これを、ShiftJIS に変換戻しして、再度、ShiftJIS でファイルに書き出す。
http://makoto-watanabe.main.jp/freebasic/PgEncoding.html#ShiftJIS

2.既存の ShiftJIS のテキスト・ファイルを読み込んで、UNICODEに変換して別名で保存する。
UNICODE で保存したファイルを読み込んで、ShiftJIS に再変換して別名で保存する。
http://makoto-watanabe.main.jp/freebasic/PgEncodingShiftJIS.html


478 :渡辺真:2011/12/23(金) 03:02:07.42

3.既存の ShiftJIS のテキスト・ファイルを読み込んで、UNICODEに変換して、
FreeBASIC の Len や Mid 関数を使って、文字列変換をする。
文字列変換した結果を、UNICODE から ShiftJIS に変換戻しして、
別名で ShiftJIS のテキスト・ファイルとして書き出す。
http://makoto-watanabe.main.jp/freebasic/PgEncodingShiftJIS.html#RubyTag

どれも処理は、秒単位で終わって、FreeBASIC のスピードを痛感しました。

ただ、ルビ・タグ変換の処理時間は、下記のとおりで、内部処理で UNICODE 化している Excel VBA インタープリタに、FreeBASIC が負けている点が、悔しいですね。
ActiveBasic2:87秒、VBScript:6秒、FB:4秒、Excel VBA:2秒
http://makoto-watanabe.main.jp/verticaleditor.html#start


479 :デフォルトの名無しさん:2011/12/25(日) 14:27:31.87
コンバータ使った。
ひらがなは出力できるけど漢字は出来ねぇ。なんでだー

と思ったら、なんか上の方にヒントっぽいのが書いてある。

480 :デフォルトの名無しさん:2011/12/25(日) 17:37:09.35
事故解決した。

Linuxでコンバートした奴ではなく、
Windowsでコンパイルしたフォントを使ったら
ちゃんと表示された。
(コンパイル&実行はPuppy Linux)

481 :デフォルトの名無しさん:2011/12/25(日) 21:42:28.46
よく判らんけど、Puppyでコンバートしたのも正常に作動した。
なんだったんかなぁ?

482 :デフォルトの名無しさん:2011/12/28(水) 09:18:32.69
さあね(´・ω・`)

483 :デフォルトの名無しさん:2011/12/28(水) 20:53:41.95
JIS$とKNJ$を使いたいんだけど、ないよね。

どういう方法で代用できるんだろうか?

484 :483:2011/12/28(水) 21:10:26.67
事故解決した

485 :渡辺真:2011/12/28(水) 22:28:31.13
テキスト・ファイルの ShiftJIS ⇔ UNICODE 変換で、対象のファイルを選択するために、「ファイルを開くダイアログ」を使うように変更しました。
http://makoto-watanabe.main.jp/freebasic/PgEncodingShiftJIS.html
「ファイルを開くダイアログ」は、有用ですね。

486 :デフォルトの名無しさん:2011/12/28(水) 22:29:27.30
自己解決したやり方をここで書けば皆が幸せになれる

487 :渡辺真:2012/01/15(日) 11:29:17.47
FreeBASIC GTK 教本 を追加しました。
http://makoto-watanabe.main.jp/freebasic/tipsFreebasicgtktutorial.html

実行時に GTK ランタイムが必要ですが、簡単?に「グラフィック・ユーザ・インタフェース」を実装できます。

注:GTK とは、GIMP ツールキットのことです
追記:「エンター信号」の事例が動きませんが、どこが悪いのですかね。

488 :渡辺真:2012/01/21(土) 12:10:37.41
日本語マニュアルの CHM 版も、更新しました。
http://makoto-watanabe.main.jp/freebasic/

補足の項目を、追加しています。
http://makoto-watanabe.main.jp/freebasic/TipsTricks.html

489 :渡辺真:2012/01/28(土) 01:00:53.28
クイック・ソートを追加しました。
http://makoto-watanabe.main.jp/freebasic/tipsQuickSortRoutine.html

1千3百万行、1GB のテキスト・ファイルを、ソートできました。
私のパソコンは、メモリが 1GB だからか、1時間もかかりましたが。(^^ゞ
(ファイル・サイズが 1GB だと、I/O にも、それなりの時間がかかります。)

490 :渡辺真:2012/02/04(土) 17:02:52.60
Win32 SDK Reference Help 「win32.hlp(1996/11/26)英語版」を、
Universal Extractor で、リッチ・テキストに、デ・コンパイルして、
「HTML Help Workshop」で、CHM にコンパイルした Win32.chm を、ダウンロードできるようにしました。

491 :渡辺真:2012/03/04(日) 01:38:38.78
ユーザ・インタフェースのライブラリ「Window9」を見つけました。
これはすごいですよ。これを使うと、プログラミングの生産性が、飛躍的に改善されるでょしう。
http://makoto-watanabe.main.jp/freebasic/Window9.html
ただ、マニュアルがロシア語です(^^ゞ。どなたかロシア語に挑戦してみませんか?

400以上もある関数の構文は、PureBasic と同様の形式なので、マニュアルが無くても、それなりの人なら使えるでしょう。
(関数は、ユーザ定義関数として記述され、ソースが公開されているので、プログラミングの教材としても使えるでしょう。)


492 :渡辺真:2012/03/18(日) 23:35:24.01
Win32 SDK Reference Help (英語版)に、
MSDN ライブラリ (日本語版) で、日本語版が公開されている 約 1,200 ページを、差し替え、追加して、
「HTML Help Workshop」で、CHM にコンパイルしたもの(Win32JP.zip)を、ダウンロードできるようにしました。
http://makoto-watanabe.main.jp/freebasic/

FbEdit に、パスを設定すると、コーディングのとき、F1 キーで参照できるようになります。
http://www.hi-ho.ne.jp/makoto_watanabe/FbEdit/OptionsHelpMenu.htm


493 :渡辺真:2012/03/24(土) 00:04:17.03
Win32 API ヘルプ日本語版CHMを、更新しました。
先の、3月18日に公開したバージョンでは、日本語ページの取得モレか大量にあることが分かりました。
今回は、公開されている日本語ページのほとんどを取得して織り込んだつもりです。
先のバージョンをダウンロードされた方は、恐れ入りますが、ダウンロードし直して下さい。

494 :営利利用に関するLR審議中@詳細は自治スレへ:2012/03/29(木) 09:22:34.09
いつもお疲れ様

495 :渡辺真:2012/04/14(土) 01:06:58.30
Win32API 日本語マニュアルを、2012/03/31 に、また更新しています。(^^ゞ
http://makoto-watanabe.main.jp/freebasic/
2012/03/24 のバージョンは、英字部分(西ヨーロッパ Windows-1252)を、Shift_JIS に強制的に変更するときに、ダブル・クオーテーションの部分で文字化けしていました。
英字部分を、Windows-1252 のままにして、再コンパイルしました。
旧バージョンで、英語部分の文字化けが気になる方は、再度ダウンロードし直して下さい。m(__)m
(アクセス規制で書き込めなかったので、古新聞ですみません。)

496 :デフォルトの名無しさん:2012/05/03(木) 10:23:18.58
初めてWindows版のFBCを触ってみたんだけど、なんだろうね。

Linux版の方が圧倒的にとっつきやすいような気がする。
標準環境でエディターからサクッとコンパイル出来るし。

497 :デフォルトの名無しさん:2012/05/04(金) 19:53:28.51
出来た!!

Puppy LinuxにFreeBasic0.23.0の導入出来た!!!!!

これで所有する全てのマシンでFreeBasicが動かせるめどが立った!!

498 :渡辺真:2012/05/11(金) 23:14:23.38
日本語マニュアルに、「FreeBASIC 拡張ライブラリ」のページを追加しました。
http://makoto-watanabe.main.jp/freebasic/TipsTricks.html

注:「FreeBASIC 拡張ライブラリ」に付属の、サンプル bas の改行コードが、LF になっています。
FbEdit に読み込むためには、改行コードを CR+LF に変換する必要があります。


499 :デフォルトの名無しさん:2012/07/22(日) 18:43:59.13
あげ

500 :デフォルトの名無しさん:2012/08/07(火) 19:22:25.68


501 :デフォルトの名無しさん:2012/08/12(日) 20:17:08.16
これで簡易Http鯖が作れますか?

502 :渡辺真:2012/08/25(土) 12:59:21.35
FreeBASIC 0.24.0 / 2012年8月20日 リリース

ユーザ定義型(構造体)の継承がサポートされ、5つの予約語が追加されました。
http://makoto-watanabe.main.jp/freebasic/PgExtends.html

追記:描画関連ライブラリ Window9 のマニュアルの翻訳を進めています。
http://makoto-watanabe.main.jp/freebasic/Window9/
こちらに付いても、乞う翻訳支援。
(注:できるだけカタカナを使わないで日本語化したいというのが、翻訳ポリシーです。)

503 :デフォルトの名無しさん:2012/10/12(金) 08:39:40.15
>>502
おつかれ〜

504 :渡辺真:2012/10/13(土) 12:57:35.54
一週間の休みが取れたこともあり、描画関連ライブラリ Window9 ロシア語マニュアルの日本語化は、順調?に進んでいます。

例えば、
http://makoto-watanabe.main.jp/freebasic/Window9/PieDraw.html
http://makoto-watanabe.main.jp/freebasic/Window9/Gadget.html
などの、簡単?な「例」を試してみると、FreeBASIC + Window9 の実力が分かります。

是非一度お試しを!

(追記:日本語の不適切な点など、ご指導いただければ幸いです。)

505 :デフォルトの名無しさん:2012/10/14(日) 21:31:19.68
お休み。
あんまり無理すんな。
寒くなってきたし、油断すると風邪引くよ。

Window9ってネーミングは、いつまで使えるんだろうなぁ。
そのうち、マイクロソフトが気がついてぶちきれると思うんだ

506 :デフォルトの名無しさん:2012/10/19(金) 13:27:58.91
FreeBasic落としてみたけど、これ使う事あるのかな?
VB.NETで十分なような気がするけど
スタンドアロンで動く事に意味があるのかも

507 :デフォルトの名無しさん:2012/10/19(金) 17:03:39.91
両者の方向性はかなり異なるような気がするけど。
まぁ、「VB.NETで十分」と「FreeBasicで楽しみたい」とは、互いに排他的な条件ではないのだし。

508 :デフォルトの名無しさん:2012/10/19(金) 17:33:56.36
QBASICは初めて「遺伝的アルゴリズム」を書いたので特別な思い入れがあるんだ
でもC/C++を使うようになった今でも意味あるのかなあ?と思ってさ

509 :デフォルトの名無しさん:2012/10/21(日) 08:32:53.99
ヘリやジェット機が主流になっても、
レシプロ飛行艇の活躍の場は間違いなく存在している。

510 :デフォルトの名無しさん:2012/10/22(月) 10:21:13.86
         い  (.    ,'::::/:::/:::::::;>.、!:::!  ヽ::::::::::::::、::::::::::::::::ヽ!、  `ヽ.. 粗  そ
 す  . 誰  っ  (.    i:::,'::::,':::::::,'iイ::|!\|! u |∨.::.:.:.:|i:.:.:!::::::::〉、::ヘ  ノ  末  ん
 る  . が  た  (   |::i:::::i::::::::i:::|∨ィ≠ミ、  ! .〉、:::::!i::::|::::::/:::::::>ヘ ヽ  な  .な
. っ  満  い  (   |::i:::::i::::::::i:::|〃r=ァ。 .ヾ' ノ ノ }xィ'}´i:l::〃:::/:::::::〉 .}  記
 て  . 足     (.  ヽ !::!::::i::::::::i:::i{ 、i!::!::j!      ´,,.。`V从:::/::::::::::/ ノ  号
 言            \` i::i.:.::i.:.:::::i.:从  ̄:::::::::  ,  {::i:j! }}彡'≦三彡'  ). で
. う     { ̄ ̄`i、´ ノ`ヽ:.!:.:.:::i:::i| ヽ  ,'⌒ー==ァ::`ヾ"∧:::::.:ヽ     )
 ん   __   )、   ヘ .ニ!   {:.i:.:.::::!:::!   {::::::/⌒ヽ. u /::∧::::::.:.:.、   /
 で   / `,:'ー‐ー‐:'´:::::::`ヽト-ィi:.:|:::|、r'⌒`/,   | .イ::::::::∧::ハ::::}    ̄)/´`ヽ
 す  .i  〃:::::::::::::::::::::::::::::::::::ヽハ:j〃´!   ! ゝ 、)ノイ:::l::::::::::::i:リ、i::ノ  
 か   `)!::::::::::::::::::::::::::::::::::::::::::::>´i   .|  .jゝ--''´{::!::::!i:::>''´ ̄ ̄ ̄ ̄`>
. !!  ノ }::::::::::::::::::::::::::::::::::::::::/i  ヽ  !  ハ   ヽ<´           (ヽ.

511 :デフォルトの名無しさん:2012/10/22(月) 13:02:30.93
いつも小学5年生からお疲れ様

512 :デフォルトの名無しさん:2012/10/22(月) 13:07:23.02
小学5年生からいつもお疲れ様

513 :デフォルトの名無しさん:2012/11/08(木) 19:30:48.51
0.24.0と、これまでの違いって、わかりますか?

文法が変わった気がするんですけど。
ってか、コンパイルエラーが出てしまう。
まぁ、ちょっと変則的なプログラムだからエラーを出すのが
正しいのかもしれんけど。

514 :渡辺真:2012/12/16(日) 17:00:32.66
Window9 の日本語ヘルプ chm 版をダウンロードできるようにしました。

makoto-watanabe.main.jp/freebasic/Window9/W9S.html
の一番下です。

515 :デフォルトの名無しさん:2012/12/16(日) 20:29:13.92
へえ

516 :デフォルトの名無しさん:2012/12/16(日) 21:03:55.99
お疲れ様です。

517 :デフォルトの名無しさん:2012/12/30(日) 22:51:49.05
ほうほう

518 :デフォルトの名無しさん:2013/01/19(土) 00:31:35.80
メモ
画像用変数の宣言はScreen命令に行わなければ無効となる

519 :渡辺真:2013/01/20(日) 16:02:21.24
FreeBASIC ヘルプ Wiki ファイルの取得と、更新日の確認方法

Website Explorer
http://www.umechando.com/webex/
で、スタート・アドレス(ターゲットのURL)を
http://www.freebasic.net/wiki/wikka.php?wakka=DocToc
として、フィルタの「次の語をファイル名に含むページを解析しない」に
revisions history comments edit textsearch PageIndex
を指定して、探査開始します。
取得した html ファイルを、フォルダ・ダウンロードします。

html の更新日は、下記の Excel VBA(FreeBASIC ではありません(^^ゞ)で抽出します。
http://makoto-watanabe.main.jp/vba_file0.html#html

追記:FreeBASIC ヘルプを日本語化済みに対して、Wikiで更新されたページが、600ページもありました(^_^;)
キャッチアップに、また1年程度かかりそうです。

520 :デフォルトの名無しさん:2013/02/08(金) 21:00:15.93
sub命令がとてつもなく重要な役割を果たしていることを知って愕然とした

こんなの、俺の知ってるBasicじゃないやw
Basicってのは、GotoやらGosubであちこち飛び回ってなんぼのものなんじゃw

521 :デフォルトの名無しさん:2013/02/11(月) 03:38:05.92
>>520
そういう古いBASICも出来るし、オブジェクト指向の真似事も出来る
ある意味柔軟なBASICなんよ、しかもマルチプラットフォームでコンパイラ
VB.NETとは違うのだよ、VB.NETとは

522 :デフォルトの名無しさん:2013/03/06(水) 17:03:13.46
大学院時代、PC98系ノートパソコンと自作QuickBasicで得た1992年のデータがある。
時代の流れと共にそのデータを再現できなくなっていた。
(QBを買えばいいんだろうけど)
最近になって、FreeBasicを知り、昔のプログラムを少し手直しして再現。
プログラミングと画面に懐かしく感じた。FreeBasicに感謝。

523 :デフォルトの名無しさん:2013/05/06(月) 23:05:59.08
v0.9(0.25)のプレビルドが上げられているね

524 :デフォルトの名無しさん:2013/06/05(水) 00:25:36.93
QBASICはベーマガでWin95のインストールディスクに隠されてるということで使ってたなあ

525 :デフォルトの名無しさん:2013/06/17(月) 01:00:57.92
遊びでしか使わない言語とか、遊びでしかない。

>>521
そういう汎用性は言語としては立場が曖昧になる。
オブジェクト指向ならそれが得意な言語を使うのが最適である。

現状でのアプリの数をみれば明白だろ。

526 :デフォルトの名無しさん:2013/06/17(月) 13:23:12.09
恐竜が跋扈していた頃の哺乳類のようなイメージ。

527 :デフォルトの名無しさん:2013/07/18(木) NY:AN:NY.AN
無名関数のクロージャってやつ検索してたら、
そういや昔QuickBasicやってたときProcedureの中で変数にStatic宣言つけると、ってこと思い出したよ。

528 :デフォルトの名無しさん:2013/07/22(月) NY:AN:NY.AN
>>527
FreeBASICにクロージャは予定されていないよなあ
その内案が出るかもしれんけど、それなら関数をオブジェクトとして使えるようにして欲しいかなあ
関数ポインタじゃなくて参照型で

529 :デフォルトの名無しさん:2013/09/23(月) 15:33:19.27
FreeBASICでのメニュー付きの Window GUI というのは、最も標準的な構築方法はなんでしょうか?
samples も example もプログラムソース内記述でスマートととは言えないようです。できれば、
リソースエディタから生成する方法を探しています。

皆様のアドバイスをお願い致します。

530 :デフォルトの名無しさん:2013/09/23(月) 20:48:20.20
>>529
つFbEdit

531 :デフォルトの名無しさん:2013/10/16(水) 18:03:23.29
>>530
ありがとうございます。まっさらからやってみたところ期待する動作するところ
まで確認できました。

2つの質問があります。
・リストボックス内のダブルクリックイベントはどのように拾うのか。
・コントロール要素のタブストップが全く機能しない状態から機能させるには?

532 :デフォルトの名無しさん:2013/10/17(木) 01:40:19.24
>・リストボックス内のダブルクリックイベントはどのように拾うのか。
自己解決しますた。
Case WM_COMMAND
 Select Case HiWord(wParam)
  'Case BN_DOUBLECLICKED
  Case LBN_DBLCLK
   Select Case LoWord(wParam)
    Case IDC_LST1
     idcLST1_LBN_DBLCLK( hWin )
   End Select
  Case BN_CLICKED,1

533 :デフォルトの名無しさん:2013/11/20(水) 10:56:19.67
>>531
これも自己解決しますた。CreateDialogParamでTabstopが効かなくなる症状は、
棒線部分を追加して機能するようになりました。

WinMain内:
 Do While GetMessage( @msg,NULL,0,0 )
| if IsDialogMessage( hWnd , @msg ) Then
|  Continue do
| EndIf
  TranslateMessage(@msg)
  DispatchMessage(@msg)
 Loop

534 :デフォルトの名無しさん:2013/12/19(木) 21:34:41.65
XP/7(x86版,x64版)では、sleepの精度は約16msだったのですが、
いつのまにかx86版だけ1ms程度になっていました。
今月のWindows Updateの影響?

535 :デフォルトの名無しさん:2014/06/04(水) 15:33:51.52 ID:ZiHf6GEW
あげろ屑

536 :デフォルトの名無しさん:2014/06/06(金) 16:04:14.79 ID:hN60XdWK
現状、C を経由せずに C とほぼ同レベルの実行ファイルを作成できるコンパイラとしては、この FreeBASIC が
マニュアルなどの事前に読破すべき文書量が一番少ないようだ。

537 :デフォルトの名無しさん:2014/07/11(金) 16:54:09.40 ID:4nQ4yxLs
覚えるのは、比較的楽だと思うんだけど。

日本人でFreeBasicでプログラム組んでる人がいないから、
サンプルが見つからなくて寂しいよね。

で、参考になるプログラムが少ないと、
初心者は技術の習得がなかなか出来ない。

538 :デフォルトの名無しさん:2014/07/15(火) 00:17:18.40 ID:PIdU2m7k
本当は何処かに日本コミュニティサイトがあるんじゃないか
なんて思ったり思わなかったり

ここもこんな感じだし、作っても人が集まらないだろうな

539 :デフォルトの名無しさん:2014/07/19(土) 23:33:53.09 ID:rTWu+EVi
正直、STG、RPG,アクションゲームの優良なサンプルプログラムが
ソース付きで用意されていれば、
一定数のユーザーは獲得できると思う。

どんな言語でも。

540 :デフォルトの名無しさん:2014/07/20(日) 01:33:21.37 ID:gPSb7JcS
記述としてみたらBASIC系の言語だけど、その形態はCと変わらないから
何かしらのプログラミング言語をやってる人が趣味でやるような言語だからね

この言語やるにあたって初心者の壁と言ったら

1)日本語の情報が乏しい:英語、ドイツ語、ロシア語圏辺りに情報が多い
2)開発環境の構築:IDEがあるけど使い慣れたエディタで開発環境を構築しようとすると、ちょっと手間
3)コンパイル:ヘッダファイルのInclude、オブジェクトファイル、リンクなどの概念を理解しないといけない
4)コンパイラオプション:上記同様にコンパイラの仕様を理解しないといけない
5)静的型付け:BASICなのに動的じゃないって思う人多いんじゃないかな
6)ポインタ:言語仕様を知る前から手を出すと躓く
7)OOP:無視して手続き型として書くことも出来るけれど、OOPの概念理解した方がフルに使える

どれもC辺りの情報で代用できるけど初心者にやさしい言語とは言えないと思うよ
英語が出来たら疑問もすぐ解決することが多いけれどね

>>539
FreeBASICのサンプル、公式フォーラム、海外サイトを見れば手に入るんんだけどね

541 :デフォルトの名無しさん:2014/10/26(日) 09:26:00.57 ID:Hxoy1BxB
久しぶりにFree Basicのサイトを見たら、
64bit版が出ていたのですね。

542 :デフォルトの名無しさん:2014/11/28(金) 22:44:34.37 ID:WOSDqgwZ
遂にバージョン1.00.0になったか。

543 :デフォルトの名無しさん:2014/12/06(土) 13:03:34.28 ID:odk/2AM+
海外のプログラム拾ってきて試しに走らせてみたら、400FPSとか出しててワロたwww

544 :デフォルトの名無しさん:2014/12/07(日) 21:24:19.57 ID:j4d+KELg
lazarusといいFreeBasicといいオッサン向けの玩具があるもんだw

545 :デフォルトの名無しさん:2015/01/19(月) 08:45:13.78 ID:N4OQ/NDW
2014年12月28日にバージョンが1.00.1に
なっている

546 :デフォルトの名無しさん:2015/01/24(土) 21:37:18.28 ID:YKKF9SZJ
マイクロソフトが公式でfreeのbasic言語提供してるのに誰もとり合って無いという
small basicのスレが無かったぞ

547 :デフォルトの名無しさん:2015/01/25(日) 14:13:31.49 ID:sY5zvh9c
初心者向け新言語 Small Basic スレ
http://toro.2ch.net/test/read.cgi/tech/1256536933/

548 :渡辺真:2015/01/25(日) 19:03:02.12 ID:tXa6tsBr
半年ぶりに、日本語版マニュアルを改訂しました。
2014年末までの英文版 Wiki の変更を反映したつもりです。
http://makoto-watanabe.main.jp/freebasic/
CHM 版は、下記でダウンロードできます。
http://makoto-watanabe.main.jp/freebasic/FB-manualJP20150125.zip

動的配列
http://makoto-watanabe.main.jp/freebasic/TutDynaArrayType.html

多様性
http://makoto-watanabe.main.jp/freebasic/TutSimPolymorphism.html
などが、FB バージョン1.00 の特徴を反映したページです。

修正すべき点、加筆すべき点など、ご指摘、ご意見を、お願いします。
FreeBASIC で遊んでみて下さい。

549 :デフォルトの名無しさん:2015/01/26(月) 10:00:56.18 ID:epdvrXFg
おつかれさまです!!

550 :渡辺真:2015/01/27(火) 12:14:08.45 ID:is1zNUjs
昨年9月に、Windows 用 GUI library 「window9」オンラインヘルプの日本語版を、更新しています。
http://makoto-watanabe.main.jp/freebasic/Window9/W9S.html
簡単?に、GUI プログラムを作成できます。

CHM 版の日本語ヘルプ・ファイルは、下記でダウンロードできます。
http://makoto-watanabe.main.jp/freebasic/Window9/helpWindow9JP20140906.zip

英文のCHMヘルプ(helpWindow9en.chm)は、下記でダウンロードできます。
http://sourceforge.net/projects/guiwindow9/files/
http://sourceforge.net/projects/guiwindow9/files/helpWindow9en.zip/download

551 :デフォルトの名無しさん:2015/02/24(火) 22:10:55.23 ID:452us3JE
Raspberry Pi でも使いたいが、どうすりゃいいのか??

552 :デフォルトの名無しさん:2015/02/25(水) 15:14:02.91 ID:x8Xq3qPC
Raspberry Pi って、Debianでしょ?

553 :デフォルトの名無しさん:2015/02/25(水) 21:53:05.36 ID:0Fb++fAH
この辺までは行き着いたんですが … よくわからん。
http://www.raspberrypi.org/forums/viewtopic.php?f=91&t=101333
http://www.freebasic.net/forum/viewtopic.php?f=5&t=21433
いかんせん私はあまりに素人過ぎる。
 スミマセン、もうすこし勉強してからにします。

554 :デフォルトの名無しさん:2015/02/26(木) 10:32:56.58 ID:6BBtAl/+
ここに書かれている手順の通りやればいいんじゃないの?
http://www.freebasic.net/forum/viewtopic.php?f=17&t=22815

555 :渡辺真:2016/02/14(日) 16:34:40.65 ID:HV1dIDtg
一年ぶりに、日本語版マニュアルを改訂しました。
2016年初までの英文版 Wiki の変更を反映したつもりです。
http://makoto-watanabe.main.jp/freebasic/

CHM 版は、下記でダウンロードできます。
http://makoto-watanabe.main.jp/freebasic/FB-manualJP20160214.zip

今回は「多重スレッド化サポート」の事例が増えています。
http://makoto-watanabe.main.jp/freebasic/CatPgThreading.html

修正すべき点、加筆すべき点など、ご指摘、ご意見を、お願いします。
FreeBASIC で遊んでみて下さい。

556 :デフォルトの名無しさん:2016/02/15(月) 21:13:03.71 ID:qEKgJ8c+
ご苦労様です。
ダウンロードしました。
読んで見ます。

557 :デフォルトの名無しさん:2016/02/24(水) 12:31:56.77 ID:/sUrhaz/
https://forum.thegamecreators.com/thread/214185

FreeBASICに 3Dライブラリーを組み込んだものです。
3Dライブラリーは、DarkBasicProの3Dライブラリーを使っています。

558 :デフォルトの名無しさん:2016/04/18(月) 15:59:58.32 ID:ywKInTWj
初めて使おうとしてうまく実行形式が作れんかった。

http://www.dotup.org/uploda/www.dotup.org825113.png.html

FbEditの新規プロジェクトで、
初期値 WindowsGUI
ではなく
Windows console
を選択することにより、Xクリックで終了する実行形式ファイルを作成することに成功した。

FbEdit で、Shift-Jis を表示する方法を知っている人がいたらヨロ。

559 :デフォルトの名無しさん:2016/04/18(月) 16:04:10.49 ID:ywKInTWj
>>558
実行環境を書くのを忘れた。
Win 10 32bit。

560 :デフォルトの名無しさん:2016/04/18(月) 16:24:44.38 ID:wUIst4qK
Print "これはテストです"
sleep

FbEditの画面で日本語(2byte文字)を入力すると、
エディター画面に直接反映されるのではなく、画面の左上に当該文字が
表示される。それでよければ「無変換」キーを押すと、エデイター画面に
表示される

561 :デフォルトの名無しさん:2016/04/19(火) 06:52:30.36 ID:ja8UfpEL
>>558
コードの保存にはutf8、utf16、utf32をオススメするよ

FreeBASIC自体Shift-JISをサポートしていないし
セルフホスティングコンパイラだから
Shift-JISのファイルを別の型式(恐らくbom無しutf8)で認識する
誤動作の原因になるよ

FBEditもShift-JISをサポートしていないはず

562 :デフォルトの名無しさん:2016/04/19(火) 08:25:56.56 ID:MSp4Jjzs
>>561

たしかに、utf-8で保存するのが一番でしょうね。

ですが、>>560のソースはFBeditの画面上で入力したものです。

563 :デフォルトの名無しさん:2016/04/19(火) 08:36:52.43 ID:ja8UfpEL
>>562
ごめん、言っている意味が分からないよ
エディタ上で日本語入力するのとShift-JISなどの文字コードと何か関係があると?

564 :デフォルトの名無しさん:2016/04/19(火) 14:45:03.46 ID:MSp4Jjzs
要するに、Shift-JIS使用のキーボードでFBEditで入力できるし、
ほかのテキストエディターで入力したファイルの
文字コードをShift-JISに指定したものも、FBEditで読めるし、
コンパイル・実行もできますから、なにもutf-8にこだわることはない
ということです。

565 :デフォルトの名無しさん:2016/04/19(火) 18:10:57.37 ID:ja8UfpEL
>>558
今、久々にFBEditを落として使ってみたよ
オプションのコードエディタの項目のフォントコードを日本語フォントに変更して
文字セットを日本語に変更したらOKよ

>>564
FBEditを使用してみて分かったけど
基本はBom無しのutf8、Shift-JISとASCIIが共通だからコンパイルは通るね
マルチバイト文字列のASCも正常動作するみたいだし、確かに支障はないみたいだ
つか文字コードを選択して保存できないみたいだから
結局、日本語環境でマルチバイト文字列を含めたら自動的にShift-JISになるね
FBEditがそう認識しているかどうかはわからないけど

566 :デフォルトの名無しさん:2016/04/21(木) 20:36:07.42 ID:/4SI9XZs
>>558 だけと

なんとか表示できた。起動直後の状態で、
「オプション」
 「コードエディタ」
  「フォント」の下の「コード」
    「文字セット」の下の選択を「日本語」にして「OK」
「コード・エディタ」の右中央付近の「OK」
で再起動。

見本コードのコメント欄に書かれている、英文を日本語に直す作業をしています。
半分ぐらい和訳が終わったころには、使い方もわかるようになるでしょう。
しばらくはFEBで、西部労働レストラン、を続けていく予定です。

567 :デフォルトの名無しさん:2016/04/23(土) 11:40:09.10 ID:E79kK8MR
京大の文系の奴がまだwww
http://kasumigase.seesaa.net/article/436025702.html

568 :デフォルトの名無しさん:2016/04/27(水) 21:18:41.79 ID:Ng5845/K
FEBで、西部労働レストラン、で気が付いたこと。
サンプルのソフトがどのような動作を目的に作られたかよくわからぬ。

(なんたら)\FbEdit\Projects\Samples\TinyWeb\TinyWeb.Bi
を以下の通りに変更。
Type 宣言名(IID)がなにかと重複していたことにより動作しなかったと思われる。

type IID → type IIDtp

QueryInterface As Function(ByVal pif As Any ptr,ByVal iid As IID ptr,ByVal pInterface As Any ptr) As Integer

QueryInterface As Function(ByVal pif As Any ptr,ByVal iid As IIDtp ptr,ByVal pInterface As Any ptr) As Integer

QueryInterface As Function(ByVal pif As Any ptr,ByVal iid As IID ptr,ByVal pInterface As Any ptr) As Integer

QueryInterface As Function(ByVal pif As Any ptr,ByVal iid As IIDtp ptr,ByVal pInterface As Any ptr) As Integer

(なんたら)\FbEdit\Projects\Samples\SprShtDemo\SprShtDemo.Bas


DrawIcon(lpDRAWITEMSTRUCT->hdc,lpDRAWITEMSTRUCT->rcItem.left,lpDRAWITEMSTRUCT.->rcItem.top,hIcon)

DrawIcon(lpDRAWITEMSTRUCT->hdc,lpDRAWITEMSTRUCT->rcItem.left,lpDRAWITEMSTRUCT->rcItem.top,hIcon)
と変更したら、構文エラーが消えコンパイル可能にはなったが、sprsht.dll 不在に付不動とのこと。
「sprsht.dll」をどこで参照しているのかは不明。

(なんたら)\FbEdit\Projects\Samples\RAEditTest\RAEditTest.bas
'' RAEdit.DLL 未発見で動かず
'' http://www.hi-ho.ne.jp/makoto_watanabe/FbEdit/OptionsDialogEditor.htm#start には、関連ソフトとして存在しているみたいな記載有。
'' マイクロソフトのV.S.関連ソフトか、LibreOfficeの関連ソフトか、不明。

569 :デフォルトの名無しさん:2016/04/27(水) 21:21:28.79 ID:Ng5845/K
>>568 のつづき

(なんたら)\FbEdit\Projects\Samples\PictCtrl\PictCtrl.Bi
内4行が動かず。
Type OLE_XSIZE_HIMETRIC As Integer
Type OLE_YSIZE_HIMETRIC As Integer
Type OLE_XPOS_HIMETRIC As Integer
Type OLE_YPOS_HIMETRIC As Integer

Dim Shared IID_IPicture As GUID=(&H07BF80980,&H0BF32,&H0101A,{&H08B,&H0BB,&H000,&H0AA,&H000,&H030,&H00C,&H0AB})

(なんたら)\FbEdit\Projects\Samples\GridDemo\GridDemo.Bas

コンパイルされ実行形式のファイルが作成されるが、自然終了する。
仕様か否か不明。

(なんたら)\FbEdit\Projects\Samples\FBTabStrip\FBTabStrip.bas
'' ()内は正常な他のルーチンと同じなので、手続き名の重複とおもわれる。
' 'AAAAAA を追記した
function DlgProcAAAAAA(byval hDlg as HWND,byval uMsg as UINT,byval wParam as WPARAM,byval lParam as LPARAM) as bool

(なんたら)\FbEdit\Projects\Samples\fbgfx\fbgfx.bas
タスクが終了せず。仕様か?

570 :デフォルトの名無しさん:2016/04/29(金) 10:57:45.33 ID:+ppFivMh
FEBで、西部労働レストラン、やっていて気が付いたこと。

(なんたら)\FbEdit\Projects\Addins\ReallyRad\ReallyRad.fbp
の中身が気になった。
4=..\..\..\..\FbEdit\Inc\RAProperty.bi
5=..\..\..\..\FbEdit\Inc\RAResEd.bi
7=..\..\..\..\FbEdit\Templates\Modal.rad
8=..\..\..\..\FbEdit\Templates\Modeless.rad
10=..\..\..\..\FbEdit\Inc\Addins.bi
11=..\..\..\..\FbEdit\Templates\DialogAsMain.rad
12=..\..\..\..\FbEdit\Templates\DialogApp.rad
の内容。動くように書き換えてしまったので、本来の内容は失われている。
「..\」の数があわず、\FbEdit\Templates\内や\FbEdit\Inc\内のファイルが見つからず、コンパイルされないという現象が見られた。

C:\tool\FbEdit\Projects\Addins\Toolbar\Make.bat
の内容を見ると、C:\FbEdit\ 以下に導入するのが前提で、E:\Bas\Tool\FbEdit\ に導入するような変なことをするとやたら苦労する羽目に合うことが、見当つく。

571 :デフォルトの名無しさん:2016/05/05(木) 08:45:25.47 ID:EKggghG+
>>568
2つの*.dll ファイルは検索したら、ネットに落ちていた。
とにかく拾って*.exeの場所にコピーしたら、なんかそれらしい動きをした。

FbEdit の紹介 http://www.hi-ho.ne.jp/makoto_watanabe/FbEdit/index.html
で気が付いたこと。
このページの
さらに、マウスポインタを左側に持っていくと、ラジオ・ボタンが表示されます。
がわからなかった。「左側に」ではなく、「左下側のOutputの位置」だった。

http://www.hi-ho.ne.jp/makoto_watanabe/FbEdit/Removingfilefromproject.htm#start
でFbEdit を再起動しないと、取外したファイルがいつまでも表示される。
内部処理でどうなっているのかわからないので、即再起動したほうが良いような気分となる。

日本語表示ファイル:

「FbEditJP.chm」を選択して下さい。
の部分が今なおわからない。
「FbEditJP.chm」のコピー先に問題があるのか、操作に問題があるの(OSで1回表示しないと読み取れないのか、変なファイルが作られるのでOSによる表示はしていない)か、Win10の問題(レジストリ関係?)なのか不明。

V.B.6.0に使っていた自己作成ライブラリ(約2MB)をそのままコンパイルしたら、なぜか通ってしまった。
(れろれろれ).show で(れろれろれ).frmを表示しているにもかかわらず。

572 :デフォルトの名無しさん:2016/05/05(木) 08:52:41.36 ID:EKggghG+
>>571
自己作成ライブラリ はすべて *.bas ファイルね。
*.frmファイルは1個も含まれていない。

FreeBasic では、表示するファイルも*.bas で表示内容が同名の*.rcファイルに記載される模様。
変換を手作業でやらないとダメみたい。

573 :デフォルトの名無しさん:2016/06/30(木) 08:58:25.81 ID:3rN5WM3E
http://www.hi-ho.ne.jp/makoto_watanabe/FbEdit/index.html

http://www.hi-ho.ne.jp/makoto_watanabe/FbEdit/tut3.htm
の理解に苦しんだ。
STEP 1 の
>ダイアログの左から順に、「ツールバー」のボタンを設置していきます。
(中略)
>これは、この時点では紛らわしいですが、STEP2 で、必要になります。
は、これからする作業の概要であることに気が付くまで。

>次のボタンを追加して、
もややこしかった。
中央の「ボタン追加」をクリック、
「ボタン名」枠に「IDC_CUT」等を、「ID」枠に「1002」等を書き込んで次の「ボタンを追加して」の作業に移る。
「-」は、中央の「セパレーター追加」をクリックするだけで次の作業に移る。
に気が付くまで。

574 :デフォルトの名無しさん:2016/07/03(日) 16:05:11.36 ID:885DOIf8
>>537のつづき。
WM_INITDIALOG では、以下の行を追加して下さい:
の解釈にも苦しんだ。
この行の下の方に画像がある。
Function WndProc()ルーチン内のSewlect case 文
Case WM_INITDIALOG
hWnd=hWin
の後に1行を追記することだと気が付くまでにやたら時間がかかった。

でも、追加のボタンが表示されない。どこを間違えているのやら、
>>568-569あたりの影響でないことを祈る。

575 :デフォルトの名無しさん:2016/07/30(土) 16:01:28.28 ID:1orCyeEe
>>571 のつづき。
日本語表示ファイル:

「FbEditJP.chm」を選択して下さい。
の部分の解釈が可能になり、ついに日本語ヘルプの表示に成功した。

>ダウンロードして、Language フォルダに保存して下さい。
の部分について、存在する3ファイルを解凍して、C:\FbEdit\Language\ に全部コピーするのではなく、
C:\FbEdit\Language\ には、FbEditJPN.bmp と FbEditJPN.lng を
FbEditJP.chm に限って、C:\FbEdit\Help\ にコピーするものらしい。
ただ、3ファイルともに、C:\FbEdit\Help\とC:\FbEdit\Language\ にコピーした。
>「オプション」→「ヘルプ・メニュー」で「FbEditJP.chm」を選択して下さい。
の解釈は、
「オプション」をクリックして、マウスカーソルを下にずらして「ヘルプ・メニュー」をクリック。
「ヘルプメニューオプション」が表示されるので、左上の枠の候補のうち「FbEdit.help」をクリックして、表示色を変える
メニュー項目を「FbEdit help」はいじらなかった。
フルパスコマンドライン を 「$A\Help\FbEditJP.chm」に変更した。
「$A\Language\FbEditJP.chm」でもいいのかもしれない。
右上の「OK」をクリックすると「ヘルプメニューオプション」が消える。
内部変数がどうなっているのかわからないから、一旦、FbEdit を終了させる

再起動して、ヘルプ→fbEditで、FbEditの右側に「FbEdit日本語ヘルプ」が表示された。

なお、
解凍直後、ファイルをコピーした状態で C:\FbEdit\ に関係ファイルは移動した。APIディレクトリー等の内容はすべて変更前の元の状態に戻している。
ヘルプ→Win32 は何も表示されない。
ヘルプ→Windows styles は英文のヘルプメッセージが表示される。
Win10に切り替えた直後のため、Winのファイル構成がさっぱりわからない。
当分の間放置の予定。

576 :デフォルトの名無しさん:2016/07/30(土) 18:36:45.85 ID:1orCyeEe
>>537 の続き。
http://www.hi-ho.ne.jp/makoto_watanabe/FbEdit/tut3.htm
内容に関しては、サイト作成者が順次バージョンアップをしているらしく、ここに掲載したものと内容が変わっている場合があります。
Toolbar 作成ダイアログで、「出力」をクリックします。
 FbEdit の出力ウィンドウに、テキスト(下の #Define と Sub DoToolbar)が現れます。
 このテキストが、必要なコードです。
の欄。前回は、「「出力」をクリック」しても全く表示されなくて、結局、C:\Tool\FbEdit\からC:\FbEdit\に変更(サンプル等を好き帰る前の状態からコピー)したら、出力されるようになりました。
C:\FbEdit\ 以外では動かない可能性があります。
頭を抱えたのが「#Define IDC_TBR1 1001」の行。表示されません。
たまたま、「Toolbar.rc」タグを表示した状態で、「ファイルを保存(左上フロッピー1枚の絵)」をクリックしたら
#define IDD_DIALOG 1000
#define IDC_TBR1 1001
#define IDR_MENU 10000
#define IDM_FILE_EXIT 10001
#define IDM_HELP_ABOUT 10101
と出ました。

577 :デフォルトの名無しさん:2016/07/30(土) 18:38:01.90 ID:1orCyeEe
>>576のつづき。
ここまでくるには結構解釈に迷った分がこれ。
>Toolbar.rc を選択して、IDD_DIALOG を開きます。
>FbEdit の「ツールバー」から、「ToolBar(ツールバー)」ボタン(Buttonではないので注意)を、アプリのダイアログに、設置します。
上から4行目にあるタグの「Toolbar.rc」をクリックすることが「選択すること」
右から2番目の枠、ツリー構造の表示の「Toolbar.rc」の下の「Dialog」をクリックして(2回目以後は表示した状態になる)、「IDD_DIALOG」をクリックすると、左から2番目の枠に、実行時に表示されるソフトウエアの表示枠が表示される。
ここまでをすることが「IDD_DIALOG を開きます。」

「FbEdit の「ツールバー」」は、OutPut の上の33個ぐらいある小さな絵のこと、
この小さな絵にマウスカーソルをあてて、表示される文字を眺めていくと、四角いボタン2個が並んで長四角の枠の中に書いてある絵の上にあてると「ToolBar」と表示されるので、これをクリックする。
左から2番目の枠に、マウスカーソルを移動して、マウスカーソルが十字に代わっていたら、対角を選択してクリック
が「アプリのダイアログに、設置」すること。

このあたりをウダウダしているときに、「#Define IDC_TBR1 1001」の行が作成されることに気が付いた。

バージョン状方をかいとくね。
FreeBASIC editor 1.0.6.8

578 :デフォルトの名無しさん:2016/07/31(日) 14:21:05.98 ID:gMzjvNky
実録
http://www.hi-ho.ne.jp/makoto_watanabe/FbEdit/index.html

http://www.hi-ho.ne.jp/makoto_watanabe/FbEdit/tut1.htm
のトライ記。

「第二ステップ」の「お好きなアイコンを探して」で苦労した。
自前のソフトにアイコンなんてつけたことがないので、
http://www.vector.co.jp/vpack/filearea/win/amuse/icon/tool/
よりDLした
ANIめーかー、Win95用で、Win10ではレジストリーの読み取りができないとのメッセージ。
PC-98、PC-88でドット絵をやっていた時の気分でお絵かきするには、これが楽。
アイコンメーカー、Comctl32.ocxがないので動かない。
IconMaster、使い方がわからない。
IconEditor LittleCanvas Ver 1.14 何とか作れたみたい。

>拡張子rcのファイル(上の例では、Window.rc)を選択してから、
単に「Window.rc」のタグをクリックしただけでは「資源(R) 」の子メニューが選択できない。
「IDD_DLG1」をクリックして、作成するソフトの表示画面「http://www.hi-ho.ne.jp/makoto_watanabe/FbEdit/tut1_files/Dialog.jpg」を
左から2番目の枠内に表示されるようにする必要があった。
「、資源(R) の 資源内容 をクリック」すると、「作成するソフトの表示画面」が消えて、
「下の、ダイアログ画面」(http://www.hi-ho.ne.jp/makoto_watanabe/FbEdit/tut1_files/Resource.jpg)に相当する内容が、左から2番目の枠に表示される。

ブラウザとFbEdit を同時に表示させるべく縮小枠で表示させていると、「下の、ダイアログ画面」の右端のボタンの表示が隠れて見えない。
横スクロールバーをいじって左右に振ってもボタンが表示されない。
右から2番目の表示枠の左側の線を右にずらしたり、
右から2番目の表示枠の左側の線を右にずらしたり、
すると、ボタンが現れる。面倒くさいので、全画面表示にした。

579 :デフォルトの名無しさん:2016/07/31(日) 14:23:25.71 ID:gMzjvNky
>>578 のつづき
「 Add ボタンをクリックして、」Type欄に「BITMAP」と表示されて選択枠となるので、
Type枠の右側の端の▼をクリック、色々表示されるもののうち「ICON」をクリックする、他はわからぬ。
「Name」と「ID」枠は、1回の右クリックではキ−入力が可能にならない、連続2回のクリックが必要。
「FileName」枠は、右端にある下の3点並んでいるところをクリックすると、ファイル選択画面になる。
「プロジェクトパス」の内容が表示されるので、Resディレトクリーに移動することとなる。
ここで問題になるのが
>OK ボタンを押すと、リソース・ダイアログ画面から抜けられます。
とあるが、OK ボタンがない。存在するのは、「Add」「Deleta」「Preview」「Edit」のみ。
右から2番目の表示枠の「IDD_DLG1」とか、ファイルタブとかをクリックするとリソース画面から抜けられる。
2回目以後リソース画面に戻るときには「Resorece File」をクリックする。

>下の画面例のように表示されているでしょう。
とあるが、
「Dim Shared hInstance As HMODULE」
も表示されている。
Window.rc タブをクリックして、1枚のフロッピーをクリックすると、
#define IDD_DLG1 1000
#define IDC_BTN1 1001
#define IDC_ICON 500

と表示されるので、*.bi ファイルの内容を書き替えておく。
「Dim Shared hIcon As HICON」も追記すればよいのかな?
「以下の2行のコード」以後の2行をかきこんで、コンパイルをかけた(緑の横向き▼をクリックしたら)

#define IDC_ICON 500

がエラーと表示されたので、コメント行にした。

コンパイルをかけて、無事、アイコンが表示できました。

580 :デフォルトの名無しさん:2016/07/31(日) 17:36:54.08 ID:d+xPWOZW
エセ左翼の目的は、わざと突っ込みどころが多い主張をすることで自分たちへ注意を向けさせ、
カルトへ向かう非難の矛先を逸らすこと。
国益に反することを言ったり、主張が食い違うもの同士の対立を煽ろうとするので放置し難いが、
主義思想についての洗脳を受けているわけではなく、フリをしているだけなので、
言い負かされてもダメージを負った様子もなく、論点をすり替えられるかスルーされる。
まともに相手をしてはならない。

サヨに対する危機意識が強すぎると、普段は常識的に振舞っている
(又は、サヨから不当に叩かれている)政治家などがズレたことをやろうとした時でも、
許容したり擁護してしまいがちになるので注意が必要。

581 :デフォルトの名無しさん:2016/08/03(水) 22:01:13.64 ID:OILpZnSk
http://www.hi-ho.ne.jp/makoto_watanabe/FbEdit/tut2.htm

http://www.hi-ho.ne.jp/makoto_watanabe/FbEdit/tut2_files/Wizard3.png
で、「レ」印が3か所入っていることを見落とさないこと

2つの、テキスト・ボックス(editboxe) を、Text1 と Text2 と、名前を付けます。
 状況に合わせて、Text2 の Locked を TRUE に設定できます。
 4個のボタンに、左から右方向に順に、Command1、Command2、Command3、Command4と、名前を付けます。
の部分。
>FbEdit の IDD_DIALOG をダブル・クリックすると、下の画面のようになります。
の、下、左から2バンメの欄
「名前を付けます。」は、{Name}欄にそれぞれの文字を記載すること
>以下の画面のように、名前を付けます。
「以下の画面」が不在。一番上の画像( http://www.hi-ho.ne.jp/makoto_watanabe/FbEdit/tut2_files/Dialog2.jpg )だとおもわれる。
{Caption}欄に「Text」「Abort」「Exit」「Macro」を入力すること。

今日は疲れてここまで。

582 :デフォルトの名無しさん:2016/08/04(木) 21:37:57.06 ID:5Rln8Kt8
>>581 つづき。
Editbox.bas の
>コードには、既に灰色の部分ができあがっているはずです。
>赤の部分について、追加登録して下さい。
の部分に関して、見本では。
wc.lpszMenuName=Cast(ZString Ptr,IDM_MENU)
とある。
少し前の、Editbox.bi についても
#Define IDM_MENU 10000
と書いてある。

しかし、Editbox.rc を表示したまま「ファイルを保存(フロッピー1枚の絵)」をクリックすると
#define IDR_MENU 10000
という見本が作成されて、一括コピーして中身を書き換えると
Editbox.bas(80) error 41: Variable not declared, IDM_MENU in 'wc.lpszMenuName=Cast(ZString Ptr,IDM_MENU)'
Build error(s)
と、気か付きにくい障害が発生する。

>>579 で示したエラーは、次の通り
D:\bas\Projects\Editbox\Editbox.bi(11) error 4: Duplicated definition, IDC_Icon in '#Define IDC_Icon 500'

なお、
>そして、Editbox.rcファイルをチェックして、Notepad で結果を表示します。
は、不明。エクスプローラーを起動して、Notepad で表示した。
何か表示可能にするような設定があるのかもしれない。

583 :デフォルトの名無しさん:2016/08/05(金) 21:19:11.50 ID:NLyB8GBY
>>582のつづき。
C:\FbEdit\Templates\*.* をテキストファイルとして検索してみた。
すると
C:\FbEdit\Templates\DialogAsMain.tpl
ファイルに、「IDR_MENU」と「IDR_MENU」が存在することがわかった。
単に元ファイルの作成ミスではないかというきがするが、
*.tplについては何もわからないし、
文法についてもよくわかっていないので、わかっている人の判断を待ちたい。

584 :デフォルトの名無しさん:2016/08/05(金) 21:21:58.71 ID:NLyB8GBY
>>583つづき。ファイル情報は以下の通り。
ファイル名 C:\FbEdit\Templates\DialogAsMain.tpl
設定のタイプ 基本
文字コード SJIS
行数 146行
レイアウト行数 146行
変更されていません。

コマンド実行回数 2回
--ファイル情報-----------------
あなたはこのファイルを、他プロセスからの上書き禁止モードでロックしています。
ファイル属性 /アーカイブ
作成日時 2016年7月14日 04:51:11
更新日時 2007年8月26日 20:18:28
アクセス日時 2016年7月14日 04:51:11
MS-DOSファイル名 DIALOG~2.TPL
ファイルサイズ 3217 バイト

サクラエデタによるフロパティ情報である。

585 :デフォルトの名無しさん:2016/08/05(金) 21:35:12.85 ID:NLyB8GBY
>>576 のつづき。
たまたま、「Toolbar.rc」タグを表示した状態で、「ファイルを保存(左上フロッピー1枚の絵)」をクリックしたら
のあとで、「Window.rc タグ」をクリック
右から二番目の枠内の「IDD_DIALOG」をクリックして、作成したプログラム実行時に表示される枠を左から2番目の表示枠に表示する。
FbEdit の上から1行目、「資源(R)」をクリック
子メニューの「出力名」をクリック

>>576のような文字が表示される。
「資源」と*.rcファイルにはいろいろありそうだが、今のところよくわからない。
試しにいろいろやってみて、変な表示文字が出て、訳が分からなくなってゆくというパターン。
何が原因かわからないが、ツールバーの最後のバツ印の取り扱いが混乱している。

586 :デフォルトの名無しさん:2016/08/07(日) 11:44:12.97 ID:7QguPF3N
>>573-574 >>576-577 のつづき。
http://www.hi-ho.ne.jp/makoto_watanabe/FbEdit/tut3.htm

結局、わけがわからないので、もう1回やり直し。
できがついたこと。

#Define IDC_TBR1 1001
をコピーすること

を忘れなければ、無事作成できるが
操作の順番を入れ替えたりすると、うまくいかない。

>「ボタン追加」で、次のボタンを追加して、それらの名前と、それらのIDを挿入して下さい。
の作業中、セパレーターを消したり(ボタン名欄に空白1文字を入れる)
ボタンの入力順番を上から、以外に行う(セパレーターを2個いれて、ボタンを入れて、順番を入れ替える)
等をすると、動かないみたい。
dim tbrbtn7 as TBBUTTON=(5,IDM_FILE_EXIT,TBSTATE_ENABLED,TBSTYLE_BUTTON,{0,0},0)

dim tbrbtn7 as TBBUTTON=(56,IDM_FILE_EXIT,TBSTATE_ENABLED,TBSTYLE_BUTTON,{0,0},0)
となったりする。
必ず発生するような事例を作らないと、この手の不安定な障害の復旧は困難となる。

587 :デフォルトの名無しさん:2016/08/07(日) 20:40:00.84 ID:7QguPF3N
>>574 の続き。
「追加のボタンが表示されない。」の追跡調査。
「IDC_CUT」等を入力するときに「IDC CUT」のように空白をいれると解釈されず、処理の対象から外される。
空白などの使用禁止文字のチェック結果が表示されない。

588 :デフォルトの名無しさん:2016/08/09(火) 22:48:23.07 ID:Fsvm4/5k
>>587のつづき。
前後の空白(「 IDC_CUT」「IDC_CUT 」)は自動的に消えるみたい。

>>586のつづき
http://www.hi-ho.ne.jp/makoto_watanabe/FbEdit/tut3.htm

STEP 2
候補を自動的に読み取るのではなく、手動入力だった。
「IDM_FILE_EXIT」等を手入力する必要がある。入力ミスをすると解釈されないという発見が困難な障害となる。
変数名自動取得ルーチンがほしいところ

「 Function WndProc に、以下のコードを、追加して下さい:」の解釈を間違わないように。
Basic では大域宣言が原則で、局所宣言は稀。宣言文を局所宣言とする必要がある。
Cに近くなっているという流れの中 MS-Basic等ではサブルーチンに使用する変数を宣言して局所変数として使用するという流れがある。
ほぼ同名の局所変数と大域変数が存在すると、バグ取りに泣くことになるので要注意。

589 :デフォルトの名無しさん:2016/08/13(土) 21:08:26.96 ID:uXi0o5pq
http://www.hi-ho.ne.jp/makoto_watanabe/FbEdit/tut4.htm
やっとコンパイルだけは通ったが、いくつかはコメント文だったりしたりする。
notepad.exe の実行には成功していない。

アイコンの表示ルーチン
Case WM_INITDIALOG
hWnd=hWin
hIcon=LoadIcon(hInstance,Cast(ZString Ptr,500))
SendMessage(hWin,WM_SETICON,NULL,Cast(LPARAM,hIcon))
の部分、宣言が足らなかったらしく、
'Dim Shared hInstance As HMODULE
'Dim Shared hWnd As HWND
Dim Shared hIcon As HICON
と、*.BI に追記した。前2社は既に宣言済とのこと。
しかし、アイコンは表示されない。

'WinMain関数の最初の行に、下のように局所変数を定義します。
'「下のように」が記載なし。よって宣言文を入れていない。

'まず最初に、私たちは WinMain 関数に、Previous Instanceコードを追加します。
'追加位置が不明。
Return msg.wParam
の直前に入れたけど、なんか違う雰囲気。


アイコンだけ表示するチュートリアルがあったので、
局所変数化して、ライブラリーにできるかどうか。

590 :デフォルトの名無しさん:2016/08/14(日) 12:31:24.45 ID:Y4FccTvb
原文
http://www.freebasic.net/wiki/wikka.php?wakka=KeyPgCast
New to FreeBASIC
日本語訳
http://makoto-watanabe.main.jp/freebasic/PgCast.html
FreeBASICに、新しいです。

https://translate.google.co.jp/#en|ja| による名訳。
FreeBASICの新しいです
+------------
「FreeBASICにて新規作成した」という意味なんだろう。
商取引ではないから、JISの情報処理通則は使えないし。

591 ::2016/08/16(火) 03:03:18.34 ID:DfP2Zdwz
MZうyちゃーーーん♪

592 :デフォルトの名無しさん:2016/08/16(火) 03:55:24.47 ID:DfP2Zdwz
                _                           ∧_∧
               ̄   ̄  .                       (´Д`;)←>>590
        . '            ヽ
       /                                    //
      /                                  //
           ,-( ヽ         i               /
    /       メ、ヽ ヽ          |               /
          /  ヽl  |        |            /
        /    // /        !          ,
       /∧_∧// /
     / ( ゚∀/ /
    /   γ    /         /
  θ     ヘ    |        /
         )   |       ,
         /     |
         /  ヘ   |   /
        i  / |  |  /  /   , '    _/  |l
       /  /   |  |    し'   /      / ̄/
      /  /.  /  |       (   _   /  /   〃,
     (  /   /  l  と と )  て ̄          /
     し'   /__) (_(_,J

593 :デフォルトの名無しさん:2016/08/16(火) 12:31:22.46 ID:DfP2Zdwz
age

594 :デフォルトの名無しさん:2016/08/18(木) 13:46:09.88 ID:KMSpo5SC
(^-^)ククク…

595 :デフォルトの名無しさん:2016/08/21(日) 22:10:15.12 ID:Rs22fj7z
>>589 のつづき。
http://www.hi-ho.ne.jp/makoto_watanabe/FbEdit/tut4.htm

#define IDC_EDT1 1001
#define IDC_EDT2 1002
#define IDC_BTN1 1003
がまいった。

596 :デフォルトの名無しさん:2016/08/21(日) 22:13:11.94 ID:Rs22fj7z
#define IDC_STC1 1001
#define IDC_EDT1 1002
#define IDC_STC2 1003
#define IDC_EDT2 1004
#define IDC_BTN1 1005
しかできない。

597 :デフォルトの名無しさん:2016/08/21(日) 22:16:18.16 ID:Rs22fj7z
Program.rcをクリック、IDD_DIALOGをクリックのあとで
2つのテキスト・ボックス(editbox,EditText)
を左端の枠の中の細かいゴチャゴチャの中からみつけだして、クリック
枠範囲をしていして、クリック
を2回繰り返して、

598 :デフォルトの名無しさん:2016/08/21(日) 22:17:48.10 ID:Rs22fj7z
ボタン(Button)を
を左端の枠の中の細かいゴチャゴチャの中からみつけだして、クリック
枠範囲をしていして、クリック
して、
「゛Static」
を左端の枠の中の細かいゴチャゴチャの中からみつけだして、クリック
枠範囲をしていして、クリック
を2回繰り返す
ことで、IDをそろえることができた。
右から2番目、下の入力枠の中から、{ID}入力枠をみつけて、IDを割り当てるのが良いのかもしれない。

599 :渡辺真:2016/08/23(火) 10:29:40.05 ID:C8zZ2gEH
FbEdit チュートリアルの「事例ダウンロード」のリンクが切れていました。
私のサイトにUPし直したので、ダウンロードできるようになったはずです。
お試し下さい。

600 :渡辺真:2016/08/23(火) 10:47:03.30 ID:C8zZ2gEH
>>590
教えていただき、有難うございます。
修正しました。

>>589
加筆修正しました。
http://www.hi-ho.ne.jp/makoto_watanabe/FbEdit/tut4.htm
http://www.hi-ho.ne.jp/makoto_watanabe/FbEdit/tut5.htm
これでお試し下さい。

601 :デフォルトの名無しさん:2016/08/25(木) 21:29:19.87 ID:f+DBrk3N
なんかしらんけど、ロボット規制に引っかかったみたい。
英語の行き先札の町の名前なんてわかんないし、
写真見て、商店を選べって、これ無理なんじゃないの。
我が家の南側350mで営業している商店なんて、見た目、倉庫だし
机の横に置いてある機械を買った店は、見た目民家で、玄関3+6畳を店舗として使っている年商1憶ぐらいの店。

http://www.hi-ho.ne.jp/makoto_watanabe/FbEdit/tut4.htm
も訳者のおかげで、なんとか、コンパイルが通った。
これはめでたい。

Select Case HiWord(wParam)

Select Case LoWord(wParam)
の違いに気が付かず、後者のSelectブロックに追記すべき内容を前者のブロックに追記していたことに気が付くのに時間がかかった。

前者のブロックはどうも事象を振り分けている模様。それぞれが何の事象を意味するのか、今時点で分からないでいる。
そんなわけて、こんなものを作ってみた。
Case BN_CLICKED,1
'Case BN_CLICKED
'Case BN_PAINT =1
Case BN_HILITE
Case BN_UNHILITE, BN_UNPUSHED
Case BN_DISABLE
Case BN_DOUBLECLICKED , BN_DBLCLK
Case BN_SETFOCUS
Case BN_KILLFOCUS
「BN_CLICKED」が保存されている*.BIファイルをDevas.exe で検索して、引き抜いただけ。

602 :デフォルトの名無しさん:2016/08/25(木) 21:32:23.11 ID:f+DBrk3N
実行時の変数の状態を表示させようと試みたが、Winの表示枠(IDC_STC1 等)に表示させるような高度なことができなくて、
http://www.hi-ho.ne.jp/makoto_watanabe/FbEdit/tut2.htm の
MessageBox(hWin,"Hello, this is a test","Messagebox caption",MB_ICONINFORMATION)
を書き換える方向で検討を開始。
大域変数
Dim Shared MakiHWND As HWND
を確保して、
Case WM_INITDIALOG
hWnd=hWin
MakiHWND =hWin
と値を定義した。Makiは、保守用変数につけている接頭語で特に意味はない。
変数名に8文字の制限があった処理系を使っていたころは、Zを使っていた。
MessageBox(MakiHWND,"Hello, this is a test","Messagebox caption",MB_ICONINFORMATION)
で任意のルーチン内で変数表示が可能になった。
なお、Cstr(), Cstr$()関数が使えない。Str$()関数を数値から文字への換算に使うことになる。

603 :デフォルトの名無しさん:2016/08/25(木) 21:34:51.80 ID:f+DBrk3N
Sub なんたら()が使えない。Function なんたら()を使うこととなる。
Function かんたら変数変換(AInVal)
Integer IER
IER =0
(なんたらかんたら)
IF (IER.NE.0) then Write (6,*) 'えらーだよ ErrorCode=',IER
Return
end
というソフトを書いて、大目玉を食らった学生時代が懐かしい。
Function で宣言された手続き内に入出力手続きを記載することは問題だったらしい。

604 :デフォルトの名無しさん:2016/08/25(木) 21:38:07.39 ID:f+DBrk3N
Function AAA()
end Function

Function BBB()
end Function

Function CCC()
end Function
と三つの手続きを宣言したときに、
AAAからBBB,CCCを参照できない
BBBからAAAを参照できるがCCCを参照できない
という制限がある。
今まで作ってきた任意の手続き名を定義できる処理系では、コンパイルの時に2回読みだして、
初回は手続き名等の収集、2回目はそれぞれの手続きへの参照割り当て、という手法が使われていた。
1回で割り当てている、後方の手続きを参照できない、
という処理系は、2回目であり、手続き名の管理ルーチンを自作する必要があるかもしれない。
初めて使った処理系では、外部のマクロ処理で実行形式の命令を書き連ねているだけ、
障害が発生したときの分岐処理だけ(分岐先の前方参照ができない)だったので、ほとんど苦労をしなかった。

今のところ、単一ファイル内処理しか作れないので、このあたりが表面化するのは先になるだろう。

605 :デフォルトの名無しさん:2016/08/25(木) 21:54:12.38 ID:f+DBrk3N
On Local ERROR goto (手続き名)Error

(手続き名)Exit
Exit Function
(手続き名)Error:
Resume Next
end function

を使おうとして、
プロジェクト
 プロジェクトオプション
表示枠内のビルトCommandを
fbc -s gui -lang qb -exx
に変更した。
公用ライブラリーのstdarg.bi, _mingw.bi, windef.bi のいくつかの宣言が
障害(Error 3,10,71,10,132)で解釈されず。
デバイスに障害があるときに、ハングして終わり(Resumeでは障害の発生した文の処理を繰り返す)、
では使い物にならない。手作業で復旧させる対話処理が必要となる。
ということで、障害処理ルーチンの作成ができないでいる。

606 :渡辺真:2016/08/26(金) 00:25:13.72 ID:jTOnvzOz
>>604

関数や変数は最初に宣言が必要です。

例:

Declare Function DoubAndAdd10(a As Integer) As Integer
Declare Function Doub(a As Integer) As Integer
Declare Function Add10(a As Integer) As Integer

Dim i As Integer

For i=1 To 10
Print i, Doub(i),Add10(i),DoubAndAdd10(i)
Next

Sleep

Function DoubAndAdd10(a As Integer) As Integer
Return Add10(Doub(a))
End Function

Function Doub(a As Integer) As Integer
Return a*2
End Function

Function Add10(a As Integer) As Integer
Return a+10
End Function

607 :デフォルトの名無しさん:2016/08/27(土) 05:45:49.69 ID:x4Brisg/
>>606
ありがとうございます。
QBを使っていたころ、単一ファイル(モジュール)での実行では、Declear 文が必要ではなく
複数ファイル(モジュール)での実行で必要になりました。
複数ファイルの宣言文を自動収集して一つのBIファイルにまとめて宣言したところ、メモリー不足で実行不可に
参照側と被参照側の内容を集計して、参照する内容だけをまとめた
(自己書き換え、インタープリターだからこんな荒業も可能)なんてことをやっていまして

Declear 文は単一ファイルでは必要ないつもりでいました。
今後は入れるようにします。

608 :デフォルトの名無しさん:2016/08/27(土) 06:28:20.00 ID:x4Brisg/
ディレクトリ作成命令 MKDIR("D:\BAS\MAKI\CONT")を実行しようとして
http://www.hi-ho.ne.jp/makoto_watanabe/FbEdit/tut4.htm
の*.exeファイル所在地のディレクトリ名(パス名)取得ルーチンを使って、、、とやったけどディレクトリーが作成できず(-1)、
いろいろ試す結果に。
Function MakiMkdir(InDir As String) As Integer
Dim pathname As String
If (Right$(InDir,1)="/") then
pathname=InDir
elseIf (Right$(InDir,1)<>"\") then
pathname=InDir
Else
pathname=Left$(InDir, Len(InDir)-1)
End If
Dim result As Integer = MkDir ( pathname )
MessageBox(TakaHWND,"Hello("+pathname+")ErrorCode ="+Str$(result )+"$$","Messagebox caption",MB_ICONINFORMATION)
MakiMkdir=result
End Function
結果は
'pathname="aaaaa": ' -1
'存在しないディレクトリAA内にAAAを作成できない
'pathname="/aa/aaa": ' -1
'pathname="\aa\aaa": ' -1
'pathname="\aa/aaa": ' -1
'pathname="/aa\aaa": ' -1
'pathname="\aaaaa": ' ルートディクトリに作成
'pathname="/aaaaa": ' ルートディクトリに作成

609 :デフォルトの名無しさん:2016/08/27(土) 06:30:50.96 ID:x4Brisg/
探したらば、Exepath というそのものずばりの命令を発見。
CDir = Exepath + "\": 'IIx =IIx +MakiMkdir ( CDir )
Contdir = CDir +"Cont" : IIx =IIx +MakiMkdir ( Contdir )
Indir = CDir +"InData" : IIx =IIx +MakiMkdir ( Indir )
という、管理・入力、、、という一連のディレクトリー作製に成功した。
内部変数では保守の容易さを目的に、ディレクトリ(パス)を示す文字列には、末尾に「\」を入れています。
文字列の内容を見ただけで、ディレクトリーなのか、識別子のないファイル名なのか、を区別できないためです。
識別子のついたディレクトリーなんてものもありますので。

http://www.hi-ho.ne.jp/makoto_watanabe/FbEdit/tut4.htm
では、固定長文字列を使っていて、Nul文字の取り扱いで可変長文字列演算(+,&)でおかしな結果になったものと思われる。
固定長文字列演算は、今のところどうやっていいのか不明。
固定長文字列演算をもサポートしているようなので、手持ちのルーチンを引数合わせのみで書き換えるかなんてことも考えています。
GWの頃はPEEK, POKEでやっていましたが、VBではBit配列を使った演算とLSETに変わりました。
FreeBasicではどのように処理するのか今のところ分かっていません。

610 :デフォルトの名無しさん:2016/08/28(日) 22:02:22.67 ID:cwUO/ZQL
なんと驚き?の事実
Astring = DIR$("A:\*.*")
で、Astring にヌルストリングが定義された。
フロッピーに接続していないにもかかわらず、デバイス関係のエラーが発生しなかった。
利用可能なデバイスかどうか、等の情報をエラー発生(75,73だったかな、QBは)で取得していたのだが
FreeBasic では、どのようにデバイス情報の取得しているのでしょうか

関係情報をご存知の方がいらっしゃったらば、お願いします。
資源の占有関係は、難しくてわかりません。

611 :デフォルトの名無しさん:2016/08/30(火) 21:22:24.01 ID:f7BvR1Gc
>>609 の続き。
自己ディレクトりー(パス)の取得が可能になって、
App.Path を一律書き換えたまでは良かった。
App.EXEName つまり、自己タスク名(実行形式のファイル名)の取得方法がわかすらない。
固定長文字変数の演算が見当つけば、
http://www.hi-ho.ne.jp/makoto_watanabe/FbEdit/tut4.htm
の方法を使って取得できるのではあるが。

大量(100個位)にある文字関数の中から、ファイル名処理とコマンドライン処理とCSVファイル処理関係、30関数がエラーなしでコンパイルできるようになった。
しかし、ファイル入出力関係がよくわからないので、動作試験はしていない。
エラーメッセージ処理関係の12個のサブルーチンをいじっていて、表題部につかっている、App.EXEName に代わるものがないかと探している。

なんで、エラーメッセージ出力ルーチンをディレクトリー処理の後にいじりだしたかというと、
未使用のサブルーチンが参照されたときには、エラーメッセージをファイルに書き出すようにしておくと
正常な処理をしていないと思われることから、そのルーチンだけ切り出して動作試験をする作業をしていれば、当座は乗り切れる。
まともに一つ一つやっていたら、2年ぐらい使ってしまうから。

自己専用ライブラリーの基本部分ができたのがVBをいじりだして5年後。
その後、あっちこっち直して、追加して、現在4MB程度に増えてしまった。
いちいちチェックなんてしていられない。
FreeBasic ではCall文が使えないので、全部関数に書き直している。
見本ルーチンが単精度整数を使っているので、倍精度を必要としない変数は単精度に書き直している。
これが結構手間がかかる。特別な理由でもない限りは倍精度を使うようになっていたから。

単精度専用ルーチンに倍精度を入れると、たちの悪い障害が発生して発見が困難になる場合が多い。

612 :渡辺真:2016/08/31(水) 01:58:44.02 ID:k9d3DaHY
>>611

>自己タスク名(実行形式のファイル名)の取得方法
>Call文

美しくはないですが、とりあえず。


'$lang: "fblite"

Declare Sub ExeName

Call ExeName

Sleep


Sub ExeName
Print Right(Command( 0 ),Len(Command( 0 ))-InStrRev(Command( 0 ),"\"))
End Sub

613 :デフォルトの名無しさん:2016/08/31(水) 07:57:44.49 ID:5rt51UxE
キモキモキモキモキモキモキモキモキモキモキモキモキモキモキモキモキモキモ

みんなー、世界初!!「体液取引所」ができたお [転載禁止]c2ch.net
http://hayabusa3.2ch.net/test/read.cgi/news4viptasu/1430115959/

1 :片山博文MZ ◆T6xkBnTXz7B0 @転載は禁止:2015/04/27(月) 15:25:59.04 ID:VhXmVBOx0
「体液取引所」
http://katahiromz.esy.es/taieki/

試してみてね。。。ご感想などよろしく。。。

3 :片山博文MZ ◆T6xkBnTXz7B0 @転載は禁止:2015/04/27(月) 15:28:32.37 ID:VhXmVBOx0
男汁、女汁、唾液、おしっこなどの体液を取引できるサイトが
できたんだよーーー。
利用者登録すれば使える。使ってみてね。。。

13 :テューンタン ◆msxA1lIh7Ei2 @転載は禁止:2015/04/27(月) 16:43:12.16 ID:h2ozZyBy0
このスレみて昔あった体液フェチの友人がなんたらってスレ思い出した

20 :片山博文MZ ◆T6xkBnTXz7B0 @転載は禁止:2015/04/28(火) 12:30:57.13 ID:kCLcZkq+O
体液取引所は、非技術的問題で閉鎖しました。大変申し訳ありません。

614 :デフォルトの名無しさん:2016/09/03(土) 07:57:15.68 ID:1vvjN+Qa
>>612
ありがとうございます。

おかげて、表題部を専用ルーチンにしなくてすみました。

FreeBasic では、
命令によっては専用のメタ命令が必要である、
ということが結構あるようです。現時点で発見したのは
Dir$(), #include "file.bi"
Now (), #include "vbcompat.bi"
Format$(), #include "string.bi"
FileCopy(), #include "file.bi"
です。

Format$ に使われている書式指定命令語が混乱していまして、今は良くわからない状態です。
QBの頃は、
Print #1, Using でRamドライブにファイル出力して、読み取って文字として使う、
なんてやっていました。
V.B.で文法が変わって、結局 STRfotranI$(), STRfotranE$(), STRfotranF$() の3つの関数を作ってからは、使わなくなってしまいました。
Fotranのi式、E式、F式の表示用文字列を作成する関数も作らなければならないでしょう。

615 :渡辺真:2016/09/03(土) 13:58:25.25 ID:x1LXQTpd
FreeBASIC は、#include で機能拡張している(機能拡張できる)点が特徴ですね。

GUI ライブラリ Window9 をインクルードすると
#Include "window9.bi"

こんなことが簡単?にできます。
http://makoto-watanabe.main.jp/freebasic/Window9/W9S.html

Window9 マニュアル
http://makoto-watanabe.main.jp/freebasic/Window9/

616 :デフォルトの名無しさん:2016/09/08(木) 22:51:44.14 ID:7WOeQbe4
>>615
公開ライブまで、手を染めると何が何だかわからなくなる未来が見えてきました。
つまり、挫折。

>>606
>変数は最初に宣言が必要です。
というので、Dim をもう一回読み直し。
INTEGERが16bit(1Word), LONG が Dobel INTEGERの意味で32Bit(2Word)とという記憶だったのが、
全然違っていたので、まいった。
単精度整数の接頭語を II等2文字連続、倍精度整数の接頭語を I,J,K,L,M,Nの1文字で使っていたので、
変数の命名法を今マで使っていた規則とは別に考えなけりゃならなくなった。

Winで重要なのが、ULONGという倍精度符号なし整数型。
「符号無しの DWORD(ダブルワード)に一致します。 」とスーパーバイザ(Win API)参照の際に使う引数となる。

最後に、整数型の
dim variable as Uinteger<bits>
dim variable as Integer<bits>
の2つの宣言、これは成功しなかった。
文字型は今のところ訳が分からないので、試していない。
スーパーバイザー関連で、固定長ASC-Z文字列を使うようになったらば、いろいろ試さなければならないと思われる。

617 :デフォルトの名無しさん:2016/09/08(木) 22:52:16.55 ID:7WOeQbe4
試した配列は、以下の通り。
'http://makoto-watanabe.main.jp/freebasic/CatPgStdDataTypes.html
'http://makoto-watanabe.main.jp/freebasic/TblVarTypes.html
'整数型 (Integer types)
'Dim variable as LongInt: '64ビットの符合付き整数データ型
'Dim variable as ULongInt: '64ビットの符合無し整数データ型
'Dim variable as UInteger: ' 32ビットか64ビットの符号無し
'dim variable as UInteger32: '(不動)明示的にビット・サイズを与えると、データ型は、0 〜 (1ULL Shl (bits)) - 1 の範囲の値を保持できると規定されます。
'dim variable as Integer: '32ビットか 64ビットの符号付き整数データ型。
'dim variable as Integer 32: '(不動)明示的にビット・サイズが与えられると、
'dim variable as Ulong :'32ビットの符号無しの整数のデータ型。符号無しの DWORDに一致
'dim variable as Long: '32 ビット符号付き整数データ型です。符号付き DWORD と一致
'dim variable as UShort: '16ビットの符合無し整数データ型
'dim variable as Short : '16ビット符合付き整数データ型です
'dim variable as Ubyte : '8ビットの符合無し整数データ型
'dim variable as Byte : '8ビットの符合付き整数データ型です
'浮動小数点型 (Floating-point types)
'dim variable as Single: '32ビットの浮動小数点データ型
'dim variable as Double: '64ビット、浮動小数点データ型です。
'dim variable as Boolean: 'ブール データ型。
'文字型 (String types)
Const size As Integer = 256
'dim variable as Wstring * Size: 'ワイド固定長文字列
'Dim variable as Wstring Ptr: 'ワイド不定長文字列
'「*variable」のように左端に*をつけた参照有。
'dim variable as Zstring * size: '8ビットの固定長文字列
'dim variable as Zstring Ptr: '8ビットの不定長文字列
'「*variable」のように左端に*をつけた参照有。
'dim variable as String :'8ビットの可変長文字列
'Dim variable as String * size: '8ビットの固定長文字列

618 :デフォルトの名無しさん:2016/09/08(木) 23:47:08.05 ID:7WOeQbe4
文字定数を使う Const 文で
Const CH22String = Chr$(&H22)
のように、Chr$()関数が使えることでライブラリーの初期化ルーチンがかなり変わった。
きか付いたことは、
'Const CH00String = Chr$(&H00)
が使えない。
ASC-Z文字列の処理に使っていたが、文字変数の宣言にASC-Z文字列の宣言があるので
こちらの文字列の使い方を調べてからでないと、発見が困難な障害が多発する可能性が出てきた。

Declare文が100個を超えて、障害メッセージ表示ルーチンが使える気分になったところで、
デバイスの管理ルーチンを非常駐部に置いておいたことに気が付いた。
Iniファイルの取り扱いをMSでは近い将来廃止する、なんてメッセージが出たので
V.B.で初めて使いだしたIniルーチンだけど、QBの頃に作った管理ファイル入出力ルーチンに戻さないとダメかな。
これ、巨大なシーケンシャルファイル(8-32KB)を作って、MCB(メモリーコントロールブロック)よろしく、芋蔓アクセスをするランダムファイルとして使用する。
132単位でR/Wして、32,(48),64バイトのテキストを保存している。
内部表現形式で数値を保存するのが普通だったランダムファイルにテキスト形式の数値を保存して
131と132に改行コードを保存しているから、そのままプリンターに直結してダンプができるという、悪名高いファイル。
ソースファイルは地震で消失しているが、復活させるかな。ランダムファイルの処理がよくわからないので当分無理だけど。

モデルはコレ。
https://ja.wikipedia.org/wiki/%E3%83%91%E3%83%B3%E3%83%81%E3%82%AB%E3%83%BC%E3%83%89
「ピンクのパンチ等で実行」なんて、命令セットを色分けして360で色々やっていたころの名残。
デカコン用のパンチカードを作業に分けて色分けして使っていた。
小学生用塗り絵の水性ペンセットが一番使いやすかった。

619 :デフォルトの名無しさん:2016/09/09(金) 21:15:31.01 ID:w0HZMrJ6
>>617 のつづき。

配列宣言以外のDim文は非実行文で、固定長配列宣言のDIM文も非実行文だと思っていたら、
どうも実行文臭い。
Select case (適当)
case 1
Dim IIA as Integer
IIA = 適当なに関数(適当な引数)
case 2
'(なにもしない)
case else
'(なにもしない)
end select

IIB=IIA
なんてやったらば、エラーになってしまった。

実行時に動的に領域を確保するという、「初期化」といしう動作が強いみたい。

620 :デフォルトの名無しさん:2016/09/09(金) 21:51:12.55 ID:w0HZMrJ6
固定長文字配列に関して、
Dim AAZString As ZString * 80 = "123456789"
はコンパイルできるけれども
Const DD1ZString As ZString = "123456789" : '(エラー)
Const DD2ZString As ZString * 80 = "123456789" : '(エラー)
Dim DD4ZString As ZString : '(エラー)
とエラーが続く。
Dim DD3ZString As ZString * 80
で領域を確保して、値を定義すべくLET文等をつけるとエラー。
DD3Ztring = "123456789"
DD3Ztring => "123456789"
Let DD3Ztring = "123456789"
LSet DD3Ztring , "123456789"
LSet DD3Ztring = "123456789"
RSet DD3Ztring , "123456789"
RSet DD3Ztring = "123456789"

DIM には値を定義するという意味もあるみたい。

621 :デフォルトの名無しさん:2016/09/09(金) 22:20:51.18 ID:w0HZMrJ6
不定長文字列に関して
Dim AAPString As ZString ptr
Dim STsize As Integer
STsize=80
AAPString = Allocate(STsize)
と領域を確保して
DeAllocate(AAPString)
と領域を解放するまでは良かったんだけれども

BBstring =HexDumpStringP(AAPString, "#")
とサブルーチンを作って、
Dim Shared LoopCount As Integer

Public Function HexDumpStringP(AAZString As ZString Ptr, SeparatCharacter As String) As String

Dim As Integer IIA, Ilen
Dim As String BBString
BBString = ""
LoopCount =0
For IIA = 1 to len(AAZString)
LoopCount = LoopCount+1
BBString = BBString + SeparatCharacter + Hex$(asc(AAZString[IIA]))
'BBString = BBString + SeparatCharacter + Hex$(asc(Mid$(AAZString, IIA,1))): 'エラー
Next IIA
HexDumpStringP = BBString
End Function

とやったらば、大域変数のLoopCountで数えた結果、4回しかループを回らない。
変数領域の食いつぶしをやっているのかもしれないが、インテル8080系では関係制御をしていないので、訳の分からぬ状態に陥りやすい。
このサブルーチンは、バイナリファイルのダンプルーチンを転用したもの。

622 :デフォルトの名無しさん:2016/09/10(土) 13:30:14.62 ID:FJ69ABtc
>>619
スコープ(FOO ... END FOO)内の変数宣言はそのスコープ外から不可視
スコープ内でしか利用できないし、処理がスコープを抜けたら変数は自動的に破棄される

>>620
ZStringは固定長文字列なのだから
例えConstであってもZString*Nで領域確保しなきゃいけない
定数はコンパイルタイムに決定されるのだから、その領域と値が明示的でなければならない
関数の引数以外で、ZString型を使えるのは、固定長(ZString*N)かポインタ型
因みにConst As FOOは、Dim As Const FOOのシンタックスシュガー
Const bar = 100のように型指定無しでも書ける
この場合、右辺値によってbarの型がコンパイラによって推測される
例えば、数値型なら数値リテラルで型推測を限定できる
Const bar = 100ullだったら符号なしLongint型の定数

>>621
AAZString変数はポインタ型だからMid関数に渡せない
その実体(*AAZString)を渡せば良い

Dim As FOO Ptrは、ポインタ宣言であって参照宣言ではない
何の方言を使ってコンパイルしているのか分からないが、-lang fbなら
Dim Byref As FOOで参照型を宣言できる
QBasic仕様の方言(-lang fbliteや-lang qb)を使っていないなら
QBasic仕様を頭から排除すべき、FreeBASICは全く別物に進化している

623 :デフォルトの名無しさん:2016/09/10(土) 13:44:25.63 ID:FJ69ABtc
>>621
更に細かいことを言うようだけど
For ... Next文のイテレータは、その構文で型宣言しなされ
For IIA As Integer = 1 To Len(AAZString) ...

ブロックやスコープ内の最初に変数宣言をまとめるような古い習慣は捨てなされ
必要になったら宣言するべきよ

624 :デフォルトの名無しさん:2016/09/10(土) 13:52:15.38 ID:FJ69ABtc
>>621
書き忘れ

>For IIA = 1 to len(AAZString)
>とやったらば、大域変数のLoopCountで数えた結果、4回しかループを回らない。

AAZStringはZStringのポインタ型だから、len(AAZString)の戻り値はそのポインタの長さが帰る
ポインタが指し示す文字列の長さがほしいならlen(*AAZString)とする
ポインタを勉強しなされ

625 :デフォルトの名無しさん:2016/09/10(土) 14:30:06.41 ID:FJ69ABtc
>>622
補足
Const構文で宣言する文字列定数は「Const bar = "abc"」でしか宣言できず、型指定は出来ない仕様
この辺、記憶があやふやだったわ

626 :デフォルトの名無しさん:2016/09/10(土) 23:10:40.69 ID:cUcKhEOt
>>623
>最初に変数宣言をまとめるような古い習慣は捨てなされ
ちょっと無理。
ソースの自己書き換えルーチンがあるので、宣言文と実行文を同一行内に押し込むなんて高度なことをやると、
自己書き換えルーチンが理解できず下痢をする。

>実体(*AAZString)を渡せば良い
「@」や「*」付変数等の意味がよくわからないでいる。
http://makoto-watanabe.main.jp/freebasic/
には「実体」という言葉が見つからず。ポインターは
http://makoto-watanabe.main.jp/freebasic/TutPointers.html
に見つけた。相対アドレス(es:di等)で使う基準レジスタ(es: 等)の意味かな。
内部領域等がわからないと訳の分からない状態に陥る。

>QBasic仕様を頭から排除すべき、FreeBASICは全く別物に進化している
きついな。
QBの仕様もかなり忘れてきて、vbの仕様もかなり忘れてきて、
最初に習った機械(学校の機械なので機種名不明)の仕様でやっているから
JIS Basicなんだよ。

627 :デフォルトの名無しさん:2016/09/10(土) 23:51:24.96 ID:cUcKhEOt
>>624
おかげさまで、
For IIA = 1 to len(AAZString)
から
For IIA = 1 to len(*AAZString)
の変更で、16進ダンプルーチンが完成しました。

628 :デフォルトの名無しさん:2016/09/11(日) 00:14:57.06 ID:SHnp2qDQ
同一サブルーチン内で、事前の配列宣言が必要かの動作試験。
Dim MomoStringSU As Integer
MomoStringSU = 20

'Dim MomoString() As String
ReDim MomoString(MomoStringSU) As String
Astring= Str$(UBound(MomoString))+","+Str$(LBound(MomoString))
MessageBox(HWND,Astring,"Messagebox caption",MB_ICONINFORMATION)
では、Dim 文がなくてもReDim文の実行が可能。
Dim, ReDim文を両方取り除くと、UBound(), LBound() 関数行がコンパイルできなくなる。
ReDim文をない状態、Dim分だけでは、UBound(), LBound() 関数値が -1, 0となる。
UBound(), LBound() 関数値の大小関係が反転するという現状を使って、未初期化である状態が検出可能と思われる。

Dim as Long AAAAlong
Dim As String DataValString()
AAAAlong = TestTest01(DataValString())
Dim BBBBlong As Long = TestTest01(DataValString())
と参照側で定義して、被参照側で
Public Function TestTest01(DataValString() As String) as Long

TestTest01=0
'Dim DataValString() As String: 'エラー
'Dim DataValString(20) As String: 'エラー

ReDim DataValString(20)
End Function
とやったらば、被参照側でのDim文はコンパイルエラーで、ReDim文が使用可能。

このあたりまでやって、なんとか、システム情報取得ルーチン用サブルーチン、25個の書き換えの目安がたちました。

629 :デフォルトの名無しさん:2016/09/11(日) 00:23:24.32 ID:SHnp2qDQ
C:\FbEdit\Projects\Samples\MultiModule\
内処理について、
各子モジュール(C:\FbEdit\Projects\Samples\MultiModule\Mod\Module1.bas等)に
同一名のサブルーチンを用意して
Private Function Local_CommonStringSet(ActionType as Integer) As long
Declare で宣言すると、コンパイルエラーが発生する。
局所ルーチンですらもルーチン名の重複が認められていない模様。 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)


630 :デフォルトの名無しさん:2016/09/11(日) 01:00:30.75 ID:Q4IAW6Rr
>>626
ポインタ型は、メモリ上のアドレスを格納する型
dim a as integer = 100
dim pa as integer ptr = @a
print pa
print *pa
とした場合、変数aはコンパイラにより自動的にメモリ上にinteger型の領域を確保され、100が代入される
2行目は、その確保されたアドレスを変数paに格納している
@aはaddress of aって意味
3行目は、変数paが指し示すアドレスを表示する
4行目は、ポインタが保持するアドレスにあるinteger型の値を取得して、値の100が表示される
*paはvalue of paって意味
実体と言ったのは、ポインタが指し示したアドレス先にそれが示す値が格納されているから

通常、newやallocateでメモリ領域を確保し
ポインタ型にそのアドレスを格納し、処理後にdeleteやdeallocateでメモリを開放する
普通の変数宣言は、コンパイラがメモリの確保と開放をスコープ基準でやってくれるが
ポインタ型の変数宣言はプログラマ自身がメモリの確保と開放を動的に行うためにある

FreeBASICはBASICの構文を使用するけど、その形態はC言語に近い
ポインタに関して詳しく知りたいなら、C言語を調べてみると良い(mallocやfree)
FreeBASICはC言語よりポインタの記述に関しては分り易く出来てる

631 :渡辺真:2016/09/11(日) 12:26:25.28 ID:Z4ry8jYg
>>630

教えていただき、有難うございます。
マニュアルに「追加解説」として、転用・追記させていただきました。
http://makoto-watanabe.main.jp/freebasic/PgPtr.html

632 :デフォルトの名無しさん:2016/09/11(日) 23:48:54.45 ID:UzdmC7PV
システム情報関係の移植作業で、V.B.のルーチンが使えなくて苦労したのがいくつかある。
ただし、現時点では、内容の異常動作などのチェックはしていない。
単に、コンパイラーが通るだけ、を目的にしている。
OSVERSIONINFO 構造体とGetVersionEx()関数。
OSVERSIONINFO 構造体の宣言がユニコードとASCでは異なる
C:\FreeBASIC\inc\win\winnt.bi
C:\FreeBASIC\inc\win\winbase.bi
模様。
このあたりの切り替えをBIファイル内でいろいろやっている模様だが、理解できなかった。
V.B.で使っている宣言と同じ宣言を見つけて、
Dim udtOSVersionInfo As _OSVERSIONINFOA
Abool = GetVersionExA(@udtOSVersionInfo)
とすることでコンパイルが通過した。
MEMORYSTATUS 構造体とGlobalMemoryStatus( )関数はわからず
GetDiskFreeSpaceEx()関数は警告メッセージが出たまま。

個々のルーチンが正しく動くかどうかをさておいて
現時点では、コンパイラーが通って、
デバイスの割り当てとメッセージの記録処理が
動けば、処理の状態をファイルに記録することでソフトの開発ができる。
コンパイルした結果を見るには、この方法、
やたら目ったら、プリント文をいれて、動作を確認する方法しかないから。

633 :デフォルトの名無しさん:2016/09/13(火) 18:59:33.33 ID:WiCEm+2O
'使用TVの物理サイズの取得、800x600 等を返す

Dim R As LPRECT
Dim as HWND hWnd

'declare function GetDesktopWindow() as HWND
hWnd = GetDesktopWindow()
RetVal = GetWindowRect(hWnd, R): 'スクリーン座標の取得
'declare function GetWindowRect(byval hWnd as HWND, byval lpRect as LPRECT) as WINBOOL
とここまではうまくいったんだが、
GetScreenResolutionString = Str(R.Right - R.Left) & "x" & Str(R.Bottom - R.Top)
画面の座標の取得がうまくいかない。

レジストリ関係関数もちょっとわからないでいる。
RegCloseKey で*.bas を検索しても見本が2つしか見つからなかったから。

634 :デフォルトの名無しさん:2016/09/13(火) 21:48:07.88 ID:WiCEm+2O
>>633 追加情報
C:\FbEdit\Projects\CustCtrl\FBEPictView\FBEPictView\FBEPictView.bas

GetWindowRect で検索したら、上記ファイルに使用例を見つけることができた。
Dim R As RECT
Dim as HWND hWnd
Dim Astring As String
hWnd = GetDesktopWindow()
GetWindowRect(hWin,@r)
AString = Str(R.Right - R.Left) & "x" & Str(R.Bottom - R.Top)
MessageBox(TakaHWND,"Hello "+AString+"-2","Messagebox caption",MB_ICONINFORMATION)
で何とか取得できたが、単位がわからぬ。

635 :デフォルトの名無しさん:2016/09/14(水) 22:45:52.69 ID:7znWKoBZ
Public Function IniFileWrite(FileString as String, SecNameString as String, KeyNameString as String, KeyValString as String) as long
Dim As Long IErrorRetCodeLong
IErrorRetCodeLong = WritePrivateProfileString(SecNameString, KeyNameString, KeyValString, FileString)
IniFileWrite = abs(sgn(IErrorRetCodeLong))-1
end function
で、INIファイルの書き込みに成功。その後
IErrorRetCodeLong = GetPrivateProfileString(SecNameString, KeyNameString, "", strValue, StrLength, FileString)
で読み込みに成功した。

しかし、レジストリー関係は成功していない。

636 :デフォルトの名無しさん:2016/09/14(水) 22:51:05.73 ID:7znWKoBZ
DBCS関係。
https://msdn.microsoft.com/ja-jp/library/cc410904.aspx

V.B.では、DBCSを1文字として数えていた。これで作ったルーチンって結構ある。
V.B.互換な Left$(), Mid$(), Reft$() 関数を作る必要に迫られている。

637 :渡辺真:2016/09/15(木) 01:26:58.20 ID:XucV/44o
>>636
>V.B.では、DBCSを1文字として数えていた。

KLEN と KMID なら有ります。
http://makoto-watanabe.main.jp/freebasic/PgKLen.html

638 :デフォルトの名無しさん:2016/09/15(木) 20:21:32.21 ID:SnC6oaUN
>>629 つづき。
局所ルーチンの
Private Function Local_CommonStringSet(ActionType as Integer) As long
各ファイルで、個別にDeclare で宣言してもエラーが発生しなくなった。

原因がよくわからない。結局、何回かコピーして、作り直しただけ。

639 :デフォルトの名無しさん:2016/09/15(木) 20:38:47.80 ID:SnC6oaUN
>>635 のつづき。
GetPrivateProfileSection()
GetPrivateProfileSectionNames()
関数の戻り値、(Null)文字区切りの文字列の分離がうまくいっていない。
現時点では、
引数として返された文字が解釈できないのか、分離ルーチンの参照でおかしくなったのか、
が゛よくわかっていない。単に、
SepChrLong = &h00
LSet InAString ="1"+Chr$(SepChrLong)+"2"+Chr$(SepChrLong)+"3"+Chr$(SepChrLong)+"4"+Chr$(SepChrLong)+"5"+Chr$(SepChrLong)+Chr$(SepChrLong)
と作成された文字列ならば、直後のダンプではヌル文字が存在しているが
引数にしてサブルーチンを参照すると、戻った時には長さ0の文字列になってしまう。
宣言関係の間違いだと、発見が困難な障害を発生しやすい。
特に、Basicでは、引数の型宣言があわないと型を合わせるルーチンが間に入ってくれる。
Fotranでは、型があわなくてもそのままの数値として使うのでメモリーマップさえ注意していれば、値の書き換えが発生しないが、
Basic では値の書き換えが行われる。
言語として使えるのにであれば、どこかに宣言の間違いを行っているはずだが、この発見が困難である。

640 :デフォルトの名無しさん:2016/09/15(木) 21:07:11.86 ID:SnC6oaUN
>>673
これがあると、結構楽になります。
2000-2007 にかけて、Shift-Jis,句点コード、Jisコード、7bit ASC文字、8Bit ASC文字(英語以外のアルファベット文化圏の言葉)、UniCodeの判別ルーチンを作成しました。
MS-DOS ver5で、コートページが導入された関係で、アルファベット圏は8bitで片付くようになりました。
DBCS文字が、MS-DOS, 2.14以後(3.0の後に発売されたのが2.14)からサポートされています。
固定で、80-9fの制御文字を割り当てているのがJISですが、他の領域を割り当てている国もあります。
この国の言葉で作成されたファイル名をWin 75等でディスクに自動作成される(ZIPファイルの自動解凍等)と、Format以外削除する手段がなくなるファイルが作成される場合があります。

このあたりの対応ルーチンをライブラリーとして持っています。
サンプルが少ないので、「解釈できません」、と返すだけですけど。

641 :デフォルトの名無しさん:2016/09/17(土) 04:28:38.76 ID:ejCT2vp9
また、ロボット規制にひっかかった。写真が日本語が1回、その後は英語。
>>639 のつづき。サブルーチンを作ろうとしたが
ポインターの使用がうまくいかないで、ハングした。
参照側が
'引数の検査
Dim IA As Integer, IniFile As String, FileNoLong As Long, IIA As Long
Const StringBuffLen = 128
IniFile=ExePath+"\TestDt01.txt"
FileNoLong = Freefile ( )
Open IniFile for output As #FileNoLong
Print #FileNoLong ,"宣言開始"

Dim InAString as String * StringBuffLen=space$(StringBuffLen)
Dim InBString as String * StringBuffLen=space$(StringBuffLen)
Dim InCString As String * StringBuffLen = space$(StringBuffLen)
Dim InDString As String * StringBuffLen=space$(StringBuffLen)
Dim InEString As String * StringBuffLen=space$(StringBuffLen)
Dim SepChrLong As Long
Print #FileNoLong,"len(InAString) =";len(InAString),StringBuffLen
Print #FileNoLong,"文字の定義"

SepChrLong=&h00: SepChrLong=&h09
LSet InAString="1"+Chr$(SepChrLong)+"2"+Chr$(SepChrLong)+"3"+Chr$(SepChrLong)+"4"+Chr$(SepChrLong)+"5"+Chr$(SepChrLong)+Chr$(SepChrLong)
Lset InBString=InAString

Print #FileNoLong,"len(InAString) =";Len(InAString)
Print #FileNoLong,"FileName =";IniFile
Print #FileNoLong,"InAString =";InAString
Print #FileNoLong,"InBString =";InBString
Print #FileNoLong,"以上関数参照前"

642 :デフォルトの名無しさん:2016/09/17(土) 04:29:45.27 ID:ejCT2vp9
Print #FileNoLong,InAString, @InAString, InDString, InEString, FileNoLong
IIA = StringChick(InAString, @InAString, InDString, InEString, FileNoLong)

Print #FileNoLong,"関数参照後"
Print #FileNoLong,"InAString =";InAString
Print #FileNoLong,"InDString =";InDString
Print #FileNoLong,"InEString =";InEString
Print #FileNoLong,"FileNoLong =";FileNoLong
Close #FileNoLong
被参照側が
Function StringChick(InAString as String, InAStringPtr as string Ptr, InDString as String, InEString as String, FileNoLong As Long) as Long

StringChick = 0
Print #FileNoLong ,"関数参照中"
Print #FileNoLong ,"InAString =";InAString
Print #FileNoLong ,"InAStringPtr =";*InAStringPtr: 'この行でハング
Print #FileNoLong ,"InDString =";InDString
Print #FileNoLong ,"InEString =";InEString
LSet InDString = InAString
LSet InEString = *InAStringPtr: 'この行でハング
Print #FileNoLong ,"Lset でコピー後"
Print #FileNoLong ,"InDString =";InDString
Print #FileNoLong ,"InEString =";InEString
end function
で、結果が

643 :デフォルトの名無しさん:2016/09/17(土) 04:31:22.94 ID:ejCT2vp9
宣言開始
len(InAString) = 128 128
文字の定義
len(InAString) = 128
FileName =D:\bas\Projects\DimChk4\TestDt01.txt
InAString =1 2 3 4 5
InBString =1 2 3 4 5
以上関数参照前
1 2 3 4 5 1374776 1
関数参照中
InAString =1 2 3 4 5
InDString =
InEString =
Lset でコピー後
InDString =1 2 3 4 5
InEString =
関数参照後
InAString =1 2 3 4 5
InDString =1 2 3 4 5
InEString =
FileNoLong = 1
ポインターがコピーできていない。なお &h00でやるとハングする。

644 :デフォルトの名無しさん:2016/09/17(土) 04:37:07.43 ID:ejCT2vp9
MS-DOS 関係だと、Int 21 (番号忘却)で(レジスター忘却)にASCZ+&h00でDBCSの先頭文字のアドレスが返されるですが
Winでは、1文字1文字問い合わせるみたいです。以下、使用例。
Function ChacterDBCSChick(ActionType As Integer, ChacterTypeBool() As BOOLEAN) as Long
Dim as Integer IIST, IIEN, IIA
Dim as UBYTE Iubyte
ChacterDBCSChick =0
select case ActionType
case 1
IIST=&h00: IIEN =&h1F
case 2
IIST=&h20: IIEN =&h7F
case 3
IIST=&h80: IIEN =&h9F
case 4
IIST=&hA0: IIEN =&hfF
case 5
IIST=&h00: IIEN =&h7F
case 6
IIST=&h80: IIEN =&hFF
case 7
IIST=&h00: IIEN =&hFF
case else
IIST=&h00: IIEN =&hFF
end select
Redim ChacterTypeBool(IIST to IIEN)

For Iubyte =IIST to IIEN
'declare function IsDBCSLeadByte(byval TestChar as UBYTE) as WINBOOL
ChacterTypeBool(Iubyte) = IsDBCSLeadByte(Iubyte)
Next Iubyte
end function

645 :デフォルトの名無しさん:2016/09/17(土) 04:44:40.67 ID:ejCT2vp9
Devas.exe
http://www.vector.co.jp/soft/dl/win95/util/se162621.html
で、 C:\FreeBASIC を検索すると #include 用*.BIファイルにDeclare 宣言が見つかるし
*.BASに使用例が見つかるときがある。
#IF や別名登録なんてあったらばわかんなくなるけど。

646 :デフォルトの名無しさん:2016/09/17(土) 10:14:15.70 ID:ejX8tU80
>>643
sub Test(byval st as string ptr)
print *st
end sub

dim as string*10 a = "abcd"
print @a
Test(@a)

問題部分を抜き出してみた
まず言えることは、上記の例であれば、Test()関数のstring ptr型と変数aのポインタの型が違う
string型は内部にポインタ(記述子)を持つ構造体のようなもので
動的にメモリを確保して代入された文字列を格納する
だから@により得られるアドレスはその構造体のアドレス
strptr()関数で得られるアドレスは指し示す文字列のアドレスと2種類ある
string*N型のように固定長文字列にした場合、その両者のアドレスが同じになるけれど
その型のポインタは、その文字列のポインタとなる
関数の引数は、あくまでstring型のポインタだから
「passing different pointer types, as parameter 1(st) of TEST()」って警告が出る

結論としては、string型は可変長文字列として使うために用意された型なので
可変長文字列として扱うか、zstring型のポインタを代わりに使うかすれば良い

647 :デフォルトの名無しさん:2016/09/17(土) 10:16:25.62 ID:ejX8tU80
>>646
書き換えるなら

sub Test(byval st as zstring ptr)
print *st
end sub

dim as zstring*10 a = "abcd"
print @a
Test(@a)

とするか、

sub Test(byval st as string ptr)
print *st
end sub

dim as string a = "abcd"
print @a
Test(@a)

とすれば良い

648 :デフォルトの名無しさん:2016/09/17(土) 10:34:43.86 ID:ejX8tU80
実際にtypeof()してみたら良い

dim as string*10 a = "abcd"
#print typeof(@a)

としたら、コンパイラは「STRING * 3 PTR」と表示する
因みに*3の部分は表示バグっぽい
string型は可変長文字列で使って
固定長文字列はzstring型やwstring型を使えば良い

649 :渡辺真:2016/09/17(土) 10:41:44.35 ID:wPI7s58D
>>614

>命令によっては専用のメタ命令が必要である、
>Dir$(), #include "file.bi"
>Now (), #include "vbcompat.bi"
>Format$(), #include "string.bi"
>FileCopy(), #include "file.bi"


vbcompat.bi は、datetime.bi, dir.bi, file.bi, string.bi の全てを含んでいます。
該当キーワードを使おうが使わまいが、プログラムの1行目に、

#include "vbcompat.bi"

と書いておくことを推奨します。

「既存のライブラリを使う」の「FreeBASIC ヘッダー」参照下さい。
http://makoto-watanabe.main.jp/freebasic/ProPgPrebuiltLibraries.html#FreeBASICheaders

650 :デフォルトの名無しさん:2016/09/17(土) 10:52:42.76 ID:ejCT2vp9
>>647
Dim Zstring では、ヌルストリング含有文字列が作れない、取り出せません。
dim as zstring*10 a = "abcd" +Chr$(0)+"efgh"
MessageBox(TakaHWND,"Hello "+a+"("+Str$(Len(a))+")"+"("+Mid$(a,6)+")","Messagebox caption",MB_ICONINFORMATION)
で、
abcd(4)()
です。

651 :デフォルトの名無しさん:2016/09/17(土) 10:55:52.36 ID:ejCT2vp9
SHGetFolderPath
が使えない。なぜか宣言されていない変数とのコンパイルメッセージが出る。
Dim mehwnd As HWND, CSIDLValue As Long
Dim strGetFolderPath As String
'Dim strGetFolderPath As String * MAX_PATH
'Dim strGetFolderPath As ZString * MAX_PATH
Dim hToken as HANDLE = 0, dwFlags as DWORD =0
Dim IErrorLong As Long
mehwnd = 0
'Declare function SHGetFolderPathA(byval hwnd as HWND, byval csidl as long, byval hToken as HANDLE, byval dwFlags as DWORD, byval pszPath as LPSTR) as HRESULT
'ユニコード
' declare function SHGetFolderPath alias "SHGetFolderPathW"(byval hwnd as HWND, byval csidl as long, byval hToken as HANDLE, byval dwFlags as DWORD, byval pszPath as LPWSTR) as HRESULT
'その他
' declare function SHGetFolderPath alias "SHGetFolderPathA"(byval hwnd as HWND, byval csidl as long, byval hToken as HANDLE, byval dwFlags as DWORD, byval pszPath as LPSTR) as HRESULT
'「HRESULT」は「Long」の別名

'IErrorLong = SHGetFolderPathA(mehwnd, CSIDLValue, hToken, dwFlags, strGetFolderPath)
'IErrorLong = SHGetFolderPathW(mehwnd, CSIDLValue, hToken, dwFlags, strGetFolderPath)
'IErrorLong = SHGetFolderPath(mehwnd, CSIDLValue, hToken, dwFlags, strGetFolderPath)
MessageBox(TakaHWND,"Hello "+strGetFolderPath+"-1","Messagebox caption",MB_ICONINFORMATION)

652 :デフォルトの名無しさん:2016/09/17(土) 11:05:48.78 ID:ejCT2vp9
>>649
vbcompat.bi - datetime.bi, dir.bi, file.bi, string.bi 、およびマイクロソフト Visual Basic互換の追加定数を含んでいます。
とあるので、スーパーバイザー関係である
>>651
の先頭を
#include once "windows.bi"
#Include Once "win/commctrl.bi"
#Include Once "win/commdlg.bi"
#Include Once "win/shellapi.bi"
#Include Once "vbcompat.bi"
と変更して、コンパイル。
DimChk5.bas(103) error 41: Variable not declared, SHGetFolderPathA in 'IErrorLong = SHGetFolderPathA(mehwnd, CSIDLValue, hToken, dwFlags, strGetFolderPath)'
DimChk5.bas(104) error 41: Variable not declared, SHGetFolderPathW in 'IErrorLong = SHGetFolderPathW(mehwnd, CSIDLValue, hToken, dwFlags, strGetFolderPath)'
DimChk5.bas(105) error 41: Variable not declared, SHGetFolderPath in 'IErrorLong = SHGetFolderPath(mehwnd, CSIDLValue, hToken, dwFlags, strGetFolderPath)'
と解釈されない模様です。
#Include "vbcompat.bi"
#Include once "windows.bi"
#Include Once "win/commctrl.bi"
#Include Once "win/commdlg.bi"
#Include Once "win/shellapi.bi"
でも同様な結果です。

653 :デフォルトの名無しさん:2016/09/17(土) 11:08:54.61 ID:ejCT2vp9
>>649
なぜか既に入っていた。
#include "file.bi"
#Include "vbcompat.bi"
#include "string.bi"
#include "dir.bi"
と。
先頭に変更しました。

654 :デフォルトの名無しさん:2016/09/17(土) 11:31:22.68 ID:ejX8tU80
>>650
それはstring型でも同じだと思うけど?

655 :デフォルトの名無しさん:2016/09/17(土) 12:17:02.22 ID:ejCT2vp9
>>654
SepChrLong=&h00: 'SepChrLong=&h09
'Print #FileNoLong ,"InAStringPtr =";*InAStringPtr: 'この行でハング
'LSet InEString = *InAStringPtr: 'この行でハング
とコメント行に変更して、コンパイルを通して得た結果が
宣言開始
len(InAString) = 128 128
文字の定義
len(InAString) = 128
FileName =D:\bas\Projects\DimChk4\TestDt01.txt
InAString =1
(掲示板にコピーできない) http://www.dotup.org/uploda/www.dotup.org1005245.png.htmlにコピー前のテキストの画像を掲載
と長さが保存されている。
しかし関数参照後は、1まで、ヌルで切断されてしまう。

言語の方で理解できないようならば、Hex文字化して参照するという、古式手法を使うこととなる。
古いBasicだと、ランダムファイルでバイナリを読んでいたが、
長さがあわない実行形式のファイルだと、末尾に&h00を書き加えて長さをそろえる(Copy Command.com+tekito.nul CbCmd.com)

Int 21 で読み取って、Hex化して表示する
位しか方法がなかった。

Basic でDUMP.com を人力アセンブル(ハンドアセンブル)して、
Debug.com で逆汗(逆アセンブル)して、アドレスチェックして
作ったのが、DUMP.comで、使用頻度が多いので G.comに名前を変更して、(出力がコンソールなので、パイプ処理でテキストファイルを作成する)バッチファイルで使っていた。

機械語にしてもヌル文字(下位制御コード, &h00-&h1F)を含む場合には、Hex ダンプしてテキストとして使うという最終兵器がある。
V.B.ではLSET でByte配列にコピーしたんだけど、FreeBasic でのコピー方法がわからないでいる。

656 :デフォルトの名無しさん:2016/09/17(土) 12:55:27.36 ID:ejX8tU80
>>655
FreeBASICに限らず、どの言語でも
ヌル文字(\0)は文字列型の終端文字(ターミネータ)として使っているから
文字列の途中にヌル文字を入れるってのは不可能でしょ
ヌル文字は制御コードの1つだけど、他の制御コードをヌル文字とは言わんでしょ
例えば、テキストファイルから複数行の文字列データをstring型に格納したら
改行コードとかはちゃんと含まれるよ

そもそも何の文字列を取り扱いたいの?
テキストファイルにしても普通ヌル文字なんて混入していないでしょ

>V.B.ではLSET でByte配列にコピーしたんだけど、FreeBasic でのコピー方法がわからないでいる。

普通にindexingすれば、文字コードを取得できるよ

dim as string a = "abcdef"

for i as integer = 0 to 6
print a[i]
next i

657 :デフォルトの名無しさん:2016/09/17(土) 13:14:26.86 ID:ejCT2vp9
>>656
IErrorRetCodeLong = GetPrivateProfileSectionNames(strValue, StrLength, FileString)
IErrorRetCodeLong = GetPrivateProfileSection(SecNameString, strValue, StrLength, FileString)
'IErrorRetCodeLong = バッファに格納された文字数が返ります(終端のNULL文字1つを除く)。バッファのサイズが足りない場合は、nSize-2が返ります。
と、
' INIファイル内の全てのセクション名を取得する。
' INIファイル内の指定のセクションの全てのキーとその値を取得
関数の戻り値が NUL文字区切り、NUL+NUL文字が末尾。
直接 OPEN して読み取る手法もあるにはあるが、
INIファイルに書き込んだ直後はバイナリファイルになっていて、
しばらくたってから、テキストファイルに内容が変化する
という状態なので、書き込み終了時刻からの待ち時間を求めるのが面倒。
そのため、上記2つの関数を使っている。

658 :デフォルトの名無しさん:2016/09/17(土) 14:10:58.39 ID:ejX8tU80
>>657
なるほど
windows.biヘッダを見てみたけど、バッファとして扱うstrValueはzstring ptr型だな
恐らく該当部分のバイナリをzstring ptr型にキャストして返しているだけだな
なら話は簡単だ

ヌル文字をデミリタとして、strValueをループにかけて切り出せばいい
こんな感じでいけると思う

dim as integer count
dim as zstring ptr st = strValue

while count < StrLength
dim as string tmp = *st
dim as integer length = len(tmp) + 1

count += length
st += length

print tmp
wend

659 :デフォルトの名無しさん:2016/09/17(土) 14:21:52.60 ID:ejCT2vp9
>>656
>ヌル文字(\0)は文字列型の終端文字(ターミネータ)として使っている
マイクロソフト系だとその通りなんだけど、
IBM-360系(国産の互換機の取説より)は、配列の大きさと使っている文字数が先頭4Wordに書かれていて、終端文字がなし。ただし、PACKファイル(UN-PACKファイルと対をなす)は、0Dで0Aがセクターの最終を示す。0Aがあったらば次のセクターを読む。ファイルの末尾が1A。
プリンターやパンチでは0D,0Aの後に00が続いて送信されるので00は固定長の送受信ブロックの長さ合わせに使われていました。ここに未定義のコードを送るとスプールが致命的ハードの障害と判断して停止する。
PET系は、末尾が0Dだったか0Aだったか、1Aだったか忘却。
N88系は、文字変数のテーブルが理解できなくて、逆汗に挫折。
最初にいじった学校の機械は、生徒にSAVE禁止命令が出ていたので、その日に手入力して、サヨナラの毎日だったので、内部変数は見ていません。
事務BASICも逆汗していません。

文字変数や文字定数の最後に00を書き込んで可変長にする場合もありますが、
それ以外もあります。

660 :デフォルトの名無しさん:2016/09/17(土) 14:28:22.72 ID:ejX8tU80
>>658
取り敢えず、書き殴るだけでは何なので試してみた

dim as ubyte a(13) = {&h41, &h42, &h43, &h44, &h00, &h45, &h46, &h47, &h00, &h48, &h49, &h4A, &h00, &h00 }
dim as integer size = 14

dim as integer count
dim as zstring ptr st = cast(zstring ptr, @a(0))

while count < size
dim as string tmp = *st
dim as integer length = len(tmp) + 1

count += length
st += length

print count, tmp
wend

結果:
5 ABCD
9 EFG
13 HIJ
14

661 :デフォルトの名無しさん:2016/09/17(土) 14:39:04.34 ID:ejX8tU80
>>660
もう少し工夫すればcount変数も必要無いな
早い話、ポインタ演算すれば良いってことだな

662 :デフォルトの名無しさん:2016/09/17(土) 15:01:17.31 ID:ejCT2vp9
>>658 ポインターは難しいですね。私のコピーミスが考えられるので全部送ります。4時から私用があるのでこれで失礼します。色々ありがとうございました。
Dim IniFile As String, FileNoLong As Long, Zcount As Integer = 0
IniFile=ExePath+"\VBini.txt"
FileNoLong = Freefile ( )
Open IniFile for output As #FileNoLong
Print #FileNoLong ,"宣言開始"
Dim strValue As String * 5120
Dim As Long StrLength, IErrorRetCodeLong
IErrorRetCodeLong = GetPrivateProfileSectionNames(strValue, StrLength, IniFile)
Print #FileNoLong ,"取得文字数";IErrorRetCodeLong ;"/";5120
dim as integer count

663 :デフォルトの名無しさん:2016/09/17(土) 15:02:24.06 ID:ejCT2vp9
Dim as zstring ptr st = strValue
'DimChk4.bas(141) error 24: Invalid data types in 'Dim as zstring ptr st = strValue'
' 以上のコンパイルエラーが発生。
Print #FileNoLong ,"ループ開始"
While count < StrLength
Dim as string tmp = *st
dim as integer length = len(tmp) + 1
count += length
st += length
Zcount =Zcount+1
Print #FileNoLong ,Zcount;"tmp";tmp
If (Zcount>1000) Then Print #FileNoLong ,"ループ強制終了": Exit While
Wend
Print #FileNoLong ,"ループ終了"
Close #FileNoLong 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)


664 :デフォルトの名無しさん:2016/09/17(土) 15:27:56.23 ID:ejX8tU80
>>662
GetPrivateProfileSectionNamesの第一引数ってLPSTR型
これはFreeBASICではzstring ptr型だから

>dim strValue as String*5120 strValue
>IErrorRetCodeLong = GetPrivateProfileSectionNames(strValue, StrLength, IniFile)
この時点でおかしい

>Dim as zstring ptr st = strValue
型が違うから、そりゃエラー出るわな

665 :デフォルトの名無しさん:2016/09/17(土) 15:47:18.80 ID:ejX8tU80
>>662
Dim IniFile As String = ExePath+"\VBini.txt"
Dim FileNoLong As Long = Freefile()

Open IniFile For output As #FileNoLong

Dim strValue As ZString*5120
Dim strValuePtr As ZString ptr = @strValue
Dim StrLength As Long
Dim IErrorRetCodeLong As Long = GetPrivateProfileSectionNames(strValuePtr, StrLength, IniFile)

If IErrorRetCodeLong Then End

Dim count As Integer
Dim Zcount As Integer

While count < StrLength
Dim As String tmp = *strValuePtr
Dim As Integer length = Len(tmp) + 1
count += length
st += length
Zcount += 1
Print tmp
If Zcount > 1000 Then Exit While
Wend

分かりやすいように整形してみた
途中のIf分は、エラーコードを拾っているのなら、その判定が必要でしょ
Zcountの存在意味が分からないが、まあいいや

666 :デフォルトの名無しさん:2016/09/17(土) 16:01:13.10 ID:ejX8tU80
>>662
あと余計なお世話かもしれないが、システムハンガリアンを使うのは時代遅れ
静的型付け言語であるFreeBASICにおいても全く無意味な代物
やめろとは言わないが考え直すべき

667 :デフォルトの名無しさん:2016/09/17(土) 18:11:44.06 ID:ejX8tU80
>>665
>st += length
ミス
strValuePtr += 1

分かっていると思うけど、一応もう1つ指摘しておくよ

>Open IniFile For output As #FileNoLong
この部分は、ファイルオープンエラーが起こり得るから

If Open(IniFile, For Output, As #FileNoLong) Then
...
EndIf

ってな感じで、エラー処理挟むと良いね

668 :デフォルトの名無しさん:2016/09/17(土) 18:28:33.74 ID:ejX8tU80
>>665
書こうと思って失念してたのが、もう1つあった

変数宣言と初期化は統一するべき
FreeBASICはBASICなだけあって親切な言語だから
変数宣言時にその型のデフォルト値で初期化してくれる
だけれども初期値が用意してあるなら、ちゃんとそれで初期化すること

理由は、初期化の後に代入するという2つの処理が挟まれるから
Dim As Integer a ' 暗黙的に0で初期化
a = 1000 ' 1000を代入

Dim As Integer a = 1000 ' 1000で初期化のみ

些細なことのようだけど、こういった部分をしっかりやると
処理速度も向上し、無駄な行数を減らせ、読み易いコードになる
>>623で変数宣言を必要な場所でするべき、と言ったのもそういう理由から

669 :デフォルトの名無しさん:2016/09/18(日) 12:45:36.72 ID:a7cHaCPR
>>666 >システムハンガリアンを使うの
https://ja.wikipedia.org/wiki/%E3%83%8F%E3%83%B3%E3%82%AC%E3%83%AA%E3%82%A2%E3%83%B3%E8%A8%98%E6%B3%95
より、たぶん接頭語のことかな。
これは、Fotran 6, 77の頃から使っているもの、
I-N が整数、A-H, O-Zが実数より
サブルーチンの引数名が大域変数名と同じな場合に、小文字のiをつける
保守用変数は、Zで始める
が今も使っている(変数名を8文字程度以下に抑える動作試験ルーチンなどで)もの。
「str」等の3文字の変数は、マイクロソフトのサイトなどの内容のコピーで
下手に変数名を書き換えると動作しなくなるので
そのまま、使っている。
V.B.のバージョンが6.0の為。

>>665 >Zcountの存在意味が分からない
これは、保守用変数。
While-Wend, Do-Loop, For-Next 等のループ命令で、
ループ回数が想定外の回数発生した場合に、異常終了するためものも。
For I=1 to 10: I=1: Next I なんて、分量が多くなるとなかなか気が付かない誤記載が発生したときのもの。

>>664 >型が違うから、そりゃエラー出るわな
Basic は型を多少間違えても、適当に直して解釈してくれる
と思っていたから、機械語・スーパバイザー関連以外はチェックしないでいた。

670 :デフォルトの名無しさん:2016/09/18(日) 12:45:59.67 ID:a7cHaCPR
>>668
FreeBasic になって、Dim に初期値が規定できるようになったけど
JIS-Basic では、規定していないので、不定の値が入る。
非実行文の宣言文を書いて、実行文で初期化する
という慣習の名残。
Fotran 77等では、Const で初期値を入れて宣言の初期値を設定できるようになったが、
Const は定数という意味合いが強いので、使っていなかった。
定数で変更を認めない場合は(命令語忘却)を使っていました。

>>667
If Open(IniFile, For Output, As #FileNoLong) Then
この構文は知らなかった。

671 :デフォルトの名無しさん:2016/09/18(日) 14:04:30.43 ID:/Q0b75iC
>>669
そのマイクロソフト自身も現在はシステムハンガリアンの使用を禁止しているよ
動的型付け言語ならまだ有効だと思うけど、今となっては悪習の1つだな
アプリケーションハンガリアンは使い方次第では有効だから良いけどね
強制するつもりはないから、あくまで参考程度に聴いてくれると助かる

>Basic は型を多少間違えても、適当に直して解釈してくれる
暗黙のキャストはFreeBASICでもあるけれども(例:double型からinteger型への代入)
値型とポインタ型は全く別物だから、暗黙のキャストを通してしまうと
とんでもない誤動作が起きてしまうから、コンパイラが知らせてくれるのよ
以前にポインタ型は参照型ではないと言ったのも、その理由から

例えば、integer型をinteger ptr型に暗黙的に代入できたら
integer型の数値がアドレスに変換されて
別のアプリケーションが専有するメモリや未定義のメモリ領域を参照して
とてつもない破壊活動が行われてしまう
アセンブリをやっていたなら、その辺りの怖さを知っていると思う

672 :デフォルトの名無しさん:2016/09/18(日) 14:20:26.05 ID:/Q0b75iC
>>670
そういう習慣は、言語に合わせて替えていくべきだと思うよ
そういえば、>>665のコードではconstを気にしていなかったけど
変数宣言で変化のないものは定数とするべきだな、よく忘れるw
>>665のコードの動作確認していないけれど、動いてる?

色々と興味深い話、ありがとね、凄く勉強になるよ
Fortranとか名前位しか知らないよw

673 :デフォルトの名無しさん:2016/09/18(日) 14:47:25.17 ID:/Q0b75iC
>>671
>integer型をinteger ptr型に暗黙的に代入できたら
FreeBASICでは「警告」しか発しないので注意ね
コンパイルは通ってしまう

古いコードとの互換性の為だと思うんだけど
はっきり言ってコンパイルエラーで良いと思うんだけどね

674 :デフォルトの名無しさん:2016/09/18(日) 21:13:04.36 ID:a7cHaCPR
>>671
>別のアプリケーションが専有するメモリや未定義のメモリ領域を参照して
インテル系CPUの特徴なんだよな。
マルチタスク用CPUだと、メモリー保護用レジスタがあってデータ領域しか読み書きができないようになっている。
しかし、インテル系はシングルタスク用なので、この手の保護レジスタが存在しない。
多分、インテルが特許を持っていないので、使えないんだと思う。
8086の頃から8080の拡張だからと言われていること。
逆に言えば、
Int 21 53(だったかな)でシステム変数のES:DIを入手して、システム変数を直接参照していたソフトがあった。
MS-DOS 3 → 5の変更で、BYTE変数がWORDになって、データがずれて、この手のソフトが全滅したときがあった。
システム変数を読み取りし放題だから、いろいろなことができる
というのも、
インテル系CPUの特徴。先頭アドレスの割り込みテーブルの一部に全レジスターの出し入れが可能で、頻繁に実行するようになったので、領域が重なる部分が使われなくなったとか、聞いている。
割り込みテーブルなんてユーザー(システム以外のタスク)が操作してはいけないものなんだけど、ここをユーザーが操作することで多くのソフトが作られている。

>>672 、>動いてる?
動かなかった。ZString でAPIを参照すると、NULで切れてしまう。
String で警告エラーを見ながら、参照するしかないみたい。
ライブラリーのに互換のために作成するけど、
セクション名キー名一覧は、ネスケ社がMS社に対して公開を求めた60個ぐらいの非公開参照だったと思う。
だから、通常の使用では直接指定するので使わないけど、芋蔓状に子プロセスを使った複数のタスクの同期には使わざるを得ない。
今のところ使うけど、近い将来、パンチラに戻すなり、新規に作成するなりする予定。
今のパソコンは、メモリーを気にしなくても済む(リージョンの壁、48KB, 32KB, 64KB, 640KB, 720KB, 16KBの壁が実質的にない)ので
20-30KBのファイルだったらば全部読み込んで、主記憶に保存して、主記憶をバッファ記憶の代わりに使うという手法が使える。
外部記憶に保存し続けるパンチラではなく、他の方法に変更するかもしれない。

675 :デフォルトの名無しさん:2016/09/18(日) 23:19:13.94 ID:/Q0b75iC
>>674
Windows APIを調べて書き直して、動作確認してみた
色々と勘違いと間違いがあったので動いたコード載せておくよ

#Include "windows.bi"

Const StrLength As Long = 5120

Dim IniFile As String = ExePath + "/VB.ini"
Dim strValue As ZString*StrLength
Dim strValuePtr As ZString Ptr = @strValue
Dim strValueSize As Long = GetPrivateProfileSectionNames(strValuePtr, StrLength, IniFile)

If (strValueSize + 2) = StrLength Then End ' この判定はもっと良い方法があるはず

Dim count As Integer
Dim Zcount As Integer

While count < strValueSize
Dim tmp As String = *strValuePtr
Dim length As Integer = Len(tmp) + 1
count += length
strValuePtr += length
Zcount += 1
Print tmp
If Zcount > 1000 Then Exit While
Wend

676 :デフォルトの名無しさん:2016/09/18(日) 23:20:56.59 ID:/Q0b75iC
>>674
まず、ファイルオープンいらない
APIにHandleを渡す必要無いのに何故ファイルをオープンする必要があるのかって思ってた
そもそもFreeBASICはFreeFileでLong型のファイルナンバーで管理している
次にファイル名は、ini拡張子でないと読み込んでくれない
GetPrivateProfileSectionNamesの第一引数にバッファのポインタ、第二引数にバッファサイズを渡す
その戻り値はエラーコードじゃなく、使用したバッファサイズを返す
バッファサイズが足りない場合は、指定したバッファサイズ-2の値が返る

横着なことせずに、ちゃんと調べるべきだった

677 :デフォルトの名無しさん:2016/09/18(日) 23:39:22.82 ID:/Q0b75iC
>>676
自分の勘違い間違いまとめ

GetPrivateProfileSectionNamesにバッファへのポインタを渡すから
第二引数にバッファサイズを渡すのは至極当然のことなのに
使用したバッファサイズを返す値と勘違いしていた
それも戻り値がエラーコードだと思ってたからなんだけど

GetPrivateProfileSectionNamesがファイルのオープンから読み込みまで
全部引っ括めてやると思っていなかった
だからファイルオープンが必要なんだろうと、ちょっと引っかかっていたけど
そのまま流した

ファイル名、これは全然動作に関係ないと思ってた
INIもTXTも同じ物だしって単純な思考

678 :渡辺真:2016/09/19(月) 10:52:13.45 ID:gmTLVgTb
>>675

事例として転載させていただきました。
http://makoto-watanabe.main.jp/freebasic/tipsEasyWindowsAPI.html
の一番最後です。
ところで、これは、何を目的に、何をしているプログラムですか?
(^^ゞ

679 :デフォルトの名無しさん:2016/09/19(月) 15:28:11.43 ID:KoK4joax
>>678
コードをまるまる転載するのは褒められたものじゃないな
君が解析をして注釈するなり何なり手を加えたものなら
こちらとしても 互 い に 有益な情報だと判断できるし
このコミュニティの存在意義もあると考える
意味も分からず(情報を引き出すための素振り?)転載して何がしたいのか?
そのコードの説明をしたら、それも一緒に転載するのか?
君もプログラムを組むのだろ?こんな短いコードならフローを追う位、朝飯前でしょ

一連のレスでコードに手を加えたり、相手に色々とアドバイスをしたのは
興味があったし、互いに有益になるからだ
知らない情報や興味深い話を相手は提示してくれているし、幾つか参考になったコードもあった
アウトプットをしない人間はコミュニティにおいて信用されないと察するべき

唯でさえ日本語の情報が少ないニッチな言語だから
君の情報サイトは有益なサイトであると考えるけど、情報を軽んじていないか?
「情報を纏め上げる」と「情報をかき集める」は全く違う

五月蝿いようだけど、もうちょっとその辺りを熟考して欲しい
楽しく互いに切磋琢磨したいんだ

680 :デフォルトの名無しさん:2016/09/19(月) 21:59:38.45 ID:BIobMlJt
http://www.dotup.org/uploda/www.dotup.org1008298.zip.html
に、参照前後や初期化を含めて全部含めて掲載しました。
結論として、
GetPrivateProfileSectionNames() 関数は恐ろしくて使えない
です。
FreeBasic の使用者は比較的多数いますので、通常の使用によって、引数が化ける(引数の領域の書きつぶしが発生する)ことは考えられませんので。

自作サブルーチン Fun SepDblNulStringDump() の参照前・参照中は、変数
引数 DataValSU, DataValSU2 ともに 3 を定義でき、かつ、参照も可能です。
しかし、両引数は、関数の参照後に共に0,0 になってしまっています。
どこかで変数の食いつぶしが発生しています。
大域変数として、"SepDblNulStringDumpSU には保存できました。
また、サブルーチンの戻り値 SepDblNulStringDump には書きつぶされていない値が返されています。

681 :デフォルトの名無しさん:2016/09/19(月) 23:33:48.33 ID:BIobMlJt
>>675 
http://agree.2ch.net/test/read.cgi/mango/1471892791/376-378
Dumpリストの掲載が禁止されているっポイ。

682 :デフォルトの名無しさん:2016/09/19(月) 23:37:51.35 ID:KoK4joax
>>680
あら、GetPrivateProfileSectionNamesはtxt拡張子でも読めるな
>>677のファイル名云々のところは勘違いをしてしまったな

>GetPrivateProfileSectionNames() 関数は恐ろしくて使えないです。
>FreeBasic の使用者は比較的多数いますので、通常の使用によって
>引数が化ける(引数の領域の書きつぶしが発生する)ことは考えられませんので。
んー、WindowsAPIに限らずバッファのポインタとサイズを渡して
その内容を書き換えるってのは普通にある動作だけどな
バッファを再利用する際に初期化(&h00で埋める等)を忘れると
バッファを何かしらの処理に掛ける際に誤動作を引き起こすけれども

>自作サブルーチン Fun SepDblNulStringDump() の参照前・参照中は、変数
>引数 DataValSU, DataValSU2 ともに 3 を定義でき、かつ、参照も可能です。
>しかし、両引数は、関数の参照後に共に0,0 になってしまっています。
関数の引数に「byref」付けれ
-lang fbにおいて、省略したら「byval」として見なされる
-lang qbとfbliteにおいて、省略したら「byref」として見なされる
自分は関数の参照渡しと値渡しは、確実に記述するんだけど(加えてconst指定も)
-lang fbに慣れるまで、そういう癖つけた方が良いな
つか、-lang fbでコンパイルしているよね?

やってることは、セクション名を取り出すだけだよね
VBini.txtにlog保存やWindowの構築と処理ってのは分かるが
それらを切り出して関数なり何なりにしないと
申し訳ないけど、色んな処理がごっちゃになって物凄く読み辛いコード

683 :デフォルトの名無しさん:2016/09/19(月) 23:51:01.46 ID:KoK4joax
>>681
ワロタw

自分が書いたwhile...wend処理は、バッファ内をポインタ演算して
一つずつセクション名を取り出しているだけ
バッファ内がこうなっていたら
[aaaaa][00][bbbb][00][cccc][00][00]
文字列の最後は&h00なのだから[aaaa]の先頭ポインタからstring型に値を入れると
その部分だけが切り出される(ここ重要)
で、ポインタを[aaaa]の長さとヌル文字分の長さ
つまり、len(*str) + 1分移動してポインタを[bbbb]の頭に持ってくる
それの繰り返し
バッファとして使っている固定長文字列型を文字列と考えるんじゃなく
バイト列と考えてみたらスッキリしない?

684 :デフォルトの名無しさん:2016/09/20(火) 05:31:50.64 ID:OvbuO/pb
>>680
昨日、あれからラッパー関数を作ったよ
ファイルからセクション名を取り出して動的配列に格納する関数
コピペするなり、変更を加えるなり、好きに使ってくれて構わない
解説が必要ならこのスレで言ってくだされ

http://www.dotup.org/uploda/www.dotup.org1008644.zip.html

685 :渡辺真:2016/09/20(火) 20:10:04.79 ID:ScvT560c
>>684
example を up いただき有難うございました。
GetPrivateProfileSectionNames の使い方を教えていただき、感謝いたします。
早速、事例としてコピペさせていただきました。
http://makoto-watanabe.main.jp/freebasic/tipsEasyWindowsAPI.html

ことろで、ini ファイルからセクション名を取り出すことが目的ならば、単純にテキスト・ファイルとして読む方が簡単のような気がするのですが。

例えば、次の掲示のように。
注:FreeBASIC で正規表現を使うには FB-win32-pcre-8.32.zip を下記でダウンロードする必要があります。
http://sourceforge.net/projects/fbc/files/Older%20versions/0.90.1/Binaries%20-%20Windows/Libraries/FB-win32-pcre-8.32.zip/download

686 :渡辺真:2016/09/20(火) 20:21:40.29 ID:ScvT560c
#Include Once "pcre.bi"

Dim FileNo As Integer
Dim pattern As String
Dim i As Integer = 0
Declare Function ExecRegExpr(RegExpr As String, InputStr As String) As Boolean

pattern = "\[.+\]"
FileNo = FreeFile
Open "VB.ini" For Input As #FileNo

If Err > 0 Then Print "ファイル入力でエラー": End

Do Until EOF( FileNo )
Dim As String text
Line Input #FileNo, text
If ExecRegExpr(pattern, text) = TRUE Then
i=i + 1
Print "セクション名" ; text
EndIf
Loop
Print "セクション数" ; i

Close #FileNo
Sleep

687 :渡辺真:2016/09/20(火) 20:24:25.91 ID:ScvT560c
Function ExecRegExpr(RegExpr As String, InputStr As String) As Boolean
Dim re As pcre Ptr
Dim error_ As ZString Ptr
Dim erroffset As Integer
Dim rc As Integer
Dim OVECCOUNT As Const UInteger = 30 '' should be a multiple of 3
Dim ovector(OVECCOUNT-1) As Integer

re = pcre_compile( RegExpr, 0, @error_, @erroffset, NULL )
If re = NULL Then
Print "pcre compilation failed at offset "; Str(erroffset); ": "; *error_
Sleep
End
End If

rc = pcre_exec( re, NULL, InputStr, Len( InputStr ),0, 0, @ovector(0), OVECCOUNT )
If rc < 0 Then
Select Case rc
Case pcre_error_nomatch
'Print "no match"
Case Else
'Print "matching error"; rc
End Select
ExecRegExpr=FALSE
Else
ExecRegExpr=TRUE
End If
End Function

688 :デフォルトの名無しさん:2016/09/20(火) 20:49:37.29 ID:eyotWnv3
>>685
>単純にテキスト・ファイルとして読む方が簡単のような気がするのですが。
マイクロソフトの内部処理で、
INIファイルにアクセスがあると、システム(スーパーバイザー、kernel32.dll)が読みだして、ランダムファイルかバイナリファイルに書き直します。
書き直した状態で、しばらく使用し、不明の時間が経過した後に、テキストファイルとして出力します。

したがって、
INIファイルが不在の時に初期値を書き込んで初期化し、
直後に内容を読み取る
とした場合には、後者は、バイナリファイル等になった状態になっていて、内容を読み取れません。
ですから、操作対象となるINIファイルに対する参照がない状態、
たとえば、該当ソフトを停止した状態で、ノートパットで中身を読み取り編集する、
等は可能ですが、
中身を操作することが前提のソフトの中で、テキストとして読み取る・テキストとして内容を書き替える、
等をすると、中身が復旧困難になる程度の破壊が発生します。
重複起動等の時の資源の管理が目的ですので、テキストファイルとしての操作はできません。

>>682 >つか、-lang fbでコンパイルしているよね?
していません。
fbc -s gui
(FbEdit初期値)です。
-lang スイッチを指定してみたら、何が何だかわからなくなって、
-exや-eexの指定もしない(指定してもOn ERROR GOTO 処理のコンパイルができない)で、初期値のままにしています。

689 :デフォルトの名無しさん:2016/09/20(火) 20:58:51.84 ID:eyotWnv3
ShellExecuteEx(udtShellExecuteInfo)
を使った、
チルドレン(芋蔓状に、複数のタスクを実行する手法、MS-DOS 2 の頃の手法)
を実行するルーチンがあったんだが、タスク終了までの待ち状態と子プロセスのリターンコード取得ルーチンを作っておいた。
Exec
というそのものずばりの命令を発見した。

SHELLEXECUTEINFO構造体の内容が、さっぱりわからないし、V.B. で作った内容は、変数が未定義でエラーになってしまうし、散々だった。

690 :デフォルトの名無しさん:2016/09/20(火) 21:04:46.67 ID:OvbuO/pb
>>685
まずさ、>>679に対する言及はしないの?

自分は著作権に対して余り五月蝿く言う方じゃないけど、敢えて言わせてもらうわ
君のサイトはクリエイティブコモンズライセンスで縛っているでしょ
その転載したコードも自動的に君が権利者となってそれに縛られるって事になるんだけど

公開されたコードだからといって著作物の権利の譲渡や放棄が明示されていないのに
よくまあ、君が権利者となるライセンスを明記しているサイトに転載できるね
>>684は、>>680に対して書いているからね

著作物の権利がどうなっているか分からない場合
事後報告じゃなく、ま ず は 断りを入れるのが先じゃないの?
>>679では、敢えて君のマナーや気構え程度にしか言及しなかったけど
こちらが示した事に何ら反応も示さずに何故それを繰り返すの?

本気で失礼極まりないんだけど

691 :デフォルトの名無しさん:2016/09/20(火) 21:15:16.88 ID:OvbuO/pb
>>688
省略しているなら「-lang fb」がデフォルト値になる
-「exx」はどっちでも、あった方が良いかなって程度
デバッグモードでコンパイルする場合は「-w all」を入れた方が良い
コンパイラが知らせる警告レベルの設定

692 :デフォルトの名無しさん:2016/09/20(火) 21:40:15.70 ID:eyotWnv3
>>668
>些細なことのようだけど、こういった部分をしっかりやると
>処理速度も向上し、無駄な行数を減らせ、読み易いコードになる
これやると、ソースの互換性が失われやすい。
一見無駄に見えるルーチンもあるけど、
Basic は、
ちょっとした処理をその場でチョコチョコとつくりあげて、おっつけ仕事に使う
言語なので、処理速度の向上(本来がTSS用言語なのでもともと遅い)は考えない。
ライブラリーの場合には、エラーチェックを十分しておくと、どこで障害が起こったのかがはっきりわかる。
あいまいな状態で動くようにしてしまうと、原因の特定がほぼできない障害に陥りやすい。
これ怖いから。連立方程式やOR(オペレーションリサーチ)の解が正しいかどうかわからない、といういやらしい現象が待っている。
繰り返し法で鞍部問題に引っかかったらば泣くしかないから。

JIS-Basic の範囲ならば、大体の機械で動作する。互換が確保される。
Free-Basic 用の命令に書き換えてしまうと、他のBasicに移植が困難になりやすい。
Function になっているが、ほとんどのBasic はGosub 行番かGosub ラベルなので
移植を考えると、関数名の引数には戻り値を設定しにくい。
今、移植でけつまずいている部分のほとんどが、V.B.専用ルーチン部分。
>>686-687 もマイクロソフトのルーチンを使わないでJIS-Basicの範囲で自分で他の入出力も作ってしまえば問題にはならない。

693 :デフォルトの名無しさん:2016/09/20(火) 21:56:50.67 ID:OvbuO/pb
>>692
少し前のレスでも言及したけど、FreeBASICはBASICだけどQBASICとは別物
BASICっぽいC言語+αって印象、OOPの要素が取り入れられたからね
誤解を恐れずに書くならC++ならぬ、C+みたいな位置付け

互換性がほしいなら-lang qbでやるべきだよ
そのために方言があるのだから

もし自分がその移植作業をするなら
仕様書だけ持ってきて、新しく書き直すなあ

694 :デフォルトの名無しさん:2016/09/20(火) 22:51:41.56 ID:eyotWnv3
>>692 続き。
Win系はマルチタスクなので、以下のような注意が必要。(岩波講座、情報科学のどこかに記載)
変数 AとBを入れ替える時に、作業変数 Cを用意して
C = A
A = B
B = C
とやるのが一般的だけど、これだとマルチタスクではうまく動かない。
変数 A, B, C を占有して、他のタスクがこれらの変数を操作しないように制限をかけて、実行すること
という条件が入る。

16Bit時代の Win だからまともにやっているかどうか知らないけれども、
kernel32.dll という一つのソフトに操作権を独占させることで、複数のタスクからの操作を排除している。
個別のソフトが >>686-687 のようなことをしてしまうと、原則としてまともに動かないことになる。

>>693
>仕様書だけ持ってきて、新しく書き直すなあ
仕様書はない。
システム(スーパバイザー)を操作する一群の命令群とこれに使用するサブルーチン
複数のソフトで共通使用するサブルーチン
をまとめただけだから。

Print using の仕様が QBとVBで大きく変わったから、付き合いきれないと、Fotranの文字化ルーチンを作ったとか
もしている。
このサイトのどこかにライブラリーが保管されているけど、類似のライブラリーとして
不定倍精度 二進化十進数 (BCD)演算。
のルーチンもある。これは、最初に使った機械が ±16桁、指数部±99のBCDだった。
統計をいじるようになって、有効桁が足らなくなって作った演算で、ふつう使うことがない。
金銭を使うソフトだと、加減算だけだとしても千兆位までの桁を確保しないと桁落ちが発生したりもする。
乗算が含まれると倍かくほしないと、おかしなことになりやすい(利益の3%に1/2を乗じた額であって、1.5%ではない、というのが社会関係の人。計算の入れ替えができない)。

だから、仕様書はない。ちょっとした計算をするためのライブラリーだから。

695 :デフォルトの名無しさん:2016/09/20(火) 22:55:44.27 ID:eyotWnv3
>>693
>誤解を恐れずに書くならC++ならぬ、C+みたいな位置付け
まことにすまない。C, C+, C++ いずれも持っているが、
内容を機械語に直して意味を解釈する、
という悪癖を持っているので、自分でソースを描けない。
当然、違いもわからない。

696 :デフォルトの名無しさん:2016/09/20(火) 23:12:11.08 ID:OvbuO/pb
>>695
ポインタ機能とOOP機能を有したBASICって意味合い程度よ
VB.NETとQBASICの中間的位置付けとでも言ったらいいか

697 :デフォルトの名無しさん:2016/09/21(水) 00:12:17.24 ID:F6TA7JIm
>>696
ポインター、って、データテーブルのアドレスの値

OOP は、大域変数に限ると、共通領域
http://www2.nc-toyama.ac.jp/~mkawai/lecture/fortran/subroutine/subroutine.html
(3) COMMON文 参照。

データ領域 DS:?? に変数を割り当てて、リンカーにスイッチをつけると、一覧表が出力される。
変数を直接移動するのではなく、8-64bit のアドレスの授受でサブルーチンコールをしているわけで
このアドレスを使うことは、無意識に行っていた。言語によっては直接入手できる(関数名忘却)。
8080系では、DS:SI にアドレスを、CL又はCXにデータ長さを指定して、DS:DIに演算結果を返す、というサブルーチンを作ると、拡張性が容易になる。
このことかと思っている。岩波講座情報科学では、「頭の良いコンパイラーでは」と限られているが、
Zcount = Zcount + 1命令(ADD)を Zcount += 1 命令(INC)に書き換える等の紹介をしていた。
30年ぐらいたつから、普通のコンパイラーならば、このくらいの置き換え処理をしてくれているものと思われる。

OOPも、
128バイトのフィールドを確保して、フィールドを切り替えて、共通領域にコピー、それぞれの内容に合わせて、変数の別名を宣言
なんてやっていたので、PEEK, POKE で使っていた。
専用命令が使えるようになったということかな?。

698 :デフォルトの名無しさん:2016/09/21(水) 22:07:16.78 ID:F6TA7JIm
For-Next に関する追加情報。
Dim As Integer IIA, Ien, Icount
Ien =5
Icount =0
For IIA = 1 To Ien
MessageBox(TakaHWND,"Hello IIA ="+Str$(IIA)+"IEN ="+Str$(IEN),"Messagebox caption",MB_ICONINFORMATION)
Icount =Icount +1
If Icount>20 Then Exit For
Ien = Ien+1
Next IIA
MessageBox(TakaHWND,"Hello IIA ="+Str$(IIA)+"IEN ="+Str$(IEN)+"Icount ="+Str$(Icount),"Messagebox caption",MB_ICONINFORMATION)

とやると、IIA =5を表示した後、ループから飛び出す。
For ループ内で、データ追加してデータ数が増える場合の処理、
ある種の再帰的処理なんだけど、For - Next 処理では実行不能。

For-Nextは、処理系によって変則的な動作が大きく変わるので、
開始値、終値、増分(?)をいじる場合には、目的の動作をするのかを調べる必要がある。
面倒だと思ったらば、Do-Loop を使うことも一つの選択だが、
Do-Loop 命令が存在しない処理系も存在する。そんな時は、IF と Goto でループを作ることになる。

699 :デフォルトの名無しさん:2016/09/21(水) 22:16:40.24 ID:F6TA7JIm
Dir$() 関数に関して、

Const As UInteger attrib_mask =fbDirectory
Dim As UInteger out_attr
Dim As String FileNameString

IAdir = ExePath+"\"
FileNameString = Dir(IAdir+"*.*", attrib_mask, out_attr)
Do Until Len(FileNameString) = 0
MessageBox(TakaHWND,"Hello "+"("+FileNameString+")","Messagebox caption",MB_ICONINFORMATION)
FileNameString=Dir(out_attr)
Loop

FreeBasic の Dir$() システム関数は
使っていたV.B.とは異なり、ディレクトリを読み取ることができる。

MSのシステム(スーパバイザー)参照
Dim FindData As WIN32_FIND_DATA
FindNo& = FindFirstFile(IAdir$ + AAString, FindData)
IA& = FindNextFile(FindNo&, FindData)
等は、使わないで済んだ。めでたい。

700 :デフォルトの名無しさん:2016/09/21(水) 23:58:33.44 ID:F6TA7JIm
'関連付けられている実行可能ファイル名を取得
に使われる、API(スーパバイザー)関数で、
IA = FindExecutable(FileString, IDirString, ExecutableFileNameString)
を使う場合には
「#Include Once "win/shellapi.bi"」が必須

701 :渡辺真:2016/09/22(木) 12:00:38.04 ID:arHLSSm1
>>690
>本気で失礼極まりないんだけど

気分を害させてしまい、まことに申し訳有りませんでした。

私のサイトがクリエイティブコモンズの「表示 - 非営利 - 継承」を使っているのは、
第三者が、私の承諾を必要とせずに、複製したり、再配布できるようにするためです。
私の名前を出しているのは、文責を明らかにして、誤記修正などのクレームの宛先を明確にするためです。

貴方が作成していただいたプログラムを、私のサイトに掲示したのは、作っていただいたプログラムをできるだけ多くの人が利用できるようにしたい、という気持ちからです。
貴方のプログラムを、私のサイトに転載することをご了解いただけないなら、残念ですが削除いたします。

702 :デフォルトの名無しさん:2016/09/22(木) 12:45:49.56 ID:7BuONNwf
>>701
>私のサイトがクリエイティブコモンズの「表示 - 非営利 - 継承」を使っているのは、
>第三者が、私の承諾を必要とせずに、複製したり、再配布できるようにするためです。
理解しますが、他から転載するのは、そのライセンスに縛る行為です
それは権利者の権利を害する行為になります
明確なライセンスを提示していないからといって、権利を放棄しているわけではありません
その事を認識してほしかったのです

まず確認してください
それが製作者に対する最低限の誠意です

>貴方のプログラムを、私のサイトに転載することをご了解いただけないなら、残念ですが削除いたします。
今回のことをこれ以上問題にするつもりはありません
転載していただいても構いません

あと、質問は大いに歓迎しますが、まずご自身でどう理解したのかを提示した方が
相手も説明し易いですから、より良い回答を得られると考えてください

意思表示をしていただいて、有難うございます

703 :デフォルトの名無しさん:2016/09/22(木) 12:49:10.86 ID:esuUIiS6
他人の著作物を、勝手に使ってはいけない。著作者に権利があるから。
使えるのは、相手が許可している場合のみ

新しく自分で作って、サイトに貼れ。
人の著作物を勝手に使うな。危険!

訴えられるぞ

704 :デフォルトの名無しさん:2016/09/22(木) 12:54:03.22 ID:9b+w8gcu
本来のライセンスを曲解しての干渉の義務化とこのスレの私物化は止めてくれ。
このスレは10年以上に渡る現行スレと言うより私物化の弊害で
停滞し続けていることが周知された状態だと思ってる。
何よりFreeBASICドキュメントのGFDLを遵守していないで時点で
関わるべきでないと判断してる。

705 :デフォルトの名無しさん:2016/09/22(木) 13:01:50.03 ID:9b+w8gcu
数年振りにこのスレに書き込んだけどFreeBASICに関して
このスレを放置して表立って活動しない理由は察してくれ。

706 :デフォルトの名無しさん:2016/09/22(木) 13:41:17.03 ID:7BuONNwf
>>704
>本来のライセンスを曲解しての干渉の義務化

この部分は自分に対して言ってる?

707 :704:2016/09/22(木) 15:12:55.32 ID:3YqamaKu
>>706
最初に、レスアンカーの省略で誤解させてすまない。
>>704-705の書き込みはいずれもID:9b+w8gcu(>>702)宛てでなくて
ID:arHLSSm1宛(>>701)宛て。
久々にこのスレを見たら数年前と同じような問題が起きてたので
注意喚起としての書き込みをしたつもりだったけど
スレの流れを把握しきれていないタイミングで
レスアンカーを省略したのは不味かったと反省してる。

708 :704:2016/09/22(木) 15:17:37.36 ID:3YqamaKu
>>706
最初に、レスアンカーの省略で誤解させてすまない。
>>704-705の書き込みはいずれも ID:7BuONNwf(>>702)宛てでなくて
ID:arHLSSm1宛(>>701)宛て。
久々にこのスレを見たら数年前と同じような問題が起きてたので
注意喚起としての書き込みをしたつもりだったけど
スレの流れを把握しきれていないタイミングで
レスアンカーを省略したのは不味かったと反省してる。

IDミスったので訂正して再書き込みしたけど
後は余程のことが無い限り不定期巡回のROMに戻ってる。

709 :デフォルトの名無しさん:2016/09/22(木) 16:10:31.77 ID:7BuONNwf
>>708
大丈夫、気にしてないよ

長い間このスレを利用してきて
彼は注意しても無視するから極力関わらないでいたんだ
2chで権利だ何だって言うのもどうかと思ったけれど
今回のことで流石にきっちり言わなきゃ駄目だなって思ったよ
自分のちゃっちいコードを転載されても痛くも痒くもないけど
それでも他人の成果物を掠め取る行為は許し難い

このスレを何とか日本国内のFBコミュニティとして盛り上げたいって気持ちがあるよ
誰もがコードを気兼ねなく提示し、意見交換を出来るスレにしたい
それを実行している矢先だったからね

っていうか、FBコミュニティって国内に無いよね?自分が知らないだけ?w

710 :デフォルトの名無しさん:2016/09/22(木) 20:41:39.56 ID:yFpkWppT
大域変数用 Dim 文について。
*.bas ファイルの先頭においてある Dim 文は実行されないと思うのだが、
FreeBasic ではどのように処理されているのやら。
#include once "windows.bi"
#Include Once "win/commctrl.bi"
#Include Once "win/commdlg.bi"
#Include Once "win/shellapi.bi"
Dim As Long DammyReturnCode

なんてやってもコンパイルが通ってしまう。
しかし、その後の
Function 適当(適当)
DammyReturnCode = 何かの関数()
end Function
なんてやると、
DimChk8.bas(35) error 41: Variable not declared, TakaDammyReturnCode4 in 'DammyReturnCode = 何かの関数()'
のように、コンパイルエラー 41 が発生する。

711 :デフォルトの名無しさん:2016/09/22(木) 21:15:52.39 ID:7BuONNwf
>>710
グローバル変数を殆ど使ったことがないから詳しくは言えないけど

dim shared as Foo X

のように書く
ソースファイルに置く場合、他の一緒にコンパイルするソースファイルから可視化する為に

extern as Foo X
dim shared as Foo X

ってexternを使う
ちょっとあやふやな記憶なので自信なし
マニュアル参照してね

712 :デフォルトの名無しさん:2016/09/22(木) 21:16:19.75 ID:yFpkWppT
Str$(), Str() 関数について。
Dim As String AAstring, bbString
Dim As BOOLEAN AABool
AABool =TRUE
AAstring = Str$(AABool)
AABool =FALSE
BBstring = Str$(AABool)

MessageBox(TakaHWND,"Hello ("+AAstring+")("+bbString+")","Messagebox caption",MB_ICONINFORMATION)
とやると、{true, false} のどちらかが得られる。
V.B.cstr()関数の戻り値{True, False}とは異なるので要注意。

713 :デフォルトの名無しさん:2016/09/22(木) 22:15:25.48 ID:yFpkWppT
>>711
extern は、複数のモジュール(ファイル)に共通な変数の定義の模様。
>外部結合を持っている、変数、配列またはオブジェクトを宣言します。
http://makoto-watanabe.main.jp/freebasic/PgExtern.html

混乱と混沌を司る吾輩でも使いこなせなかった。
というのは、前書いたように、
いくつか、チョコチョコっと作るやっつけ仕事で作り上げたソフトから
共通部分を積み上げて作ったのが、いまいじっているライブラリー3-4MB。
命名法の共通性がないし、仕様も存在しない。
そんなわけで、複数のファイルにまたがる内容は、覚えきれない。

ライブラリーに入れる時に、命名法をあわせるけど、Basic を使っている限りは使うことはないでしょう。
OOPに相当する内容が Fotran の共通領域、Block Common 文
http://www2.nc-toyama.ac.jp/~mkawai/lecture/fortran/subroutine/subroutine.html
(3) COMMON文  参照
で、一つのファイルで使う変数を一つのCommonBlock にまとめてしまう。
Fotran では一つのCommonBlock 領域に複数の宣言をしてもコンパイルが通ってしまうので
使用するファイル以外は、まったく使わない主記憶領域が存在する(ブラックボックス化ができる)だけ、となる。

extern を使って複数のファイル(モジュール)にまで影響を及ぼす宣言をすると、自分では理解できない、なにか、ができてしまいます。
V.B. でやって、
まとまらなくなって、そっくり全部捨てて、もう一度く見直す、
ということを何回かやっています。
この方法は、ロボットのソフトを管理していた同級生が、
客先で不調になったロボット用ソフトのデバックがうまくいかなかったときに
「同じ仕様書でソフト会社にもう一度発注する」
という方法が唯一の対応である
と、教えてくれまして、
実労1週間(8*5 = 40時間、休日プログラマーの私としては実質1か月)で、対応が取れなかったときに使っています。
Fotran を使っていたころの名残で、管理情報はすべて共通領域に保管します。ダンプルーチンを作っておけば、共通領域の変数異常は比較的簡単に発見できますから。

714 :デフォルトの名無しさん:2016/09/23(金) 21:04:06.75 ID:G4FKiQQT
'GetSystemTime udtSystemTime: 'V.B.用 現在の時刻を国際時間で返す
をFreeBasic で使おうとして、
'declare sub GetSystemTime(byval lpSystemTime as LPSYSTEMTIME)
とあるのだが
'IAA=GetSystemTime (udtSystemTime): '(不動)現在の時刻を国際時間で返す
'Call GetSystemTime (udtSystemTime): '(不動)現在の時刻を国際時間で返す
と動かなかった。
ファイルのタイムスタンプを統一する(一つのソフトができたらば、関係ファイルの時刻を統一しておくと、Libのバージョンアップに伴う、引数・名称の変更などの障害を避けられる)必要があり、
ファイルのタイムスタンプに記載する時刻の取得が必要になった。
http://www.orchid.co.jp/computer/cschool/CREF/gmtime.html
>一般的なプログラム使うことは無いと思います。
なんて人もいる。

715 :デフォルトの名無しさん:2016/09/23(金) 21:08:42.46 ID:G4FKiQQT
そんな中見つけたのが
http://makoto-watanabe.main.jp/freebasic/ProPgCruntime.html で、
http://www.orchid.co.jp/computer/cschool/CREF/gmtime.html に記載があり、動作試験。
'type time_t as integer
'type tm
' tm_sec as long
' tm_min as long
' tm_hour as long
' tm_mday as long
' tm_mon as long
' tm_year as long
' tm_wday as long
' tm_yday as long
' tm_isdst as long
'end type
Dim Atime As time_t
Dim Btime as tm
Dim CCtimePtr as tm Ptr = @Btime
'Dim DPtime as ZString
Dim DPtimPtr as Zstring ptr
'declare function time_ alias "time" (byval as time_t ptr = NULL) as time_t
Atime = Time_(NULL)
'declare function gmtime (byval as time_t ptr) as tm ptr
CCtimePtr =gmtime (@Atime) : ' gmtime(グリニッジ標準時への変換)
'declare function asctime (byval as tm ptr) as zstring ptr
'DPtimPtr = Allocate(80)
DPtimPtr = asctime(CCtimePtr)
MessageBox(TakaHWND,"Hello ("+*DPtimPtr+")","Messagebox caption",MB_ICONINFORMATION)
と取得可能であった。

716 :デフォルトの名無しさん:2016/09/24(土) 09:58:50.24 ID:360mA6EK
' 本家
'The functions Year, Month, Weekday, Day, Hour, Minute, Second allow to recover the different components of a date serial.
'日本語訳
'Year, Month, Weekday, Day, Hour, Minute, Second 関数は、日付の連続値の、異なるコンポーネントを回復することを可能にします。
'名訳 https://translate.google.co.jp/#en|ja| 機械翻訳 
'関数は、年、月、曜日、日、時、分、秒、日付のシリアルの異なる成分を回収することができます。

recover の直訳が, 回復する なんだけど。
http://ord.yahoo.co.jp/o/dic/RV=1/RE=1474764512/RH=b3JkLnlhaG9vLmNvLmpw/RB=/RU=aHR0cHM6Ly9rb3RvYmFuay5qcC9landvcmQvcmVjb3Zlcg--/RS=%5EADBWfxkGD33f8FC5_ElzCPt7zrKeK4-;_ylt=A2RivbhfzeVX5XQAgkRUmfd7
FreeBasic の内部表記 date serial を構成している年、月、曜日、日、時、分、秒を取り出すことができる関数がYear, Month, Weekday, Day, Hour, Minute, Secondである。
という意味だろうけど。

TimeSerial と DateSerialを使って、西暦0年0月0日0時0分0秒が設定できない。また、エラーが発生しない(参照直後ではErr=0)。
内部変数の構成がよくわからないけど、表現可能な期間がある模様。
入力側ではじいておかないと、発見が困難な障害になりやすい。特定が面倒くさい。

717 :デフォルトの名無しさん:2016/09/24(土) 11:41:07.49 ID:Dvsr/U8E
>>709
日本語翻訳ドキュメントの配布サイトは見たことあっても
FBコミュニティは見たことない。
このスレの現状を見る限り、FBコミュニティの設立と活発化までは程遠いと思う。
時期的に次スレ継続有無の意見を挙げておくけど>>1の意向と現状を見る限り
次スレは要らないと思ってる。
ここが匿名掲示板であることを理解出来ないコテハンが住み着いてる限り
スレは廃れて行くだけ。
それでも新スレとしてリニューアルする場合はコテハン禁止を
周知徹底して欲しいと願う位。
サイト持ちのコテハンの降臨はスレを出張所化させる私物化行為に匹敵するから
他意によってテンプレ上でサイトのリンクが載っていても
余程のことがない限りコテハンとしての書き込みでスレに干渉はしないものだと思ってる。
特に自分のサイトの更新をPRする書き込みは自分で書く必要が無い。
必要だと思われればテンプレサイトを漁った人が勝手に報告してくれる。
基本的にコテハンとしての立場でスレを放置していて構わないし
匿名であればスレ書き込みも厭わないけどコテハン晒しながらの
常駐は勘弁して欲しい。

718 :デフォルトの名無しさん:2016/09/25(日) 08:20:08.85 ID:HMNofkhl
レジストリ関係が何をやっても動かなかった。
RegQueryValueExstr() システム関数がなくなっていたため。
C:\FreeBASIC\*.bi に見つけることができなかった。

つまり、全部作り直し、ってこと。

719 :デフォルトの名無しさん:2016/09/25(日) 10:39:46.13 ID:HMNofkhl
>>716 のつづき。
処理が遅いので(CPU占有率30%よりも上がらない)、めげた。

????/01/01 00:00:00 と ????/12/31 23:59:59 の2つしかチェックしていないけど
-999年から4000年の間の年だと同じ値が帰ってきた。
数値から内部変数に変換した直後に、内部変数が指定した数値と同じものかを比較して、異なっていたらエラーとする
という変換時のチェックしか見つからなかった。

5分間隔、5秒間隔、毎時で同期間チェックをかけたが、約10時間行って、止まらなかったので、めげた。
誰かやってみて。

720 :デフォルトの名無しさん:2016/09/25(日) 11:13:09.23 ID:NTqjAG/u
>>716, >>719
DateSerial()関数は、durationではなく、単に年月日をLong型表現に変換する関数
だから0年0月0日0時0分0秒は表現できない
そのLong型の意味はエポック(1899年12月30日0:00)からの日数だよ、確か
因みに日付フォーマットのFormat()関数に渡すDouble型は整数部が日数、小数部が時間

vbcompat.bi系の関数は古臭いから使ってないな
自分はDateTime系のクラスを自作してるよ

721 :デフォルトの名無しさん:2016/09/25(日) 11:19:00.33 ID:NTqjAG/u
>>717
概ね同意

次スレはその時になったらでいいかな
次スレ立てるにしても900番代後半でテンプレでも用意すれば良いね

722 :デフォルトの名無しさん:2016/09/25(日) 11:58:23.42 ID:HMNofkhl
>>720
エラーを返さない関数の場合に、障害を意味する特定の値が存在する場合がある。
この値を探そうとしてめげた。
日付演算については、内部表現型の違いで3系統(文字型変数、倍精度変数、Byte型変数)用意している。
文字型変数で日付の乗算等をやったらば、訳が分からなくなって、1-60までしかつかわないから Byte型変数に書き換えて演算した。加算は良かったのだが減算がおかしくなって、整数型変数を用意した。
作るのに1年ぐらいかかったので、うるう年、うるう秒の取り扱いで混乱している。
元々は、V.B.の日付演算関数の使い方がさっぱりわからなくて、同僚が作った文字演算による日付計算(2000年問題・夏時間非対応)の概要を思い出しながら作ったもの。
これを移植するときのバグ取りルーチンとして、ある程度信頼できる日時を用意する必要があり、試した。
うるう年は対応したが、うるう秒が対応していない。和暦も対応していない(明治5年頃の切り替え等年号の切り替え日付が不明の為)。
RFC 0733,0822,0850,2822,3339には対応したつもりだが、比較試験していない。
タイムゾーン関係ルーチンが非常駐部にあるために、非常駐部から常駐部に移動して、、、とやらなきゃならないので
複数の*.frm ファイルで作ったV.B.用ルーチンの移植方法がわからないので、しばらくやらない予定。
子プロセスでつなぐ必要があるのかもしれない。

現在BEEP音関係の移植作業中。
'declare sub _beep (byval as ulong, byval as ulong)
で Call型 さぷるーちん。
Dim As Long IAA
IAA = _Beep(2000&, 300&)
が使えない。

723 :デフォルトの名無しさん:2016/09/25(日) 13:17:44.25 ID:qEg7kZL2
>>721
数年先の話になりそうだけどリニューアルするにしても
最低限のリンクと最低限のローカルルールの表示だけで
立てられるから、その時になってからで問題ない。
簡単な要点としては、リンクの説明での実名晒しを避けることと
コテハン書き込みを推奨しないこと位。

724 :デフォルトの名無しさん:2016/09/25(日) 22:03:27.55 ID:NTqjAG/u
>>723
アクティブだったdkl氏が他に興味を持っちゃって
本家の方も開発が停滞気味だし
そのフォーラムも一時期の活気が無くなっちゃったしな

まあ、ぼちぼちやってくしかないかな

725 :デフォルトの名無しさん:2016/09/26(月) 09:29:49.21 ID:gQftS+Lb
>>724
ある程度の完成段階で除虫された安定動作版がリリースされれば
あとは使い倒すだけになるはずだけど、それと共にソースが肥大化し過ぎて
手を加えるのが困難になるとそれなりのスキルを持った人手と
管理が必要になるから停滞化してもやむなしと言ったところかも?
それでもサポートエンドが付き物のプロプライエタリ・ソフトウェアと違って
ソースに介入できる分、ぼちぼちやっていける余地もあると思う。

726 :渡辺真:2016/09/26(月) 13:03:15.14 ID:gvhOMsvo
>>718
>レジストリ関係が何をやっても動かなかった。
>RegQueryValueExstr() システム関数がなくなっていたため。

下のページが参考になるかもしれません。
http://makoto-watanabe.main.jp/freebasic/tipsRegistry.html#ReadWrite

727 :デフォルトの名無しさん:2016/09/26(月) 21:37:26.43 ID:nPW4GvIj
>>720 エポック
の意味が分からなかったので、ちょっと調べてみた。
http://www5e.biglobe.ne.jp/~emm386/2016/zeller/jd05.html
https://ja.wikipedia.org/wiki/UNIX%E6%99%82%E9%96%93
これ、以前同僚がやった時に、うるう年の取り扱いが面倒、とサジなげた方法。
60,60,24,28-31,12 進演算で年月日時分秒ごとの配列を用意して、計算する
という方法になった。
ただし、日本だから使えるけど、アフリカのどこかの国では、30日*12月, 5-6日の13月暦を使っているので、海外を考慮すると使えない方法。
この配列を文字列で保管するか、倍精度整数型、バイト型で保管するか、の方法がある。
取り扱いだと文字変数が楽だけど、演算を考えると倍精度整数型が必要。
演算を作ってみて、混乱した。
30日の1か月後は、1月をのぞいて30日なんだけど、31日の1か月後は、1日にした。
1月29-31日の1か月後は2月1日とした。
だけど、30日の1か月後が31になったりするとき(当日は数えない、翌日を0日とかぞえる)がある。
日付の演算はコリゴリ。

>>726 今日は疲れたので、明日試してみます。

>>725
普通に管理できるのは、100KB程度が限界。
高校の頃に作ったソフトを元に拡張に拡張を続けて現在に至っているソフトがある。
機械、言語、OSをとっかえひっかえ直しながら今に至るけど、
機能の追加は比較的簡単にできるけど、障害はどこが原因かさっぱりわからない時がある。
V.B.のときには、ソースが10MB、サブルーチン5000を超えて何が起こっているのか、わからなくなった。
マクロ命令を使っているので、再起呼び出しが日常的で、変数の書きつぶしが原因の場合が多い。
再起を認めない方向でマクロ命令を規定して、虫取りが終わったんだけど
言語の場合には、そうはいかないよね。

728 :725:2016/09/27(火) 09:02:49.58 ID:RcindkQy
>>727
人の脳の容量では個人毎に自分に合った書き方をしないと
簡単に容量オーバー起こして何をしていたのか把握出来なくなる気がする。
元のコードがどんなに小さくても再帰呼び出しがあると管理の観点では再帰した分だけ
把握すべき事柄(頭の中のスタック消費)が増えたのと同じ作用があると思う。
再帰を無くしたことでコード量が増えても頭の中で整理出来るようになることの
メリットは大きいと思う。
言語のソースだとその仕様によっては再帰の動作を保証する必要があるから
一筋縄には行かないと思う。

729 :渡辺真:2016/09/27(火) 14:51:34.74 ID:S6jDwWW7
>>688
>重複起動等の時の資源の管理が目的ですので、テキストファイルとしての操作はできません。

私は、Ini-Object というものを見つけました。
http://makoto-watanabe.main.jp/freebasic/tipsWindowsIni.html

参考になるかもしれません。

'inifile オブジェクトを含めます
#Include Once

730 :渡辺真:2016/09/27(火) 14:53:04.52 ID:S6jDwWW7
後半が切れたので再UP
'inifile オブジェクトを含めます
#Include Once "inifile.bi"
'ファイル名前空間を設定します
Using inifobj
'作業文字列リスト(stringlist)を作成します。
Dim myList As stringlist
Dim As Integer Index, ret
Dim As String sret
'新しい inifile オブジェクトを作成します
Dim myIni As iniobj = iniobj("VB.ini")

If myIni.InitStatus = FALSE Then
Print "Error initializing ini object."
Sleep
End
EndIf

'全てのセクションを取得
Print "Reading all section names."
myIni.GetSections(myList)
For index = 0 To myList.count - 1
Print myList.Strings(index)
Next
Sleep

731 :デフォルトの名無しさん:2016/09/28(水) 19:39:18.68 ID:vB2smJ5n
>>729
おいコラ、本家フォーラムでも同じことするな
何がPlease consent to this.だ
転載してから相手に同意を求めるな!

君は人の話を聞き入れる気が全くないんだな
いい加減、本家フォーラムからもここからも去ってくれ
人の善意を踏み躙りリスペクトしない君と君のサイトは必要ない

本 気 で 消 え て く れ

732 :デフォルトの名無しさん:2016/09/28(水) 21:50:39.31 ID:x9CrL3iv
>>729-730 ありがとうございます。
現在レジストリー関係で四苦八苦していますので、こっちはちょっと先になるかと思います。

>>726 レジストリー関係いじるの開始。
一つのルーチンの引数がかなり類似しているので、引数を整理することで、中身を置き換えた。
比較的簡単なルーチン、sakura エディタ
http://sakura-editor.sourceforge.net/index.html.ja
の存在するディレクトリーの取得。これは、引数を合わせるだけでうまく動作した。
次に、システム情報を取得しようとして
RootKey = HKEY_LOCAL_MACHINE
SubKeyString = "Software\Microsoft\Windows\CurrentVersion"
に9種類、かっては保管されていたのが、現在は5つのみ。残りは行方不明。
RootKey = HKEY_LOCAL_MACHINE
SubKeyString = "Software\Microsoft\Windows\CurrentVersion\Setup\"
に23種のディレクトリーと最終ドライブ名が保管されているはずだが消えた。
「const CSIDL_」で「C:\tool\FreeBASIC\*.bi」を検索すると、
C:\tool\FreeBASIC\inc\win\shlobj.bi に約60行 SHGetFolderPath() システム関数によって取得できるディレクトリーが取得できる。
こっちに切り替えとなる。 #Include Once "win/shlobj.bi" 宣言が必要なので要注意。

Declare 文が3桁になって専用の *.bi を作ったのは良いのだが
#Include "ComCom1.bi"
(適当な宣言)
#Include "ComCom1.bi"
なんてやったらば、書き込んだ *.bas ではなく、ComCom1.bi に重複宣言とのエラーメッセージが出た。
2重に宣言したことに気が付くのに時間がかかった。

733 :デフォルトの名無しさん:2016/09/28(水) 21:51:34.09 ID:x9CrL3iv
本家
http://www.freebasic.net/wiki/wikka.php?wakka=KeyPgReturn
: Exit Function idiom.
日本語訳
http://makoto-watanabe.main.jp/freebasic/PgReturn.html
: Exit Function 熟語。
名訳
終了関数のイディオム。
これ、:で切れるのではなく、
「 Function = expression : Exit Function 」文とほぼ同じ意味である、という意味のような気がしてきた。

734 :デフォルトの名無しさん:2016/09/28(水) 22:12:45.95 ID:FWIJcGWT
本家フォーラム!?

735 :デフォルトの名無しさん:2016/09/28(水) 22:15:30.63 ID:FWIJcGWT
>>731
本家フォーラム!?

736 :デフォルトの名無しさん:2016/09/28(水) 22:45:10.43 ID:x9CrL3iv
何回か岩波講座 情報科学
https://www.iwanami.co.jp/.BOOKS/01/X/010151+.html
と書いたけど、これはそんなに肩がこる本じゃないから。
自習書、独学用教科書を目的に編纂された書籍なので、
独学で、算譜 https://ja.wikipedia.org/wiki/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0_%28%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%29
を体系立ててのりきろうとする人には何とか、道しるべになるだろう。

>>733
文とほぼ同じ意味である
よりも
句とほぼ同じ意味である
のほうかよいかな?。

>>728
Basic から再帰を取り除いたらば、文字しか残らないから。
Basic は、
 再起処理が容易に行えること、
 文字の取り扱いが容易であること
から使われているので、再起処理ができないのであれば、Fortan で組んだ方がきれいだし
http://search.yahoo.co.jp/search?p=Fortran%20free&sp=1&aq=-1&ei=UTF-8

ベクトル演算(配列を使った演算)なんて、Basic でノロノロやるよりもFotranの方が早いから
Fotran もちょっと探せば、巨大なライブラリーがあるので、引数などを直せば、大体の処理系で実行できる。
ところが、文字演算だとFotranでは苦手で結構面倒くさい。スーパーバイザ処理をFotranで組んだこともあったけど、めんどうだった。
もっとも、コボルでシステムを組んだ会社があったらしい。スーパバイザー関係は機械語で自作したらしい。

737 :渡辺真:2016/09/28(水) 22:52:32.47 ID:O3f8aY6K
>>733
>: Exit Function 熟語。

教えていただき、有難うございます。
これで文意が、つながりました。(^^ゞ
今、更新しました。

738 :デフォルトの名無しさん:2016/09/28(水) 23:31:30.54 ID:vB2smJ5n
>>732
申し訳ないが、>>737の彼とそのサイトには触れないで欲しい
FreeBASICのマニュアル翻訳にしても、コードの転載にしても
完全にライセンス違反の黒だから

>>737
また無視を決め込むのか?

739 :デフォルトの名無しさん:2016/09/29(木) 00:17:55.60 ID:Phxa9YOm
>>738
ライセンスどこ?

740 :デフォルトの名無しさん:2016/09/29(木) 00:37:07.11 ID:7Iw/NDZx
>>739
http://www.freebasic.net/wiki/wikka.php?wakka=GnuLicenses




&& &&& &&&&

741 :738でない名無し:2016/09/29(木) 00:42:47.90 ID:7Iw/NDZx
FreeBASICライセンスの内、ドキュメント部分のみの抜粋

Documentation
The documentation is released under the GFDL license.





>>740の「&& &&& &&&&」は、誤記載。

742 :デフォルトの名無しさん:2016/09/29(木) 00:49:45.47 ID:7Iw/NDZx
http://www.freebasic.net/wiki/wikka.php?wakka=LicenseGFDL

GFDLバージョンは1.2

743 :デフォルトの名無しさん:2016/09/29(木) 01:15:12.63 ID:7Iw/NDZx
GFDL1.2の派生はGFDL1.2であってクリエイティブ・コモンズ・ライセンスとは何の関係も無い。

744 :740:2016/09/29(木) 02:59:31.24 ID:Xp210YqJ
GFDLの再利用は営利目的も含めて認められている。
GFDLの二次的著作物は全てGFDL。

745 :渡辺真:2016/09/29(木) 10:20:38.15 ID:Gj1MSNoE
>>744
>GFDLの二次的著作物は全てGFDL。

私は、ライセンスを GFDL から CC BY-NC-SA に変更していることで「純白」ではない、と自覚しています。
GFDL と CC BY-NC-SA とで直面する大きな違いは、GFDL だと、公開に際してライセンスのテキスト全部を添付しなければならない煩瑣があることです。
4.H. Include an unaltered copy of this License.
FreeBASIC のコミュニティが、ライセンスとして GFDL を指定した理由は、文書の更新履歴と更新者を明らかにしつつ、共有著作物として、Free に再使用(複製、改変、頒布)できるようにすること、だと思います。
そうだとすると、CC BY-NC-SA は、許容できる範囲の変更ではないか、と私は考えました。
私のサイトの内容について、万一、FreeBASIC のコミュニティから訴えられた場合に対応できるように、実名とメイル・アドレスを明記しています。
幸いに、今のところ、FreeBASIC のコミュニティからクレームを受け取っていません。

746 :740:2016/09/29(木) 12:26:21.12 ID:0lcW9OHb
>>738
最小限度としての、こちらの判断です。
・本家フォーラムのマナー上、GFDL違反を本家フォーラムに挙げること自体が
お門違いと考えている。
・GFDL違反はGFDL違反として扱う。こちらはGFDLに遵守するだけのこと。

747 :デフォルトの名無しさん:2016/09/29(木) 19:03:21.46 ID:WGwuSJ1w
>>746
>本家フォーラムのマナー上、GFDL違反を本家フォーラムに挙げること自体が
>お門違いと考えている。
本家巻き込むような事は流石にしたくない

>GFDL違反はGFDL違反として扱う。こちらはGFDLに遵守するだけのこと。
同意

彼が是正してくれることを願って段階を踏んだけど
それも無駄足だったみたい

748 :デフォルトの名無しさん:2016/09/29(木) 19:25:50.14 ID:WGwuSJ1w
>>745を読んでよく分かったわ
勝手にGFDL1.2の解釈を自分の都合の良いように変え
無断転載と事後報告を繰り返し
批判や指摘を無視して
訴えられなければそれで良いって考え
自己中心的で余りにも他者を蔑ろにしている

>「純白」ではない
この言い草からもそれがよく分かる
自己顕示欲と自己保身の塊、これを悪とは言わないが度が過ぎればって話だ

色んなコミニュティに参加してきたけれど
どのようなコミュニティにおいても一番居てほしくない輩
コミュニティを根底から破壊する行為を平然とやる
他のスレで口汚く煽る人がいるが、それよりもずっと質が悪い

749 :デフォルトの名無しさん:2016/09/29(木) 22:19:08.05 ID:cc9t3rRT
>>747-748 (←746)
続けてコテハンは使いたくないので、レスアンカーで省略記載しました。
・今後の日本語ドキュメントの版は枝分かれすることになると思います。
・WikipediaのFreeBASICページ内のリンク記載については
編集者の自己責任として関与しません。
(と言うより、現状でWikipediaの編集者になるつもりもありません)

750 :デフォルトの名無しさん:2016/09/29(木) 22:59:43.37 ID:fXi0SOkZ
>>726 のアドレスの前半の内容で、
Dim As Long test2
という未使用の変数 test2 の宣言がある。
"ERR_OpenKey_"+Str(test)
というエラーメッセージがある。
Left(buf_exp_sz,test)
という文字演算がある。
使うときには、それなりの(バクとりをする)覚悟が必要。
test=ExpandEnvironmentStrings(Strptr(buf_sz),Strptr(buf_exp_sz), 1024)
という引数がわかれば、自分で作り直すという選択もあるだろう。
混乱の原因として
C:\tool\FreeBASIC\inc\win\winnt.bi の内容をあげる。
' REG_QWORD と REG_QWORD_LITTLE_ENDIAN が同値なのはたぶん仕様
const REG_QWORD = 11
const REG_QWORD_LITTLE_ENDIAN = 11
6800と8080 の違いはわかるよね。https://ja.wikipedia.org/wiki/%E3%82%A8%E3%83%B3%E3%83%87%E3%82%A3%E3%82%A2%E3%83%B3

751 :デフォルトの名無しさん:2016/09/30(金) 22:02:42.53 ID:WJIlfVnm
>>722 のつづき
'declare sub _beep (byval as ulong, byval as ulong)
で Call型 さぷるーちん。

_Beep(2000&, 300&)

とやったらば使えた。declare sub 宣言は予約語の宣言でもある模様。

>>736 でFree な Fotran を書いたけど、一覧のサイトは
http://netnanet.info/fortran/compiler.html
ライブの紹介は
http://www.rcs.arch.t.u-tokyo.ac.jp/kusuhara/tips/linux/fortran.html
http://www.arisoude-nakatta.com/n-linear-algebra-win-libraries-jp/
http://www.rcai.riken.jp/petadimension/s-softlib.html
てなところ。
もっとも、Basic てマクロ命令を書いて、Rで処理、というお手軽な方法もある。
R については、ネットでは古くから定評のある群馬大の青木さん
http://aoki2.si.gunma-u.ac.jp/R/
2次元の作画は、ネットでは古くから定評のある
http://www2e.biglobe.ne.jp/~isizaka/

自分で作れないと思ったらば、マクロ命令が使えるソフトを見つけてきて
Basic でマクロ命令のファイルを作って、コピーするだけ、で実行できる。

752 :デフォルトの名無しさん:2016/10/01(土) 09:42:17.29 ID:0740AvVo
やっと、V.B.のFrom_Resize() の入口にたてた。
細かいことは、"C:\FbEdit\*.bas" で (hBtn,x,y,97,31,TRUE と検索して。
Function WndProc(中略) As Integer 以下に、以下の宣言文
dim as long id, event, x, y
dim hBtn as HWND
'Type RECT
’(中略、ロボットに引っかかったみたい)
'End Type
dim reWin as RECT
Dim rect as RECT
Dim As Long SizeFlag, nWidth, nHeight

Select Case uMsg 内の Case WM_SIZE 以下に追記
'ユーザーによってウィンドウサイズを変更された時に発生
SizeFlag=HiWord(wParam)
nWidth = LOWORD(lParam)
nHeight = HIWORD(lParam)
'const SIZE_RESTORED = 0
’(中略、ロボットに引っかかったみたい)
'const SIZE_MAXHIDE = 4
'declare function GetClientRect(byval hWnd as HWND, byval lpRect as LPRECT) as WINBOOL
'declare function GetWindowRect(byval hWnd as HWND, byval lpRect as LPRECT) as WINBOOL
MSReturnCode = GetWindowRect(hWnd,@reWin): '全体枠全体の寸法取得
MSReturnCode = GetClientRect(hWin,@rect): '全体枠内部の寸法取得
hBtn=GetDlgItem(hWin,IDC_BTN1): '個別表示物のハンドル(枠番号)を取得, hBtn=0でエラー
x=rect.right-100
y=rect.bottom-35
MSReturnCode = MoveWindow(hBtn,x,y,97,31,TRUE): '個別表示物の枠の寸法を定義, 再作画を指示
'declare function MoveWindow(byval hWnd as HWND, byval X as long, byval Y as long, byval nWidth as long, byval nHeight as long, byval bRepaint as WINBOOL) as WINBOOL

関数はあっているかどうか知らぬ。内容をダンプしていないから

753 :デフォルトの名無しさん:2016/10/01(土) 09:44:47.55 ID:0740AvVo
ダンプルーチンは、
https://ja.wikipedia.org/wiki/%E3%82%B3%E3%82%A2%E3%83%80%E3%83%B3%E3%83%97
でもみて、適当に自分で作って。

初めて使ったダンプは、HDDの特定のセクターに関係内容が保管されていて
NFL (New File Loder) を起動させないでモニターだけを起動する。
モニターからFDDにコピーして、FDDの内容を別の機械で解釈するという手法を使った。
過去30だったか60だったか個のエラーメッセージも保管されている。

754 :デフォルトの名無しさん:2016/10/01(土) 14:53:35.67 ID:0740AvVo
>>751 でRを書いたので、R関係。
http://rio2016.2ch.net/test/read.cgi/math/1410263098/l50
http://rio2016.2ch.net/test/read.cgi/math/1380168442/l50
http://echo.2ch.net/test/read.cgi/tech/1340339592/l50
R類似で
http://rio2016.2ch.net/test/read.cgi/math/1284083650/l50
http://rio2016.2ch.net/test/read.cgi/math/1472051600/l50

シミ板。最近のRの話題でシミレーションがあるから。FreeBasic でシミやる人いるのかしら。
http://hanabi.2ch.net/sim/
いろんなソフトがあるから、手持ちのデータを各ソフトで読める形に直すのに、FreeBasic を使ってコンバート。
数値の区切り文字が、,(空白)# とか文字の区切りが"もじ"とか'もじ'とか。
けっこうめんどっちーんだわ
100個ぐらいまでならば手作業でやってもいいかもしれないけど、
50個超えたらばきつい。

>>752 でV.B.と同じ数値を使ってやったらば、うまくいかない。
V.B. では、
nWidth = LOWORD(lParam)
nHeight = HIWORD(lParam)
の12倍の数値を使っていた。
SizeFlag=HiWord(wParam) は間違い。SizeFlag=LOWord(wParam)だった。

V.B. の DoEvent に相当する命令が見つからない。
常に割り込みを認めている状態でのソフトの描き方
割り込みを禁止しないと実行できないソフトを書かなければならない
の違いがあるから。

755 :デフォルトの名無しさん:2016/10/01(土) 15:22:32.94 ID:0740AvVo
#define IDC_EDT1 1001
という命令がある。
この数値から、どの機能の小間物と対応しているのか、
取得方法があるなら、しりたい。

Fontとか表示文字(Coption)を動的に切り替える方法があれば知りたいが、見つからないでいる。

756 :デフォルトの名無しさん:2016/10/02(日) 11:34:15.98 ID:82+jvpD4
>>775 のつづき。 表示文字(Coption)を動的に切り替える方法は、
If GetWindowTextLength(GetDlgItem(hWin,IDC_EDT1)) Then
' ok here we get only if user has typed some text
GetDlgItemText(hWin,IDC_EDT1,@buff,SizeOf(buff))
SetDlgItemText(hWin,IDC_EDT2,@buff)
SetDlgItemText(hWin,IDC_STC1,@buff)
SetDlgItemText(hWin,IDC_BTN1,@buff)
Else
' User didnt enter any text
MessageBox(hWin,@Warning,@AppName,MB_ICONERROR)
EndIf
と見つかった。チュートリアル2参照。
.textと.Coption はこの方法で参照(値を読み取る)定義(値を設定する)できる。

757 :デフォルトの名無しさん:2016/10/02(日) 16:01:00.57 ID:82+jvpD4
非表示がうまく描けない。
ドイツ語サイトを見つけた。
https://www.freebasic-portal.de/

758 :デフォルトの名無しさん:2016/10/02(日) 17:29:01.38 ID:82+jvpD4
>>757 非表示に成功。
DispStates1 = IsWindowVisible(hWin): 'ソフト全体のハンドルより表示状態を取得
hBtn=GetDlgItem(hWin, IDC_BTN2): '個別表示物のハンドル(枠番号)を取得, hBtn=0でエラー
If (hBtn =0) Then
DispStates2 = -1: 'ハンドルの取得に失敗
Else
DispStates2 = IsWindowVisible(hBtn)
EndIf
'hBtn = 0: DispStates3 = IsWindowVisible(hBtn): 'エラーを示すハンドルでの取得: 'DispStates3 =0,(その他の場合)を返す


MessageBox(TakaHWND, "Hello ("+Str$(DispStates1)+") ("+Str$(DispStates2)+")"+Str$(DispStates3), "Messagebox caption", MB_ICONINFORMATION)

'https://msdn.microsoft.com/ja-jp/library/cc411211.aspx
'https://msdn.microsoft.com/ja-jp/library/cc364819.aspx
'http://blog.goo.ne.jp/masaki_goo_2006/e/41002821d5323a9b8c6efbb6b78c079c
If (DispStates2 = 0) Then
'非表示
DispStates3 = ShowWindow(hBtn, SW_SHOW ): '表示を指示
ElseIf (DispStates2 = 1) Then
'表示
DispStates3 = ShowWindow(hBtn, SW_HIDE ): '非表示を指示
EndIf

759 :デフォルトの名無しさん:2016/10/02(日) 17:34:00.39 ID:82+jvpD4
眺めた関係定数等は、以下の通り
const SW_HIDE = 0 'ウィンドウを非表示にし、他のウィンドウをアクティブにします。
const SW_SHOWNORMAL = 1 'ウィンドウをアクティブにして表示します。
const SW_NORMAL = 1 '
const SW_SHOWMINIMIZED = 2 'ウィンドウをアクティブにして、最小化します。
const SW_SHOWMAXIMIZED = 3 'ウィンドウをアクティブにして、最大化します。
const SW_MAXIMIZE = 3 'ウィンドウを最大化します。
const SW_SHOWNOACTIVATE = 4 'ウィンドウを直前の位置とサイズで表示します。
const SW_SHOW = 5 'ウィンドウをアクティブにして、現在の位置とサイズで表示します。
const SW_MINIMIZE = 6 'ウィンドウを最小化し、Z オーダーが次のトップレベルウィンドウをアクティブにします。
const SW_SHOWMINNOACTIVE = 7 'ウィンドウを最小化します。
const SW_SHOWNA = 8 'ウィンドウを現在のサイズと位置で表示します。
const SW_RESTORE = 9 'ウィンドウをアクティブにして表示します。
const SW_SHOWDEFAULT = 10 'アプリケーションを起動したプログラムが 関数に渡した 構造体で指定された SW_ フラグに従って表示状態を設定します。
const SW_FORCEMINIMIZE = 11 'たとえウィンドウを所有するスレッドがハングしていても、ウィンドウを最小化します。

760 :デフォルトの名無しさん:2016/10/02(日) 17:34:51.75 ID:82+jvpD4
システム関数など
''ShowWindow 指定されたウィンドウの表示状態を設定します。
'' ShowWindowAsync 別のスレッドによって作成されたウィンドウの表示状態を設定します。
''FlashWindow タスクバー上のボタンやウィンドウのタイトルバーを点滅させる
''ShowOwnedPopups 指定したウィンドウが所有するすべてのポップアップウィンドウを表示したり隠したりします。
''OpenIcon 最小化されているウィンドウを、元のサイズに戻し、アクティブにします。
''SetWindowPos 子ウィンドウ、ポップアップウィンドウ、またはトップレベルウィンドウのサイズ、位置、および Z オーダーを変更します。
''SetWindowPlacement 指定されたウィンドウの表示状態を設定し、そのウィンドウの通常表示のとき、最小化されたとき、および最大化されたときの位置を設定します。
''IsWindowVisible 指定されたウィンドウの表示状態を調べます。 → ShowWindow()
'' IsIconic 指定されたウィンドウが最小化( アイコン化)されているかどうかを調べます。
'' IsZoomed 指定されたウィンドウが最大化されているかどうかを調べます。
C:\tool\FreeBASIC\inc\win\winuser.bi に書き込んだ内容がやたら増えていく。

761 :デフォルトの名無しさん:2016/10/02(日) 18:08:02.25 ID:82+jvpD4
>>732 つづき。
現在、レジストリーのダンプ260MBから関係データを探し出すのに四苦八苦。
ソフトの入れ替え、
IE → (なんだったか、めちゃくちゃ遅くで即消した)とか、NEの消失とか、
で、何の内容を収集するか、の判断に迫られている。
それて゜、ちょっと一休み。

>>688 の直接の原因となった内容が、サブルーチンの参照の後で戻り値がすべて0になる、という現象。
これが、>>752 で発生している。
一つのタスクで、極端に違うマンマシン入出力を取り扱う場合に、内容をわけて処理する場合がある。
IDC_GRP1 を使って、上部に選択、下に処理の枠(Group)を作成して行う。
FbEdit の タグ(Disp00.bas, Disp00.rc, Disp00.bi等)のような機能である。
このときに、位置情報が必要なので、変数を作るのが面倒なので、位置情報を保存する配列と操作するルーチンを作った。
ルーチン内で値が保存されているが、戻り値が常に0になった。仕方ないので、専用の大域変数を確保して、大域変数と直接やり取りをするようにした。

これが、答えになるかもしれない。
00区切り0000末尾文字列を取り扱う2つのルーチンで、同じルーチンを書くことで乗り切れるかもしれない。

762 :デフォルトの名無しさん:2016/10/03(月) 20:40:47.92 ID:5dSIzUzr
ToolTip 簡易ヘルプメッセージに関するメモ。
"C:\FbEdit" 内 *.bas を「ToolTip」で検索すると4ファイルヒットするので表示する方法が存在する。
そのうち一つが
http://plaza.rakuten.co.jp/u703331/diary/200806040000/
http://plaza.rakuten.co.jp/u703331/diary/200806050000/
に使用変数名が類似。表示する文字などの定義方法は不明。

763 :デフォルトの名無しさん:2016/10/03(月) 20:49:54.72 ID:5dSIzUzr
Function WndProc() 内 Select Case uMsg 内 Case WM_INITDIALOG 以後の内容は、起動直後に1回だけ実行される模様。
したがって、初期化ルーチンをここに置く。

大域に用意した文字配列 AA() を引数にして、別ファイル(モジュール)に送ると、別ファイルでコピー作業中にハングする。

別ファイル大域に配列を用意して(ReDim(???)で領域を確保が必要かも?)、
起動ファイル内に作られた配列コピールーチンを参照するようにすると、ハングしない

764 :デフォルトの名無しさん:2016/10/03(月) 21:02:04.53 ID:5dSIzUzr
FBedit で自動作成される なんたら.bi を
自動作成されないので手動作成した かんたら.bas 内に #Include したら、コンパイルエラーになった。
サブルーチン(Function なんたら())の入った *.bi を #Include するのは避けたほうが良いかも。

チェックボックスの使い方。
Select Case LoWord(wParam) 内に

Case IDC_CHK1
'Dim RetVal1 as WINBOOL: '取得成功;True;0, 取得失敗;False;0以外、エラーコードを返す
Dim IAuint As uint
'declare function IsDlgButtonChecked(byval hDlg as HWND, byval nIDButton as long) as UINT
IAuint = IsDlgButtonChecked(TakaHWND,IDC_CHK1)
'const BST_UNCHECKED = &h0000 'ボタンの状態はチェックされません。
'const BST_CHECKED = &h0001 'ボタンの状態がチェックされます。
'const BST_INDETERMINATE = &h0002 'ボタンの状態は(ボタンに BS_3STATE または BS_AUTO3STATE のスタイルが設定されている場合のみ適用されます) 不確定です。

AAstring = "IDC_CHK1("+Str$(IAuint)+")"
DammyReturnCode = なんたらMessageDisp(1, AAString)

でチェックボックスのレ印の有無が取得できる。初期値設定は
'declare function CheckDlgButton(byval hDlg as HWND, byval nIDButton as long, byval uCheck as UINT) as WINBOOL
'const BST_UNCHECKED = &h0000 'ボタンの状態はチェックされません。
'const BST_CHECKED = &h0001 'ボタンの状態がチェックされます。
'const BST_INDETERMINATE = &h0002 'ボタンの状態は(ボタンに BS_3STATE または BS_AUTO3STATE のスタイルが設定されている場合のみ適用されます) 不確定です。
だが、BST_INDETERMINATEは指定不可。

765 :デフォルトの名無しさん:2016/10/03(月) 21:17:06.96 ID:5dSIzUzr
>>763 の続き。
多くの8080系言語では、配列などの巨大領域をスタック領域
https://ja.wikipedia.org/wiki/%E3%82%B9%E3%82%BF%E3%83%83%E3%82%AF
に、確保する。
8080のスタックレジスタは1つしかないので、一つのスタック領域に配列が確保される。
DS:SI ES:DI を使ったブロック転送よりも、高速だから、よく使われる。
起動ファイル(モジュール)のスタック領域が既にほぼ使われている、
と考えるならば、
起動ファイルから参照した別ファイル内領域(参照された側の領域)に配列が確保できず、
起動ファイル内領域(参照した側の領域)に、配列が確保される、
と考えるならば、
スタック領域の不足から、起動ファイルの領域を破壊して終了する(ハングする)
という現象が説明つく。

766 :デフォルトの名無しさん:2016/10/03(月) 21:24:09.73 ID:5dSIzUzr
>>765 つづき。
Function WndProc() 内で、
配列を用意して、引数で別ファイル(モジュール)に送るという操作
は避けて、
大域に適当な静的配列を作ってFunction WndProc() 内で、値を定義し、
別ファイルのルーチンに制御を移してから、Function WndProc() のあるファイル内に作成した静的配列読み取りルーチンを起動する
という手法を使う必要があるかもしれない。静的にしてしまえば、スタック領域が使われないから。

767 :デフォルトの名無しさん:2016/10/03(月) 21:28:39.69 ID:5dSIzUzr
>>766 つづき。
こんな、配列の作成場所を考慮するなんて、Basic じゃないよ。CとかFotranとかコボルだよ。
Basicインタープリター はどこかに巨大な数値領域があって、大域で使えて、どこにあるかなんて、気にしない言語なのに。

768 :デフォルトの名無しさん:2016/10/03(月) 21:36:44.51 ID:5dSIzUzr
>>766 つづき。起動ファイル内配列作成ルーチンの一例
Const PartsTSU = 6
Dim Shared PartsID(0 To PartsTSU) As Long => {0, IDC_CHK1, IDC_CHK2, IDC_CHK3, IDC_CHK4, IDC_STC1, IDC_STC2}
'Dim Shared PartsTypeList(1 To 6) As String => {"IDC_CHK1", "IDC_CHK2", "IDC_CHK3", "IDC_CHK4", "IDC_STC1", "IDC_STC2"}

Function PartsTypeGet(iPatysTypeString() As String, iPartsID() as Long, iPartsTSU as Long) As Long
Dim as Long IAA
PartsTypeGet = 0
Redim iPatysTypeString(PartsTSU) As String , iPartsID(PartsTSU) as Long
iPartsTSU = PartsTSU
iPatysTypeString(1) = "IDC_CHK1"
iPatysTypeString(2) = "IDC_CHK2"
iPatysTypeString(3) = "IDC_CHK3"
iPatysTypeString(4) = "IDC_CHK4"
iPatysTypeString(5) = "IDC_STC1"
iPatysTypeString(6) = "IDC_STC2"
For IAA = 1 to PartsTSU: iPartsID(IAA) = PartsID(IAA): Next IAA
End Function

使われている部品が、何かわからないので、何であるかを知らせるルーチン。
うまくいけば、起動状態の初期値、動作状態の変化、等を一元管理できる外付けファイルが作成可能。
もちろん、狂気と混沌が漂う、自己書き換えルーチンだから、あまりおすすめできない。

769 :渡辺真:2016/10/03(月) 21:54:48.23 ID:hlqiRfYS
>>716
>FreeBasic の内部表記 date serial を構成している年、月、曜日、日、時、分、秒を取り出すことができる関数がYear, Month, Weekday, Day, Hour, Minute, Secondである。

見逃していました。
毎度教えていただき、有難うございます。
今「回復」しました。

770 :デフォルトの名無しさん:2016/10/04(火) 21:12:01.77 ID:TnvyzfSK
>>758 Enable 関係の処理に成功。
Dim As BOOLEAN Abool, Bbool
Dim hBtn As HWND
Dim Long As IAA 既に宣言済み
hBtn=GetDlgItem(TakaHWND, IDC_BTN2): '個別表示物のハンドル(枠番号)を取得

'declare function EnableWindow(byval hWnd as HWND, byval bEnable as WINBOOL) as WINBOOL
'declare function IsWindowEnabled(byval hWnd as HWND) as WINBOOL

IAA = IsWindowEnabled(hBtn) : 'Ibool ={0;無効, (その他);有効}
If (IAA=0) Then
MSReturnCode = EnableWindow( hBtn, TRUE): 'ABool = {TRUE;有効, FALSE;無効}
Else
MSReturnCode = EnableWindow( hBtn, FALSE): 'ABool = {TRUE;有効, FALSE;無効}
End If

771 :デフォルトの名無しさん:2016/10/04(火) 21:28:37.54 ID:TnvyzfSK
>>769
>>751
'declare sub _beep (byval as ulong, byval as ulong)
で Call型 さぷるーちん。
_Beep(2000&, 300&)
のように、C:\tool\FreeBASIC\inc 内の *.bi に記載されている無限にも見える declare 文で定義されている名称は、予約語と言える。
http://makoto-watanabe.main.jp/freebasic/CatPgFullIndex.html
に記載されていない語の予約語もあることを記載してほしい。
「BEEP」は記載されているが、「_Beep」は記載されていない。
Unix 等では、「_Beep」は予約語にならないと思われるが
#include で読み込まれる一連の *.BIファイルにて宣言されている語は予約語になりうると。
OS の違いからすべてを網羅するのは不可能だろうから、見つけ方だけでも記載してほしい。

772 :デフォルトの名無しさん:2016/10/04(火) 21:45:36.14 ID:TnvyzfSK
*.rc ファイルの編集画面で、左側に並んでいる小物を全部並べてみた。
CONTROL "EditText",IDC_EDT1,"Edit",0x50010000,3,3,29,15,0x00000200
CONTROL "IDC_STC",IDC_STC1,"Static",0x50000000,42,3,36,15
CONTROL "IDC_GRP",IDC_GRP1,"Button",0x50000007,81,3,42,12
CONTROL "IDC_BTN",IDC_BTN1,"Button",0x50010000,132,3,27,12
CONTROL "IDC_CHK",IDC_CHK1,"Button",0x50010003,168,3,24,12
CONTROL "IDC_RBN",IDC_RBN1,"Button",0x50010009,6,24,30,12
CONTROL "",IDC_CBO1,"ComboBox",0x50010003,48,24,30,15
CONTROL "",IDC_LST1,"ListBox",0x50010141,90,24,24,15,0x00000200
CONTROL "",IDC_SCB1,"ScrollBar",0x50000000,129,24,24,15
CONTROL "",IDC_SCB2,"ScrollBar",0x50000001,171,21,21,21
CONTROL "",IDC_TAB1,"SysTabControl32",0x50018000,9,42,27,15
CONTROL "",IDC_PGB1,"msctls_progress32",0x50000000,54,45,24,12
CONTROL "",IDC_TRV1,"SysTreeView32",0x50010007,87,45,30,15,0x00000200
CONTROL "",IDC_LSV1,"SysListView32",0x50010003,135,42,21,12,0x00000200
CONTROL "",IDC_TRB1,"msctls_trackbar32",0x50000000,168,45,24,15

773 :デフォルトの名無しさん:2016/10/04(火) 21:46:00.41 ID:TnvyzfSK
CONTROL "",IDC_UDN1,"msctls_updown32",0x50000000,3,60,36,15
CONTROL "",IDC_IMG1,"Static",0x50000203,30,63,33,12
CONTROL "",IDC_TBR1,"ToolbarWindow32",0x50000001,78,66,39,12
CONTROL "IDC_SBR",IDC_SBR1,"msctls_statusbar32",0x50000003,84,66,21,12
CONTROL "",IDC_IMG2,"Static",0x50000203,84,66,30,15
CONTROL "",IDC_DTP1,"SysDateTimePick32",0x50010004,117,63,54,15
CONTROL "IDC_RED",IDC_RED1,"RichEdit20A",0x50010000,9,84,30,21,0x00000200
CONTROL "IDC_UDC",IDC_UDC1,"UDCCLASS",0x50000000,57,87,27,18
CONTROL "",IDC_CBE1,"ComboBoxEx32",0x50010003,96,87,24,15
CONTROL "",IDC_SHP1,"Static",0x50000004,138,84,30,15
CONTROL "",IDC_IPA1,"SysIPAddress32",0x50010000,12,108,27,18
CONTROL "",IDC_ANI1,"SysAnimate32",0x50000000,51,111,39,12
CONTROL "",IDC_HOT1,"msctls_hotkey32",0x50010000,102,108,27,15
CONTROL "",IDC_PGR1,"SysPager",0x50000001,138,108,24,15
CONTROL "",IDC_PGR2,"SysPager",0x50000000,180,66,9,21
CONTROL "",IDC_REB1,"ReBarWindow32",0x50000000,177,99,12,15
CONTROL "",IDC_HDR1,"SysHeader32",0x50000002,150,108,33,15
HScroll, VScroll の自動で作られる表題 IDC_SCB で一致。
HPager VPagerの自動で作られる表題 IDC_PGR で一致。
各行の4列目に書かれている文字が、GroupBox、Button、RadioButton、CheckBox で一致。
五列目の数値についても、0x50000000 が8種類で一致してくれている。

これの解明はキビシー。
スクロールにヘルプなどはいらないと思うので、初期値の名称を自前で変更しなければ、それなりの自己書き換えルーチンを作成できるような、気分になってきた。

774 :渡辺真:2016/10/05(水) 11:55:35.33 ID:28V7ff+C
>>771
>記載されていない語の予約語もあることを記載してほしい。

「渡辺注:」を追記してみました。
http://makoto-watanabe.main.jp/freebasic/CatPgFullIndex.html
こういう趣旨でしょうか?

775 :デフォルトの名無しさん:2016/10/05(水) 22:27:41.54 ID:YonHd30p
>>774 助かります。
Beepとシステム時刻の取得で、苦しみました。
色々助言をいただいた方々も、Declare Sub (ルーチン名) 宣言されたマイクロソフト系ルーチンの参照方法がわからなかったみたいです。
(ルーチン名)(適当な引数、、、)
と、「Call 」を除いた表記で参照するということを知らせる書き込みはなかったようですし。

776 :デフォルトの名無しさん:2016/10/05(水) 22:30:38.73 ID:YonHd30p
>>773 のつづき。*.rc ファイルの解釈から、

DispStyleUlong = VAL("&H" + RIght$(StyleString,4))
case "Button"
'スタイル項目で変化する
'https://msdn.microsoft.com/ja-jp/library/tf9hd91s.aspx
IF (DispStyleUlong = BS_PUSHBUTTON) then
PatsTypeNoLong = 2: PatsTypeNameString = "IDC_BTN": 'Button 0x50010000 BS_PUSHBUTTON
ElseIF (DispStyleUlong = BS_AUTOCHECKBOX) then
PatsTypeNoLong = 5: PatsTypeNameString = "IDC_CHK": 'CheckBox 0x50010003 BS_AUTOCHECKBOX
ElseIF (DispStyleUlong = BS_GROUPBOX) then
PatsTypeNoLong = 8: PatsTypeNameString = "IDC_GRP": 'GroupBox 0x50000007 BS_GROUPBOX
ElseIF (DispStyleUlong = BS_AUTORADIOBUTTON) then
PatsTypeNoLong = 17:PatsTypeNameString = "IDC_RBN": 'RadioButton 0x50010009 BS_AUTORADIOBUTTON
end if
case "SysPager"
IF (DispStyleUlong = PGS_HORZ) then
PatsTypeNoLong = 16:PatsTypeNameString = "IDC_PGR": 'HPager 0x50000001 PGS_HORZ
ElseIF (DispStyleUlong = PGS_VERT) then
PatsTypeNoLong = 16:PatsTypeNameString = "IDC_PGR": 'VPager 0x50000000 PGS_VERT
end if

777 :デフォルトの名無しさん:2016/10/05(水) 22:31:45.50 ID:YonHd30p
case "Static"
IF (DispStyleUlong = SS_CENTERIMAGE OR SS_ICON) then
PatsTypeNoLong = 11:PatsTypeNameString = "IDC_IMG": 'Image 0x50000203 SS_CENTERIMAGE OR SS_ICON
ElseIF (DispStyleUlong = SS_BLACKRECT) then
PatsTypeNoLong = 22:PatsTypeNameString = "IDC_SHP": 'Shape 0x50000004 SS_BLACKRECT
ElseIF (DispStyleUlong = SS_LEFT) then
PatsTypeNoLong = 23:PatsTypeNameString = "IDC_STC": 'Static 0x50000000 SS_LEFT
end if
case "ScrollBar"
IF (DispStyleUlong = SBS_HORZ) then
PatsTypeNoLong = 21:PatsTypeNameString = "IDC_SCB": 'HScroll 0x50000000 SBS_HORZ
ElseIF (DispStyleUlong = SBS_VERT) then
PatsTypeNoLong = 21:PatsTypeNameString = "IDC_SCB": 'VScroll 0x50000001 SBS_VERT
end if
なんて感じだった。

778 :デフォルトの名無しさん:2016/10/05(水) 22:48:57.24 ID:YonHd30p
IDC_STC1, Static
IDC_GRP1. GroupBox
をいくらクリックしても、
Function WndProc() 内 Case WM_COMMAND 以降の処理が実行されない。
V.B. (6.0)と異なる。事象が発生しない模様。
別の事情が発生しているのかもしれないが、そこまで調べる元気はない。

未使用だけど、形状をそろえるためにいくつか、使われない部品を並べる場合がある。
ほぼ同じ形に統一しておかないと、使用者が間違う場合が多い。たとえば
http://www.gen-info.osaka-u.ac.jp/MEPHAS/ave.html
のような場合、
データの名称(通常ファイルに保管されているのでファイル名)を2つ選んで
危険率を設定して
計算を指示する。
前提条件を調べておいて、「この計算は実行できません」と表示する、あるいは、「計算が終わりました」と表示する
場合に、入力値が替わったらば、メッセージを消さなければならない。
メッセージボックスをクリックすれば、そのメッセージが消えるようにしてあるのが、作ったソフト。
これを再現しようとして、色々やったらば、メッセージボックス(Static)などをいくらクリックしても、事情が発生しないという仕様が見つかった。

スタイル指定をいじれば、事象が発生するようになるかもしれないが、今のところはいじるだけの気力なし。

779 :デフォルトの名無しさん:2016/10/06(木) 17:37:44.97 ID:PqICm/6L
考えてみると
オープンソースやGPL系なら2chよりオープン2chなんかの方が向いてるかも
あんまり人が居ないのが難点だけど
書き込むときの注意書きに著作権を2ch運営に譲渡する
みたいな事が書いてあるから譲渡した以上著作権を主張したり出来ないんじゃないのかそもそも?
著作権周りは解釈なんかが難しいからなんともだけど

780 :デフォルトの名無しさん:2016/10/06(木) 18:03:50.35 ID:q4lKcQWv
>>779
レスに書いたコードに関して言えば、誰も著作権なんて主張しないと思うよ
ただ、転載するにしても、その解説まで要求して
それを転載する気満々な相手に良い印象を持てないよ
普通、引用するなら最低限リンク貼るし、転載なら先に断りを入れるしさ

更に2chと関係ない別鯖にうpられたコードまで無断転載するのだから
嫌でも著作権に触れないと分かってもらえないよ
指摘しても全く無視されるけどね

今後、ここで継続するか、別にコミュニティを作るか
このスレの数少ないユーザで話し合っていきたいと思うね
個人的には別に移した方が良いかなって思ってるよ

781 :デフォルトの名無しさん:2016/10/06(木) 21:25:43.75 ID:vBIV5nd8
>>779
著作物か、単なる文字の羅列か、という問題がある。
誰がやっても同じ結果しか得られないもの、については著作物と認められない。

MSのAPI関係などは、だれが書いても同じ内容にしかならないので、著作物としては成立しない。
ただし、編集者が取捨選択(なんたら100選等)すると、選択した行為に限って著作権が成立する。

怖いのが、民法1条の規定と民法のこうじょりょうぞくの規定。
たとえば、3文字の語に著作権が存在するとする。簡略化してかな50文字中3文字を使う語は、50*50*50 語しか存在しない。
日本国内、1学年100万人の60歳まで生きて+50年間として100年間3文字の語を1名の人物が独占することになる。
そうなると、使える言葉がなくなってしまうから、著作権が成立すると日常生活に影響してしまう。
だから、認めるわけにはいかない。このよりどころとして、民法9?の公序良俗にもってゆくか、民法1条の権利の乱用にもってゆくか、の解釈がある。
細かいことは覚えていないから、正確な内容についてはそっちで調べてくれ。

同様に、報道と著作の問題、規約と著作の問題がある。

782 :デフォルトの名無しさん:2016/10/07(金) 20:39:25.61 ID:WZgq/8MK
>>777 の続き。
PatsTypeNoLong = 23:PatsTypeNameString = "IDC_STC":
のように、PatsTypeNoLong とPatsTypeNameStringとの変換ルーチンを作成した。
>>776-777のルーチンの正当性をチェックするためのルーチンで、
>>777 の出力値の片方からもう一つの値がえられるか 、を行うことで記載の間違いの有無を調べる方法である。
こんな場合、特に難しいことを考えずに
select case PatsTypeNoLong
case IS <=0
PatsTypeNameString ="": 'エラー
Case 1
(中略)
End select
とやっていけば、比較的簡単に作成できる。
Public Function rcPatsTypeConvert(ActionType As Integer, PatsTypeString as String, PatsTypeNoLong as Long) As Long
とActionType で、 PatsTypeString → PatsTypeNoLong、PatsTypeString ← PatsTypeNoLongの2つの Select Case 文で作成したまでは良かった。
なぜか、戻り値が0しか返ってこない。それぞれ100行、合計200行ぐらいの巨大なSelect Case 文が存在すると、戻り値の引数が化けるという現象が発生した。
そこで、
Type PearValSSIII
ActionType as Integer
AA as String
BB as String
IAA as Long
IBB as Long
IError as Long
end type
というユーザー定義名を用意して、
Public Function rcPatsTypeConvert(ActionType As Integer, PatsTypeString as String, PatsTypeNoLong as Long) As PearValSSIII
と、戻り値をユーザー定義名にしたら、
rcPatsTypeConvert.(なんとか) = (なんたら)
が全部エラーになったしまった。

783 :デフォルトの名無しさん:2016/10/07(金) 20:41:26.04 ID:WZgq/8MK
そんなわけで、局所変数を引数にするのはあきらめて、
Dim Shared CmO1 as PearValSSIII
という大域変数を用意して、大域変数に結果を保存、という手法に変わった。
Function, Type
http://makoto-watanabe.main.jp/freebasic/PgFunction.html 
http://makoto-watanabe.main.jp/freebasic/PgType.html

まあ、なんとか、部品関係の *.rc ファイルを読み取ることはできたけど、
*.rc ファイルの構造がわからない部分は結構ある。BEGIN-END の間だけ読み取っているに過ぎないから。

784 :デフォルトの名無しさん:2016/10/08(土) 11:11:57.43 ID:TrfpRvxJ
>>782 の続き。構造体(ユーザー定義変数)について。
引数に使った構造体を初期化しようとして、
Dim Shared BBB As TakaPearValSSL

Function AAA(AA As TakaPearValSSL) As Long

'Dim AA As TakaPearValSSL = BBB
'DimCk10.bas(18) error 4: Duplicated definition, AA in 'Dim AA As TakaPearValSSL = BBB'

AAA = 0
'Dim AA As TakaPearValSSL
'DimCk10.bas(17) error 4: Duplicated definition, AA in 'Dim AA As TakaPearValSSL'

'ReDim AA As TakaPearValSSL
'DimCk10.bas(20) error 62: Expected array, AA in 'ReDim AA As TakaPearValSSL'

'Dim AA As TakaPearValSSL = BBB
'DimCk10.bas(18) error 4: Duplicated definition, AA in 'Dim AA As TakaPearValSSL = BBB'

AA = BBB
End Function
なんてやったけど、Dim も ReDim もコンパイルが通らない。
LET文「AA = BBB 」が通ったので、使いもしない変数を用意しておいて、コピーするという手法を使うことになる。

QB の頃は、
Type で宣言したモジュール(ファイル)以外のモジュールでは引数に使えない
という制限があったはず。
Fotranの名前付き共通領域そのものの使い方しかできなかった。
だから、大域での使用が前提になってしまう。

785 :デフォルトの名無しさん:2016/10/08(土) 14:39:52.41 ID:cRcu85q4
>>745
この人は、ライセンスを変更しているのだから、
そもそも双方の契約が成立する以前に、使っているから著作権法違反

食い逃げ、タクシーの無銭乗車と同じ。
有罪になるから、刑事告訴したら?

786 :デフォルトの名無しさん:2016/10/08(土) 14:54:10.83 ID:cRcu85q4
そもそも、OSSライセンスは、Public Domain, GPL, MIT が常識。
お金を稼ぐものじゃない

CC は、商用では有料だから、金が欲しい人がやるライセンスだから、目的が全然違う。
金目当てで、一部無料で使えるだけ

OSSと一緒にしてはいけないし、このライセンスの人とは協力しちゃいけない。
最初から、目的が違う人々

787 :デフォルトの名無しさん:2016/10/08(土) 21:38:24.68 ID:TrfpRvxJ
>>782 比較的単純なルーチンでも発生。
Private Function GetIDInfo(nIDButton as Long, IselectPartsNo As Long, PatsTypeString as String, PatsTypeNoLong as Long ) as Long
Dim as Long IAA

IselectPartsNo = 0
IF (CommonEriaIniFig = 2) then
For IAA = 1 To PartsTSU
If (PartsID(IAA) = nIDButton) Then
IselectPartsNo = IAA
PatsTypeString = PatysTypeString(IAA)
PatsTypeNoLong = PatysTypeNoLong(IAA)
'Exit For
end if
Next IAA
else
'Fun taka06SW_CommonEriaIni() 未実行に付この処理ができない
EndIf
MessageBox(TakaHWND, "Hello "+Str$(nIDButton)+", "+Str$(IselectPartsNo)+", "+Str$(PatsTypeString)+", "+Str$(PatsTypeNoLong), "Messagebox caption", MB_ICONINFORMATION)

GetIDInfo = IselectPartsNo
End function


IAA = GetIDInfo(AA.nIDButton, AA.IselectPartsNo, AA.ChkTypeString, AA.ChkTypeNoLong): 'AA.nIDButton → AA.IselectPartsNo, AA.ChkTypeString, AA.ChkTypeNoLong を定義
MessageBox(TakaHWND, "Hello "+Str$(AA.nIDButton)+", "+Str$(AA.IselectPartsNo)+", "+Str$(AA.ChkTypeString)+", "+Str$(AA.ChkTypeNoLong), "Messagebox caption", MB_ICONINFORMATION)
1回目の参照では AA.IselectPartsNo, AA.ChkTypeNoLongの2つとも正しい値を返すが、
2回目以降は、いずれも0を返す。
どこか変数の食いつぶしをしている。、

788 :デフォルトの名無しさん:2016/10/08(土) 22:27:24.66 ID:cRcu85q4
CC は、商用では有料だから、金が欲しい人がやるライセンスだから、
Microsoft, mp3, Unity などと同じ。
基本は有料で、制限付きで、無料の人が少しいるっていうだけ。
Public Domain, GPL, MIT などの無料のOSSと、一緒に扱ってはならない

ましてや、GFDLのような独自ライセンスを、わざわざ作る著作者は、
絶対に他のライセンスとは相いれないし、権利も放棄しない。
独自ライセンスとは、そういう表明だから

ましてや、CCとは絶対に相いれないから、訴えられるはず。
CCは有料の割引サービスみたいなものだから、OSSの著作権者で、CCを好きな人は、まずいない

これだけ警告されても、やめないのなら刑事告訴すればいい。
さらに海外でも刑事告訴されると、ロス疑惑の三浦氏のように、
入国した途端に逮捕されるから、一生海外へ行けない。
一生、時効にもならない

漏れは、宅建・行政書士など法律資格を持っているけど、
こいつは著作権法を何も勉強せずに、
他人の権利を勝手に使っている悪人だから、刑務所に入れるべき

789 :デフォルトの名無しさん:2016/10/09(日) 14:43:10.03 ID:jP/U8Kom
IF 文の比較演算子の解釈に注意。
IF (DispStyleUlong = SS_CENTERIMAGE OR SS_ICON) then
と書いたらば、
DispStyleUlong = SS_CENTERIMAGE
の場合と
SS_ICON
の場合が、Then 以降実行された。つまり、
(DispStyleUlong = SS_CENTERIMAGE) OR (SS_ICON)
と解釈された。こっちが考えていた、
SS_CENTERIMAGE と SS_ICONとの論理和の結果がDispStyleUlongと等しい場合
には、
IF (DispStyleUlong = (SS_CENTERIMAGE OR SS_ICON)) then
のように、()をつけて先に演算させる必要がある。
比較演算子と論理演算子の解釈の順番が違っていたみたい。
なお、SS_ICON と SS_がついているとおり、システム定数(型は不明)で、論理型の変数ではないから。

790 :デフォルトの名無しさん:2016/10/09(日) 16:45:54.64 ID:ECXHthzl
>>789
そういった基本的なことはマニュアルに書いてあるよ
Operator Precedence(演算子の優先順位)の項目ね
まあ普通は優先順位を考えなくても可読性上げるために括弧使うけども

整数型を条件式にするif文は、0かそれ以外かで判定してくれるけれども
個人的には条件式の意味を汲み取り易いように同値比較にするな
つまりif文には必ずboolean型が渡されるようにしている

dim as integer value
if value then
...
endif
じゃなく
if value <> 0 then
...
endif
ってするわ

v1.04以前はboolean型がなかったから前者のような条件式は有りだけど
将来的に仕様変更でboolean型のみになる可能性もあるから後者にしてる

791 :デフォルトの名無しさん:2016/10/09(日) 16:55:44.76 ID:ECXHthzl
>>790
補足
今のところ関係演算子や論理演算子はinteger型(0か-1)を返し
boolean型の同値比較のみboolean型を返す仕様

まあ、互換性を考えたらこのままの仕様かもね

792 :デフォルトの名無しさん:2016/10/09(日) 18:25:53.63 ID:jP/U8Kom
Select case 文で、End Select を忘れると、訳の分からないエラーメッセージの羅列が発生する。
Disp06.bas(147) error 35: Expected 'END SELECT', found 'end' in 'end function'
Disp06.bas(149) error 60: Illegal inside functions, found 'Function' in 'Function WndProc(ByVal hWin As HWND,ByVal uMsg As UINT,ByVal wParam As WPARAM,ByVal lParam As LPARAM) As Integer'
Disp06.bas(270) error 60: Illegal inside functions, found 'Function' in 'Function WinMain(ByVal hInst As HINSTANCE,ByVal hPrevInst As HINSTANCE,ByVal CmdLine As ZString ptr,ByVal CmdShow As Integer) As Integer'
Disp06.bas(305) error 41: Variable not declared, WinMain in 'WinMain(hInstance,NULL,CommandLine,SW_SHOWDEFAULT)'
Disp06.bas(309) error 35: Expected 'END SELECT' in 'End'

793 :デフォルトの名無しさん:2016/10/09(日) 18:54:04.23 ID:jP/U8Kom
>>790-791 処理系の違いってけっこうあるんだね。
http://makoto-watanabe.main.jp/freebasic/OpPrecedence.html
の「最も高い優先順位」の表をみると、上から、算術演算子、比較演算子、論理演算子、の順番になっている。細かいことを覚えないで、群で覚えていた。

数値型変数と数値型定数の演算だから、「OR」を算術演算子と解釈したのが混乱の原因だった。
「OR」を論理演算子、As BOOLEAN 型変数同士の演算の場合、と、As ULong 型変数(数値型変数)の演算の場合で区別してくれると、勘違いしていた。

MS-DOS のバージョンの変遷だったか、何かのライブラリーの変遷だったか、覚えていないが
障害発生時の分岐を JC でやるか、JNZ でやるか、の処理で問題になった時がある。
製造元では、OR AX,AX JNZ で処理していてので、問題なかったんだが、ユーザーの方で JC でやっていた(1マシンサイクル早い)人がいたので問題になった。
バージョンアップで NC(キャリーフラグに0が定義されている状態)でも正常終了するようにかわったのが直接の原因。

794 :デフォルトの名無しさん:2016/10/09(日) 19:30:32.08 ID:ECXHthzl
>数値型変数と数値型定数の演算だから、「OR」を算術演算子と解釈したのが混乱の原因だった。
流石にその解釈は…

andやorは左右オペランドが整数型ならビット演算子として動作し
boolean型(0か-1の符号付き整数型も)なら論理演算子として動作するのよ
C/C++系だと、前者が&や|、後者が&&や||ね
0か-1の符号付き整数型は、内部表現が&h00000000か&hFFFFFFFFだから論理演算可能なのよ

If文は「0かそれ以外か」の判断をするから前者も後者も条件式として渡せてしまう
でもやっぱり論理演算が条件式となるべきなんだよね
boolean型や0か-1のみ表現する符号付き整数型の何方かね

795 :デフォルトの名無しさん:2016/10/09(日) 21:35:11.73 ID:jP/U8Kom
>>794
>らビット演算子として動作し
型宣言を覚えていないけど、ビット型変数、バイト型変数、ワイド(2バイト)型変数、ダブルワイド(4バイト)型変数があって、
これらの変数に限って、論理演算子(AND, OR, NOT, XOR, XNOR)が使えた。
比較演算子 (.lt., .LE., .EQ., .NE., .GT., .GE.)の結果は、2バイトの領域をもつワイド型変数として、-1,0,+1 のいずれがの値となる。
IF (数値変数) Goto (ラベル1), (ラベル2), (ラベル3)
(算術IF文)でJmp (Goto)先が決まった。

という頃の名残。Fotran 6の資産が結構生き残っていた。
論理演算の値は常に正数になるので、負数桁を読み捨てて、0か1になる。
型を無視した処理をやらない限りは負数にならない。
0000かFFFFかという演算ではなくて、00(中略)00か00(中略)01かの1バイトしか見ない。

という頃の話。
>前者が&や|、後者が&&や||ね
この演算子は知りません。
C/C++ は持っているけど、自分で描けなかった。

>ビット演算子
これは、論理演算子と同じく AND, OR, NOR, XOR, XNOR があるのだが、
対象がビット型変数、1ワードの最下位1ビットのみを使った変数、に使う演算子で、
2進法の1桁のみの場合。
論理演算子(1ワード16ビット全体)とほぼ同じ名称なんだけど、1文字余計な語(忘却)が付く。
1回も使ったことがない。
「整数型」「8進型」(型を無視するスイッチを指定すれば実数型も使用可能、実数型の指数部を切り離して不定長実数にするという手法もあった)の場合には、論理演算子
「ビット型」の場合には、ビット演算子(2進演算子)
C言語と使っていたFotranの方言(Jis 規格外演算)の用語の違いと思います。

796 :デフォルトの名無しさん:2016/10/10(月) 00:09:02.18 ID:QrjgKXiS
自分が言いたかったのは
ここに書き込むときに表示される内容に
著作権を譲渡する
と書いてあるのとトップページ?に書いてある転載する時には許可が必要?
みたいな内容からここでなんらかの関数等が作られた時に
それが自由に使えなくなってしまうのではないだろうか?
という心配からオープンの方が向いているのではないか?
と思った
という方向性の話だったんです
上のやりとりを見ていてオープン2chを思い出して行ってみたらまだ有ったし
パブリックドメインと書いてあったから
あっちの方がいいんじゃないかな
という事だったのです

GFDLについてどうとか出てるけど
利用に関しては自由に使うという精神に反していると私は感じは無いので特段問題無いと思ってる
法的に完全に黒だみたいな話をしたところで
結局は裁定次第だから出ないと解らない
向こうの人達が訴えるほど侵害されていると判断するかしないかが重要
裁定を要求するほど酷いと向こうが感じて訴求してくるかが一番重要だと自分は思っている
私は裁定の内容に関わらず向こうが駄目だと言うならそれに従うべき
という感じですね

797 :デフォルトの名無しさん:2016/10/10(月) 00:48:42.37 ID:6bVjh2uR
GFDLとか、こういう独自ライセンスを作る人は、他のライセンスの使用は、絶対に認めない。
CCなどにライセンスを改変されるのが絶対に嫌だから、わざわざ独自ライセンスを作っている。
他のライセンスへの改変は、最初から認めていない

ライセンスの改変など、著作権法違反で、年間千人とかが有罪だろ。
刑事告訴すればいい。
何年間もの、ものすごい他人の努力を盗む連中は、刑務所へ入れるべき

そもそも著作権を盗まれるのが嫌だから、独自ライセンスにしているのに、
勝手にライセンスを改変する奴が悪い

798 :渡辺真:2016/10/10(月) 10:24:48.00 ID:Zb+8gsTV
GFDL とは

0. PREAMBLE (前文) から抜粋

This License(GFDL) is a kind of "copyleft".
GFDL ライセンスは、「著作物を自由に複製・改変できるようにする思想」の一つです。

The purpose of this License(GFDL) is to assure everyone the effective freedom to copy and redistribute it, with or without modifying it.
GFDL ライセンスの目的は、対象文書を改変するしないを問わず、誰でも自由に、対象文書をコピーして、再配布できるようにすることです。

Secondarily, this License(GFDL) preserves for the author and publisher a way to get credit for their work, while not being considered responsible for modifications made by others.
さらに、GFDL ライセンスは、著作者や出版社が、その著作物に対して名誉・称賛を得る手段を提供します。
また、自分自身が著作した部分以外の、他人が行った改変に対して、責任を負わずに済むようにします。

799 :渡辺真:2016/10/10(月) 10:25:49.78 ID:Zb+8gsTV
GFDL は、上記の目的を達成するために、以下の条文を設けています。
ここが「Public Domain(著作権消滅)」と異なる点です。

4. MODIFICATIONS (8. TRANSLATION)
改変/翻訳

・ E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices.
改変/翻訳者は、改変/翻訳に対する適当な著作権表示を、他の著作権表示の近くに追加しなければなりません。

800 :デフォルトの名無しさん:2016/10/10(月) 12:51:39.56 ID:kOR6lwYv
RadioBottan、オプションボタン関係。
C:\tool\FreeBASIC\inc\win\winuser.bi
const BS_RADIOBUTTON = &h00000004
const BS_AUTORADIOBUTTON = &h00000009 'ラジオボタン
const DLGC_RADIOBUTTON = &h0040
const DFCS_BUTTONRADIOIMAGE = &h0001
const DFCS_BUTTONRADIOMASK = &h0002
const DFCS_BUTTONRADIO = &h0004
declare function CheckRadioButton(byval hDlg as HWND, byval nIDFirstButton as long, byval nIDLastButton as long, byval nIDCheckButton as long) as WINBOOL
declare function IsDlgButtonChecked(byval hDlg as HWND, byval nIDButton as long) as UINT
const MFT_RADIOCHECK = &h00000200
declare function CheckMenuRadioItem(byval hmenu as HMENU, byval first as UINT, byval last as UINT, byval check as UINT, byval flags as UINT) as WINBOOL: '表示枠上部メニュー関係
が見つかった範囲。 FbEdit の *.rcファイル編集画面で、特異的内容は、
Auto, Groupの2つ。
前者は、クリックしたときの作画処理みたい。後者(Group)がややこしかった。
(Group) にFalse を指定しておくと、存在するすべてのRadioBottanが一群として処理されてしまう。
排他時に、他の選択マークを消してくれるという便利な機能もあるけれども。

芋づる式仕様対応、混乱と混沌を司る吾輩としては、「ちょっと違ったソフト」を作る必要があるときに、
既存のソフトに追記して作成する。もちろん、既存の内容はそっくり残しておく。
つまり、ちょっとだけ異なるサブルーチンがわんさかある、ソースリストが出来上がる。
一番手間が食うのが、人-機械インターフェース、つまり、手作業の分野なので、手作業対応のルーチンの共用が前提。

RadioBottanが1セットしか使えないというのは、致命的な問題となる。
declare function CheckRadioButton() を見ると、連続したID番号をふって、一連の群(Group)として取り扱うらしい。
というわけで、現在 *.Rc ファイルから、関係情報を読みだして、一覧表を作り、ついでに参照るーちんも作ってくれるルーチンを作成中。

801 :デフォルトの名無しさん:2016/10/10(月) 15:04:56.18 ID:kOR6lwYv
>>800 つづき
MSReturnCode = CheckRadioButton(TakaHWND, IDC_RBN6, IDC_RBN7, IDC_RBN7)
で成功した。自動作成ルーチンの方。
枠(IDC_GRP?) に囲まれた座標内に、左上点(lef, Top)が存在するかの判断で、
どの枠に属するか、を規定し、先頭と末尾のID(IDC_RBN6, IDC_RBN7)を決定することになる。
連番でないと、なんかおかしなことが起こりそうなので、連番チェックどうしようかな、というところ。
表示メッセージも決めなければならないし。

802 :デフォルトの名無しさん:2016/10/10(月) 22:21:29.35 ID:6bVjh2uR
>>798-799
GFDLは、copyleft だろ。
GFDLから派生した著作物も、絶対にGFDLにしなければならない

CCなど他のライセンスへの改変は、絶対に出来ない。
元がGFDLのものは、再帰的に継承していっても、必ずGFDLにしなければならない

絶対に、Public Domainにはしない、ライセンスを放棄しないって書いてあるだろ

だから、何回も言ってるだろ。
わざわざ独自ライセンスを作る人は、絶対に著作権を放棄しないし、
他のライセンスにも変更できない

ましてや有料のCCには変更できない。
著作権に最も厳しい人達だから、これ以上警告を無視して、
ライセンス改変を続けるのなら、刑務所行き

勝手に人の著作物を使うな。
わざわざ独自ライセンスを作っている人の、ライセンスを変えるな。
日本国内と同時に、国外でも刑事告訴されるぞ

803 :デフォルトの名無しさん:2016/10/12(水) 22:06:46.06 ID:8gvBjqIy
ちょっと大きい *.rc ファイル(5.3KB)、部品数55の処理ルーチンを作っていて
まだ、細かいところまで特定していないが、
局所配列 
Dim As String PartsNameString1(), PartsNameString2(), PartsNameString3()
を参照中にハングするという現象が発生した。
枠("IDC_GRP" GroupBox)番号4、
枠内部品、文字表示("IDC_STC" Static)5, テキスト入力5、コマンドボタン5。
単に、配列の範囲を超えて参照しているためか、領域の食いつぶしがあったのかは、不明。

804 :デフォルトの名無しさん:2016/10/12(水) 22:10:04.25 ID:8gvBjqIy
>>802
>>781 で書いたけど
怖いのが、民法1条の規定と民法のこうじょりょうぞくの規定。
なぜ怖いかわかるか。
行政法をやっている人間だと、
この規定で、却下される場合が多いので、注意が必要
と学んでいるはず。

805 :デフォルトの名無しさん:2016/10/13(木) 21:24:53.66 ID:7rM2EKzx
>>803 つづき。
変数を大域に置こうとして、*.RCファイル読み取り関係を別ファフイルに移動。
障害がなくなってしまった。要は領域の食いつぶしであった。
スタック領域が少なくて、自己書き換えを行っている模様。
QB ではスタック領域サイズの動的変更が可能だったはずだが、静的変更しか見つからない。
1つのスタックで全変数を処理しているとなること、Windows の意義がなくなってしまう。
ファイル(モジュール)別にスタックが用意されている模様なので、大きな変数を取り扱う場合には要注意。
http://makoto-watanabe.main.jp/freebasic/CompilerOptt.html

806 :デフォルトの名無しさん:2016/10/13(木) 22:02:03.31 ID:7rM2EKzx
>>805 つづき。
8080系では、処理の速さからスタック領域に変数を置く傾向がある。
ところが、スタックによるメモリー破壊を検出する、メモリー保護の例外、という事象が発生しない。
メモリー保護用レジスタがないし、関係命令もない。
スーパーバイザー以外のタスクが使用するメモリーをスーパーバイザーが決定するのが、マルチタスク処理の基本ではあるが、
8080系は、シングルタスク用CPUなので、関係命令がない。
結果として、やたら処理中に原因不明の障害を発生しやすくなる。

http://makoto-watanabe.main.jp/freebasic/CompilerOptt.html
には、スタックの初期値(無指定時の容量)が記載されていない。MA-DOSの処理では、
サブルーチンコールに、全レジスタの3-5倍ぐらい(8086 で16レジスタ位、32バイトの20倍512バイトをシステム割り込み(INT 21他)用に確保するように記載があったと記憶している。
FCだったかな、80480以後の旧隠し命令、全レジスタのPOPをサブルーチンコールとしてユーザーが使用するようになったのは。
非公開レジスタを含めてPOPするので、かなり巨大なスタック領域を確保する必要がある。
(細かいことはhttp://ken-crate.blue.coocan.jp/asm/asm_menu.htm のようなサイトを探してくれ)

使う変数の目安としては、入力変数+出力変数の合計を作業変数と近似して
>>803 だと、
入力ファイル 50KB(内1KBを読み取る), 出力ファイル100KB(内4KBか可変、残りは表題などの定数)、出力変数2kbより、作業変数7KB、合計14KBを用意して
ここに、FreeBasic 内ルーチンの参照分(これが不明)を足す。
スタックの消費量の管理については、在庫管理が参考になる。
http://www2.rku.ac.jp/takada/logist/plan_zaiko.html
在庫が不足すれば、ハングアップという結果が待っているわけで、
目安としては、全容積の50%位を消費するようにして、66%を超えないように管理する。

理論としてはわかっているが、実際のスタックの状況をユーザーレベル(タスク)で検出できないと、対応も取れない。

807 :デフォルトの名無しさん:2016/10/13(木) 23:42:39.44 ID:vEZbybAc
>>805>>806
内容は詳しく知らないけど、スタック領域って関数呼び出しに使用されるよね
関数の引数や関数内のローカル変数が割り当てられて
デカイ領域のローカル配列や関数の再帰呼び出しがオーバーフローの原因になる
配列なら動的にヒープ領域確保するか静的領域を使えば良いし
再帰呼び出しもループ処理で代替できる

スタックオーバーフローなんて普通のコーディングで起こり得ないと思うけど?
それ設計ミスなんじゃないの

808 :デフォルトの名無しさん:2016/10/14(金) 00:22:17.64 ID:ZL7xZTNZ
>>807 >普通のコーディングで起こり得ないと
普通に使うと頻発する。
というのは、配列の大きさを処理群の最大値で決定している。
まず、入力値(60-100個)を(5-10)群に群分けして、割り振る。
ここで、最大数20の群があると、配列が (10群 , 20個)の領域を確保する。
しかし、前後最低1個は、未使用の領域を確保しておく。Dim AA(10)として、未使用領域 AA(0), AA(10)を用意する。
これは、設計があいまいな日曜プログラマーな場合に、バグが頻発する AA(0), AA(10)の使用を避けることで、バグ取りを回避する。
入れる文字を20文字として、32バイト(位置アドレス2つ、8バイト等を12バイトと想定, QBでは、配列全体に10バイト位、個々の配列構成変数に10バイト位使っていたので同じとした、16→32ビットの変化で2倍になっているかもしれない)。
10 * 20 * 32 = 6.4KB が1配列。
5配列もあれば、32KB使ってしまうので、(QBと同じく64KBスタックを使っていれば)簡単にパンクする。
Dim AA(10,20)
AA = Fun1(AA())
Fun1 内に
AA = Fun2(AA())
とあれば、配列が2個使っていることになる(QBと同じだとすると、引数をPush する)から。
FreeBasic だと、障害発生ちょっと前までしか出力ファイルに残っていないのだが、
QB だと、引数1個で、100だか300回位の再起呼び出しでハングした。
再起呼び出しの回数を2-3回に制限して、
巨大な配列は、共通領域なり、外部配列なりに保管して、引数によるスタックを圧迫を抑え
つかっていた。V.B.だと、このあたりを気にしないで済むので、気軽に巨大配列の引数を使っていた。
そのつもりで使ったらば、おかしなことになってしまった。

>ここで、最大数20の群があると、配列が (10群 , 20個)の領域を確保する。
と書いたけど、V.b.時代だと、偏りも考えられるので、(100, 100)の配列を作って使う。
前に、スタック不足と思られる障害が出ていたので、数を数えてから、配列を作るという作業に直してはある。

809 :デフォルトの名無しさん:2016/10/14(金) 00:23:16.25 ID:ZL7xZTNZ
>>808 のつづき。
ただ、定数、
IF (AAstring = "寿限無寿限無 なんたらこうたら ") Then
という使い方があった場合に、QBでは、*.OBJファイル別にこの手の文字が並んでいた。
これが、スタック領域に作られる(*.EXEが圧縮状態でスタック領域に解凍する)としたら、結構大きな領域になってしまう。

それと気になったのが
Print #FileNoiLong, "なんたら"
(以後同様に100-200行ぐらい、合計80-90KB)
で出力した内容が途切れるという現象。
ファイル出力内容をスタックに貯めておいて、ある一定量になるまで保管して、まとめて出力する
という処理が行われテいる。
ファイル出力時に出力済みスタックの内容が破棄されて、スタックの移動が行われていれば問題はないのだが
使用済み領域であるマークだけして、スタックをのそのまま残している場合には、
ファイル出力そのものがスタックを食いつぶすことになる。

810 :デフォルトの名無しさん:2016/10/14(金) 00:53:09.58 ID:B5drn/wa
>>808
んー?
関数の引数の配列って絶えず参照渡しだから
配列全てがスタックに乗らないと思うんだけど?

>入れる文字列を20文字として
これの型は?string型?
もしそうなら、string型はポインタ、文字列の長さ、キャパシティの各4バイトの合計12バイトの
記述子分しか保持していおらず、文字列自体はヒープ領域(allocateして)に確保している
だからスタックに乗るのは記述子分だと思うんだけど

どうも見えてこないな
思うに1つの関数内でアレコレやりすぎなんじゃないの?

811 :デフォルトの名無しさん:2016/10/14(金) 01:36:56.54 ID:B5drn/wa
今試しに、integer型の配列10万個を関数に渡して
関数内部でinteger型のローカル配列10万個にコピーして
その合計を返す関数を書いたけど、オーバーフローにならなかったよ
流石に100万個の場合は警告出たけど

どのような最適化が行われているか分からんけど
GAS、GCCバックエンド共に問題なかった

812 :デフォルトの名無しさん:2016/10/14(金) 20:52:52.30 ID:c0NY+ezm
>>810-811 こんなところ。
'MessageBox(TakaHWND, "Hello (rcPatsTypeReadSub07) " + Str(IAA), "Messagebox caption", MB_ICONINFORMATION)
IAA = rcPatsTypeReadSub07(FileNoLong2, PartsNameSU, PartsTypeString(), PartsTypeNoLong(), GRPnoSULong, GRPNo(), GRPnoPartsSU(), PartsNameString(), PartsNoListLong())

Function rcPatsTypeReadSub07(FileNoLong2 As Long, PartsNameSU As Long, PartsTypeString() as String, PartsTypeNoLong() As Long, GRPnoSULong AS Long, GRPNo() As Long, GRPnoPartsSU() as Long, PartsNameString() as String, PartsNoListLong() as Long) As Long

'(2016.10.12 発見) ここのどこかでハングする
Dim As Long IAA, IBB, ICC, IDD, GRPnoLong
Dim As String Astring, PartsNameString0
Dim As Long TopPartsSU, BotPartsSU, Line1SU, Line2SU, Line3SU, LineTsu1, LineTsu2
Dim As String PartsNameString1(), PartsNameString2(), PartsNameString3()

rcPatsTypeReadSub07 = 0
Print #FileNoLong2, ""
Print #FileNoLong2, "Function DispGRPinsideMove02(IDnoLongGRA As Long, ActionType As Integer, SpaceType As Integer, WidthPoint As Long, HeightPoint As Long, FullWidth As Long, FullHeight As Long) As Long"
(中略)
MessageBox(TakaHWND, "Hello (rcPatsTypeReadSub07 - 6) "+Str$(GRPnoLong)+"-"+Str$(LineTsu1), "Messagebox caption", MB_ICONINFORMATION)

813 :デフォルトの名無しさん:2016/10/14(金) 20:54:01.32 ID:c0NY+ezm
>>812 のつづき。MessageBox()に挟まれた間の内容
' ここでハング GRPnoLong = 4: LineTsu1 = 14
Print #FileNoLong2, " PartWidth = (FullWidth \ 3) - WidthSpace: IF (PartWidth <= 0) then PartWidth = 0"
Print #FileNoLong2, " PartWidth1 = PartWidth: PartWidth2 = PartWidth: PartWidth3 = PartWidth"
Print #FileNoLong2, " WidthPoint1 = WidthPoint + WidthSpace"
Print #FileNoLong2, " WidthPoint2 = WidthPoint1 + WidthSpace + PartWidth1"
Print #FileNoLong2, " WidthPoint3 = WidthPoint2 + WidthSpace + PartWidth2"
MessageBox(TakaHWND, "Hello (rcPatsTypeReadSub07 - 7) "+Str$(GRPnoLong)+"-"+Str$(LineTsu1), "Messagebox caption", MB_ICONINFORMATION)

てなところ。プリント命令の途中でハングしている。

814 :デフォルトの名無しさん:2016/10/14(金) 20:56:20.03 ID:c0NY+ezm
現在は、参照側 >>812
Function rcPatsTypeReadSub07(FileNoLong2 As Long, PartsNameSU As Long, PartsTypeString() as String, PartsTypeNoLong() As Long, (後略)

PartsTypeNoLong()
の内容がすべて 0 になるという現象が発生している。

815 :sage:2016/10/14(金) 21:34:14.16 ID:COkETlXd
https://www.youtube.com/watch?v=NJYs5GTmdcg

https://www.youtube.com/watch?v=tY-xyCbzdqY

816 :デフォルトの名無しさん:2016/10/14(金) 22:31:50.42 ID:c0NY+ezm
>>808 の内容がわからなかったのかな。
別ファイル(モジュール)だから、主ルーチンは存在しない。存在するのはすべてサブルーチンであるから、
Function 適当なルーチン(ActionType As Long)で、ルーチンが定義される。
「適当なルーチン」内で使用する配列
大きさ = 100
Dim 配列1() as long, 配列2() as String
ReDim 配列1(大きさ, 大きさ) as long, 配列2(大きさ, 大きさ) as String
2次元配列を用意しすると、新規に取得したMCB(メモリーコントロールブロック)に作られる場合とスタックに作られる場合があるが
一律 MCB として
1.配列1の所在・大きさを示すアドレス等が変数管理領域に新規登録されて
2.MCBで領域を確保、大きさ, 大きさ、の2次元配列を(数値だから)確保して使用する。

ところが、文字列の場合だと、
2.MCBに領域を確保、大きさ、大きさの2次元配列で、文字の保管場所のアドレスを保管する領域を確保する。
3.文字の保管領域(多くの場合にはスタック)にヌル文字であることを示す内容を保管する。
これは、処理系で異なり、単に文字列+&h0000(又は&h00、前者は2バイト文字対応の場合、後者が1バイト文字の場合)が存在する固定アドレスを保存する場合と、追加して文字長さを保管する場合、あるいは、文字長さのみを保管する場合がある。

MCBに保管しない場合で、全部スタックに保管する場合がある。
Redim 宣言時にヌル文字をスタックに書き出して、新規に文字変数が定義されたときには、スタックに新規に文字を入れて、古い文字を消さないで残している場合には、スタックが急激に消費される。
For IIA = 1 to 10
Astring = Astring + "1"
Next IIA
Astring = ""
の場合には、スタック内文字が消されている場合が多いが
For IIA = 1 to 10
Astring = Astring + "1"
Bstring = Bstring + "1"
Next IIA
Astring = ""
の場合には、スタックが全部残っている可能性がある。
ヌル文字で始まったとしても、2文字+&h00の4文字だから、4+5+...+14 =??? 、???* 2 =???スタックを食いつぶすことになる。

817 :デフォルトの名無しさん:2016/10/14(金) 23:12:53.82 ID:c0NY+ezm
逆汗したときに
-------------------------
(システム予約)|__(Pgソース)__|___(変数領域)___|___(スタック領域)___|(システム予約)
とメモリーが使われていた。文字の最大文字数が255で文字長さ1の合計256が最大値で
配列を作ると、スタック領域を移動して、スタック領域の後ろに文字領域を確保していた。
ここがいっぱいになってくると、突然GAP(ガーベージコレクション) https://ja.wikipedia.org/wiki/%E3%82%AC%E3%83%99%E3%83%BC%E3%82%B8%E3%82%B3%E3%83%AC%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3
を始めだす。
処理速度が急激に遅くなる場合と、高速な場合とがあり、処理速度が一定していない場合には、ガーベージコレクションを行っていると考えられる。
常に高速な場合には、カーページコレクションをしていないので、スタックあふれや、メモリーリーク
https://ja.wikipedia.org/wiki/%E3%83%A1%E3%83%A2%E3%83%AA%E3%83%AA%E3%83%BC%E3%82%AF
の可能性が出てくる。
このあたりの処理は、ユーザーに開放されていない場合が多いので
怪しいなと思ったらば、メモリーダンプ、再起動して継続処理をするようなユーザーソフトを組む必要が出てくる。

Free-Basic でGAP命令があるのかな?。使う命令しか見ていないので、わからない。

818 :デフォルトの名無しさん:2016/10/15(土) 00:59:26.30 ID:+WAwTfPB
コードを載せてもらっておいて何だけど、何をしている関数なの?全く見えてこない
言っちゃ悪いが、その引数の多さ、関数内での変数宣言の多さから見て
処理の汎化→関数化が成されていないコードにしか見えんよ
何で構造体使わんの?何でもっと他者が読みやすいコード書かないの?
読み難いコード≒難しことをするコードじゃないからさ

それとFreeBASIC標準の動的配列(redim)は
string型と同じように記述子を持って内部でAllocateして配列の要素を別に持つのよ
でも記述子のサイズが次元が増えると結構な大きさになる
その要素数に関わらず、1次元配列で32バイト、2次元配列で44バイトを消費する
例え、redim array(0,0)でも44バイト消費する

前のiniファイルの処理コードを観た時も思ったけど
無駄な処理を入れ過ぎな上に複雑に考え過ぎだわ
FreeBASICでなく、古いBASICでも、もっとスマートに書けるよ
大口叩いて申し訳ないが、今時のコードを勉強するべきだわ

819 :デフォルトの名無しさん:2016/10/15(土) 09:46:17.60 ID:WbjwIM/1
>>818 わかるところだけ
>何で構造体使わんの?
 → バグ取りが終わっていない。構造体の使用はまとめに入ってから。下手に構造体を使うとバクの巣窟、無駄な領域の使用になるから。
構造体については、JIS で定義していないので、配列名の統一で対応することになる。

>関数内での変数宣言の多さ
Fotran やっている人ならば、10個ぐらい引数を使う処理は普通にやっていると思う。

>他者が読みやすいコード書かないの?  →  単純な処理の繰り返しにしているでしょう。

>観た時も思ったけど無駄な処理を入れ過ぎな 
 →  参照の前後で値が変わるという現象が見られたから、参照の前後で値が一致しているかを見るルーチンを追加している。これを残しておかないと、メモリー関係の障害の対応が取れなくなる。
ここに書き込んだ2件の障害は、メモリー関係だから、障害の特定ルーチンも関係してくる。

処理内容の複雑怪奇さは、V.B.の事象処理ルーチンの多さ
Private Sub Form_Resize()
Private Sub Label1_Click()
RedCtr1(0).Caption = "RdRegNs"
RedCtr1(0).ToolTipText = "Html ブラウザ関係情報"
RedCtr1(0).Visible = True
RedCtr1(0).Enabled = ABool
等を1つのルーチン(Function WndProc()) に押し込まなければならないわけで
移植対象となるルーチン(*.frm 数として500位)の多さから汎用性を優先することとなる。
まだ、単純作業でうんざりしたルーチンの書き換えルーチンしか描いてないから単純だけど、もう少し複雑/乱雑になる予定。

>もっとスマートに書けるよ
 → 「スマート」の意味が分からない。
https://kotobank.jp/word/%E3%82%B9%E3%83%9E%E3%83%BC%E3%83%88-84913#E3.83.87.E3.82.B8.E3.82.BF.E3.83.AB.E5.A4.A7.E8.BE.9E.E6.B3.89
外観を優先した形態のことかな?。
移植性を優先している(単純な*.frmの移植以外にも複雑な*.frmの移植が控えている)。

820 :デフォルトの名無しさん:2016/10/15(土) 09:47:26.55 ID:WbjwIM/1
>>819 つづき
>今時のコードを勉強するべきだわ
 → JIS-Basic の範囲になるべく収まるように描いている。
下手に変えると移植性が悪くなる(自分で発見できないバクが多発)ので、変える気はない。
例外処理を大量に入れているから、移植時の拡張(Asw = {0,1}で定義 → {0,1,2}で定義等)や
ここには記載してない処理の対応とか、ある。

821 :デフォルトの名無しさん:2016/10/15(土) 10:05:02.19 ID:WbjwIM/1
>>818 何をしている関数なの?全く見えてこない
>>819 にちょこっと書いたけど、*.rc ファイルの内容を読み取って、
"#define " の内容を PartsNameString()とPartsID(), {1,...,PartsNameSU}/PartsNameTSU に保存
"BEGIN" から "END"の内容を PartsTypeString(), PartsTypeNoLong(), PartsNameErrFigLong(), MSPartsTypeString(), PartsStyleString(), PartsPointLong() {}/PartsNameTSU に保存
特異な動作をする "IDC_GRP", "IDC_RBN" の内容を分類整理。
前者が、PartsGroupFigLong(), PartsGroupNoLong(), PartsNoListLong()
後者が、RadioMaxID(), RadioMinID(), RadioListID(), RadioMaxPartsNameString(), RadioMinPartsNameString()
以上の内容をもとに、Function WndProc() に押し込む処理のうち Sub Form_Resize() 処理に相当する内容のうち
簡単な部分(単純作業して別の*.frmからコピーして作成したルーチン部分)を切り出して、ソースファイルを作る処理。

今回ハングしたのが、「ソースファイルを作る処理」中。

822 :デフォルトの名無しさん:2016/10/15(土) 10:23:21.65 ID:WbjwIM/1
無駄なルーチンと一見思える処理の一つとして、正関数(?)と逆関数がある
関数とその逆関数を用意して、正関数を求めた時に同時に逆関数も求めるようにする。
両者に違いがあった時にいずれかの関数の間違いがあることがわかる。
処理が多少遅くなるかもしれないが、関数の間違いが簡単に見つかる。
定義域・値域の範囲はあらかじめしらべて、はねておく。
まだエラー処理ルーチンを作っていないので、入り口だけ用意してある。
"Case Elese"だけ用意してあるのが、この処理。
エラー処理ルーチンの名称が *.frm によって異なるので、汎用性を確保するうえでこれ以上はできない。

823 :デフォルトの名無しさん:2016/10/15(土) 10:43:17.27 ID:WbjwIM/1
無駄なルーチンと一見思える処理の一つとして、ループバック処理がある。
これは、参照値をそのまま返す処理を呼んでいるが、正規の名称があるかもしれない。
食いつぶし処理 (A$ = Left$(OA$,1): OA$ = Mid$(OA$, 2) 等)をしている場合には当然だけど
普通の処理でも行っている。先頭がOで始まる変数の場合がこれ。
変数の食いつぶしがあったり、変数の誤書き換えが発生するような分量(30行超過を目安にしている)の時とか、
に用意している。
ルーチンの最後で一致しているかをみれば、食いつぶし処理の発見が容易となる。
障害が発生しやすい場合、過去に変数の食いつぶしが発生した場合には、食いつぶしの検出として保存して置き、エラーメッセージ表示のための変数として使用する。

Fotranで外部配列(HDD内の特定名のファイル)に保存していたら、無駄な処理・何をしているのかわからない処理・狂気な処理・混沌な処理として悪名高かった。
バグの発見がかなり容易になるので、便利。メモリーダンプともいう人がいる。

824 :デフォルトの名無しさん:2016/10/15(土) 11:52:35.53 ID:WbjwIM/1
>>818
>その要素数に関わらず、1次元配列で32バイト、2次元配列で44バイトを消費する
ちょっと多いかな、と思ったんだけど
http://ken-crate.blue.coocan.jp/asm/486r.htm
セグメンドレジスタが16ビット、2バイト。
インデックスレジスタが32ビット、4バイト。
浮動小数点レジスタが80ビット、10バイト。
合計、16バイト。Push-Pop命令が、32ビット単位だった気がする。合計14バイト。
数値と文字の配列を区別しないで、文字の配列のアドレスに数値レジスタを保管する、に統一するならば、倍の28バイト使うので
32バイトは普通じゃないのか?。
2次場合には、1次元配列になおして(乗算ルーチンがあるので処理が遅くなる)保存するFotran 方式ではなく、2次元として保管しているのであれば、6バイト増加するのは不思議ではない。

825 :デフォルトの名無しさん:2016/10/15(土) 16:14:26.53 ID:+WAwTfPB
>>819
移植性に対する見解の違いだな
君はコードをコピペして他言語に持っていった際に修正箇所が少ない事を指しているな

自分は汎化された小さな部品の役割が簡潔明瞭であり
その機能を1つのみ保有する部品の集合体であれば移植性が高いって考えている
手続き型言語なら関数がその部品ね、つまり言語の形態なんて関係ないのよ
例えば、ある機械があったとして、その機械の部品であるボルトとナットがあったとしようか
どんな形態だろうが材質だろうが、役割は「他の部品を留める」って明確だから
前にも言ったけど、FreeBASICはQBASICと互換性があるBASICの形態をしたC言語だから
JIS-BASICの規格に沿わせるのはFreeBASIC言語機能の大部分を使わないってことと同義だよ

スマートに書けるって言ったのもその部分
他者が読みやすいコード書かないの?って言ったのもその部分

826 :デフォルトの名無しさん:2016/10/15(土) 16:30:08.92 ID:+WAwTfPB
>>824
いやあ、動的配列の記述子内容を調べたもの
1次元配列なら
ポインタ、最初の要素ポインタ、バイト単位の配列サイズ、型のサイズ、次元数
要素数、下限インデックス、上限インデックス
ってなっている
次元が増える毎に要素数、下限インデックス、上限インデックス分の記述子領域が増える

32ビットでコンパイルしたら、それらは全て4バイトだから
1次元配列で32バイト、2次元配列で44バイト、3次元配列で56バイト、以後12バイトずつ増加
64ビットでコンパイルしたら、ポインタが8バイト、各サイズがinteger型なら8バイトになって倍増するね
だから関数内で動的配列を宣言したら、配列の内容関係なしにそれらのバイト数がスタック領域に乗るね

ここではレジスタとか関係なくね?

827 :デフォルトの名無しさん:2016/10/15(土) 16:43:47.31 ID:+WAwTfPB
>>823
言いたいことは分かるけど
メモリダンプって想定したエラーがでた際のメモリ状態を吐けば良い話で
絶えずモニタリングする必要無いんじゃないの?
デバッグ作業なんてデバッガ使えば良いし
使わなくとも処々で変数確認用にprint挟めば良い話だと思うけど?

>処理の汎化→関数化が成されていないコードにしか見えんよ
って言ったのも、あのコードならバグを大量に含むと思ったし
それを見つけ出すのも面倒臭いだろうなって思ったから

828 :デフォルトの名無しさん:2016/10/15(土) 21:28:10.42 ID:WbjwIM/1
>>825
>に修正箇所が少ない事を指しているな
ご指摘の通りです。

>大部分を使わないってことと同義だよ
それで良いんじゃないの。
言語なんてものは、膨大な資産の継続の上に成り立っている。
C言語の資産はほとんど持っていない(雑誌別冊、C言語入門等の手入力部分位)から。
Basic の資産は、ライブラリーだけて、3-4MB。小さいソフトを除外して、ソースが1MBを超えるソフトは3本。
資源の関係で廃棄しなければならないソフト(例、ドットマトリックスプリンターの重ね書きで描くイラスト)や市販されなくなった市販ソフトの入出力ファイルの作成とか、は廃棄する予定。
DVD2-3枚に入っているはずだけど、自分で管理できなくなりつつある。
かなり捨てると思う。

>>826
>ここではレジスタとか関係なくね?
名称がさっぱりわからないけど、以前逆汗したBasic処理系の使っていたレジスタを80486に置き換えた。
使われている変数の名称を知らないから、れじ゜すたで説明した。

>>827
>のメモリ状態を吐けば良い話で
その前を追っかけておかないと、ルーチンのどの部分が゜実行中かわからなくなる。
>デバッガ使えば良いし
デバッカーの操作が覚えきれなくて、使うのをあきらめた。Gebug.exe(debug.com)で、逆汗しか使わなかった。
操作を間違えて、ディスクをいくつか壊していらい、やめた。

>あのコードならバグを大量に含むと思ったし
こちらは問題なし。
親コードの方で正常実行することを確認して、親コードの変更部分を変数に書き換えただけだから。
ただ、動作試験用親コードと書き換え予定のファイルとは異なるから、こっちの方は調べていない。
こっちのバクの発見は、手間がかかるだろう。

829 :デフォルトの名無しさん:2016/10/15(土) 21:41:46.73 ID:+WAwTfPB
>>828
>言語なんてものは、膨大な資産の継続の上に成り立っている。
>C言語の資産はほとんど持っていない(雑誌別冊、C言語入門等の手入力部分位)から。

ああ、やっぱりこういう考えを持っているんだな
言語毎の資産なんて関係ないよ
C言語で書かれた古いコードであっても、それは他の言語の資産でもあるよ
自分はよくC/C++で書かれたコードを元にFreeBASICで書いている
そのコードが表す処理の移植であって、コードの移植じゃない

830 :デフォルトの名無しさん:2016/10/15(土) 21:51:04.09 ID:+WAwTfPB
>>828
少なくとも、自分より君の方のが知識が豊富だし、経験も上だと思う
でも、失礼な言い方で申し訳ないが、レガシープログラマなんだよ
君の知識や経験が、古い思想や古い概念の接着剤でガチガチに固められちゃっている
失礼ながら、それを溶かして欲しいって思ったのよ

レガシープログラマを害悪として見る傾向がある
そういった人達の資産価値ってあると思ってんだよね
でも上記の通りだから全く生かされない
新しい言語(この場合FreeBASICね)を習得する気概があるなら
現在主流となっている思想や概念を取り入れるべきだと思ったのよ

正直な話、Staticおじさんみたいにはなってほしくないね

831 :デフォルトの名無しさん:2016/10/15(土) 23:02:42.20 ID:WbjwIM/1
>>829
>そのコードが表す処理の移植であって、コードの移植じゃない
処理系の癖が覚えたころによくやる。V.B.へのコピーは5年ぐらいたってから始めた。
まだ全部コピーしていないので、Fotranのソフトがかなり残っている。
同僚か誰かが動作試験して、それを信じて、コピーしたものがほとんど。
処理系が手元にないので、動かすことはないと思う。
自分で手計算してみて、理解できない、と思った部分には手を出さない。
手計算の表がないと、バグが見つけられないから。

>>830
>思想や概念を取り入れるべきだ
そりゃ当然だ。
流行の最先端を追いかけ続けたけど、用語の違いを排除すると、大体同じような処理になる。
ポインター、という言葉が使われるけど、相当する語は、アドレスで
構造体が、同じく、ブロック。ただし、形動として使うと全く別の意味になる。
インデックスが、順番号か、特定のレジスタ(インデックスレジスタ)。
処理系で意味が変わってくるので、処理系ごとに違いを覚えなければならない。
ある程度のソフトが描けるようにならないと、このあたりは手を出せない。
というのは、10年ぐらいで消えてしまう場合が多い。
単に覚えるだけならば3か月もあれば十分だけど、自由に描けるようになるには2-3年かかる。
ちょっとしたソフトを作るのに1年ぐらい、機械の償却を6年として、3年ぐらいだから、3つぐらいソフトを描けるだろう。
ここで、機械が変わって、覚えなおすのに3年ぐらい、そして自由に描けるようになる。
3年間遊べるかというと、遊べないから、覚えなおす時間がなく、古い手法を使ったまま結果を出す(ソフトを描く)必要が出てくる。
これが、ソフトウェア業界で、簡単な対応方法として、高齢者の首を切る。首を切る理由として、処理系の新しい概念の導入が使われている。

「新しい概念の導入」が、情報処理関係では、導入できない人の解雇の利用になっている。
機械が入れ替わるたびに、今までやっていた人が集団で解雇されてゆく。
解雇できるような大手企業だと良いんだが、中小零細だと、解雇したら人間がいなくなる。
30までに覚えられなければ、以後使えない。内容はわかるけど、描けなくなってしまう。

832 :デフォルトの名無しさん:2016/10/16(日) 11:38:39.67 ID:RSdG5rFg
>>831
>ポインター、という言葉が使われるけど、相当する語は、アドレスで
厳密には違う
ポインタはアドレスを格納してメモリ上の位置を指し示すもの

言語毎の思想や概念だけの話をしているのではなく、コーディングの話をしている
レガシープログラマはとかく古い習慣から抜け出せない
例えば、1つの関数に複数の機能を持たせたりする
その関数だけで数百行あったり、やたらと分岐が多かったり、無駄な処理を織り込んだりする
以前に書いた変数宣言と初期化の話も同じ
それらを論理的に指摘しても、自分の時代はこうだったから、それで良いのだって頑なになる

言語に関係なく、長い歴史の中でノウハウの取捨選択がされてきた
それらはデバッグし易く、移植性が高く、フローが追い易く、再利用され易く
改善されてきたノウハウなのであって、流行ではない

レガシープログラマが何故害悪なのか、今一度知ってほしいわ

君はStaticおじさんと非常に近い位置にいる
Staticおじさんをググる事をオススメするわ

833 :デフォルトの名無しさん:2016/10/16(日) 17:02:50.70 ID:9xwX5cNS
>>832
>アドレスを格納してメモリ上の位置を指し示すもの
「格納」の意味が分からない。「メモリ上の位置を指し示すもの」はアドレスだから。

>1つの関数に複数の機能を持たせたりする
拡張?、「関数」だからサブルーチンではないよね?。
For-Next 等で配列を使う場合に、配列へのアクセスに時間がかかるので、一つの入力配列から求める値が複数ある場合に、一つにまとめる。

ただし、大容量の2-3次キャッシュを持っているCPUなら、
配列が2次または3次キャッシュに入る程度の大きさの場合
かつ
For-Next が1次キャッシュ又は2次キャッシュに収まる大きさの場合
には、For-Next を分ける。
1980年代の頭の良いコンパイラなら、どっちにするかを判断してやってくれるので、ユーザーが考えることではない。

>その関数だけで数百行あったり、
関数を作成するような場合には、100-1000行行く。ライブラリーを見つけてほしいのだが、ニュートン法や最小二乗法を使うとそのくらい必要になる。

>やたらと分岐が多かったり、
「やたら」の意味がよくわからないのだが、
文字を数字のように取り扱う場合には、直接コートに書いた方が簡単なんだが
文字配列を作って配列との一致を検出する
という手法を使う場合がある。外部記憶装置を使って、読みだして、、、という処理にする。

>それらを論理的に指摘しても、
論理に欠落がある場合が多い。
わたしの周辺の人物に限られる範囲では、一面的な見方しかできない人が良く使う言葉が「論理的」という言葉。

834 :デフォルトの名無しさん:2016/10/16(日) 17:04:29.55 ID:9xwX5cNS
Staticおじさん
は。>>830 で指摘を受けたので検索させてもらった。辞書には記載がない。
http://dic.search.yahoo.co.jp/search?p=Static%E3%81%8A%E3%81%98%E3%81%95%E3%82%93&ei=UTF-8&fr=top_ga1_sa
日経の記事より
>「static」というのは、Javaのstaticメソッド のことです。
Java が普及し始めるころに、このことを指摘していた。ただ
「static」を使えば、簡単に使えますよ
というJAVA の普及に使われていた。
素人がチョコチョコと作るソフトでは「static」で十分だということでJAVAを普及させるために使われた。
日曜プログラマー(情報処理に関する専門的教育を受けていない人)の場合には、「Staticおじさん」で十分じゃないの。

>自分の時代はこうだったから、それで良いのだって
https://ja.wikipedia.org/wiki/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9E
>対して、日本では、長時間労働、下流工程での賃金の頭打ちなどにより35歳定年説がささやかれている。
と、「おじさん」だったらば、定年だから、「Staticおじさん」で十分し゛ゃないの。
生産現場にいないのだから。

Free-Basic で
何かのソフトを開発し販売しよう
なんて人はいないでしょう。
販売の場合には、商家が良品であることを検査して販売する義務が発生する(商法参照)。
良品を供給する義務がある方々ならば、ご指摘の通りなんだけど
「良品」であることを要求するから、商店からこのような方々は購入するはずです。

835 :デフォルトの名無しさん:2016/10/16(日) 18:22:08.41 ID:RSdG5rFg
>>833
アドレスはメモリ上の位置を表すもの
ポインタはメモリ上の「ある位置」を「指し示す」もの
アドレスを住所に置き換えたとしたら、ポインタはある地点の住所を書き留めたメモ

>関数の機能
それぞれの言葉を額面通り、しかも分割して反論を返さないでくれる?
関数には1つの機能だけを盛り込めば良く、それをやらないから数百行にもなる無駄に長い関数を書き
やたらと分岐の多い物が出来上がるって話なの
処理内容は簡単なのに、保守性の低い、クソ読み難いコードを生産するって話

例えば
1)テキストファイルをオープンしてその中から特定の文字の個数をカウントするコードを書いた場合
それらを1つの関数に収めちゃうのがレガシープログラマなのよ
その関数には、ファイルをオープンするって機能と特定の文字の個数をカウントする機能の2つが入っている
2)文字列型から個数をカウントするコードを書く必要がある出てきたら
レガシープログラマは、上記の「文字列カウント」の部分コードをコピペして新しい関数を作る
他の1)や2)以外の対象をした要件があった場合、そのコピペが繰り返される
もし、その「文字列カウント」のアルゴリズムにバグが有ったら
コピペされたコードを全て修正しなきゃいけない

それなら、ファイルをオープンして文字列型のバッファに文字列を格納する関数と
そのバッファから特定の文字をカウントする関数の2つを作るでしょ?
そうしたら、2)の要件も2つ目の関数で解決するでしょ
バグが有ったとしても、修正する箇所は1つで済む

836 :デフォルトの名無しさん:2016/10/16(日) 18:29:31.08 ID:RSdG5rFg
>>834
もう少しStaticおじさんのことを調べてStaticおじさんって言葉の本質を知りなさいよ
理解した上で機能制限をしたコードを書くのと理解しないで書くのとでは全く違う

君が個人で書いているなら何も文句はないし、好きにすれば良いよ
でも、コミュニティでそれをアウトプットするようなら話は変わってくる
Staticおじさんという言葉がプログラマ界隈で話題になったのも
そういった害悪なアウトプットをするからなのよ

837 :デフォルトの名無しさん:2016/10/16(日) 18:46:10.81 ID:RSdG5rFg
で、話は>>830に戻る
せっかく君が持っている多くの「純粋な」知識や経験が全く生かされない
それは君自身の損失でもあるし、コミュニティの損失でもある

だから、そういった古い習慣(思想や概念)を取り払って欲しいのよ

838 :デフォルトの名無しさん:2016/10/16(日) 22:50:24.82 ID:9xwX5cNS
>>835
>そのコピペが繰り返される
日経バソだったかな、日経はあまりにもバカ臭い内容だったので、1回代金を払った後はとっていない。
この手法を、最新の話題・技術として記載されていた。

日経パソは経営者向けの内容なので、管理職クラスの人がよく読み、まねをする。
そのうち現場が破綻する。破たんしたら、銀行が吸収合併の手続きを取る。
芋づるルーチンと呼んでいる手法で、サブルーチンコールを避けることで高速動作を確保する手法。
ご指摘の通り、保守に手間がかかるから、1回使ったら捨てる(結果に問題があっても手作業で修復する)、ソフトに多用される手法。

>文字列型のバッファに文字列を格納する関数と
これは、かなりメモリーを食う手法なので、重複起動しないタスクにしか使えない。
ファイルアクセスに時間がかかるので、
そのファイル関係の処理を全部まとめて、結果のみを保存する
ようにしないと、処理が早くならない。
複数機能を入れて結果をまとめて主記憶だけを使うように設計する。

>修正する箇所は1つで済む
逆もある。
一つのルーチンにまとめた場合「障害があるから、と直してしまう」と、どこかのルーチンの方で障害が出ることがある。
参照側で、変更ができるかどうか、いちいち検査する必要がある。
解析解が存在する場合だったらばともかく
鞍部問題や解の巣問題の場合には、発言力の強い人が勝手に変更してしまって、
その結果が他に影響が出る(バグの巣窟となる)という多々見られる。
かといって総当たり(等高線ともいう)をやったらば、遅くて仕方ないでしょう。
一つにまとめるか、分割するかは、解析解が存在するか否か、が目安
https://ja.wikipedia.org/wiki/%E8%A7%A3%E6%9E%90%E7%9A%84
>解析解: 問題が「解析的に解ける」とはその解が既知の函数や定数などを用いて閉じた形の式に表せることを言う[1]。対義語は数値解

839 :デフォルトの名無しさん:2016/10/17(月) 07:54:12.54 ID:ioKnq3J9
>>838
>これは、かなりメモリーを食う手法なので、重複起動しないタスクにしか使えない。
答えはNOだよ
ファイルから文字列を文字列型のバッファに読み込む
そのバッファを文字列カウントアルゴリズムに通す
その結果を出力する

この動作に使用されるメモリは、1つの関数内でやろうが関数を分けようが変わらない
なぜなら、何方にしてもバッファは必要であり
バッファを参照(あるいはポインタ)としてカウント関数に渡せば良いから

>一つのルーチンにまとめた場合「障害があるから、と直してしまう」と、
>どこかのルーチンの方で障害が出ることがある。
これも答えはNOだよ
バグを修正したからといって、その関数の使用先の修正の必要性はない
なぜなら、その関数の設計段階で期待される結果が決められているから

オブジェクト指向言語が主流になって設計の重要性が叫ばれているけれど
それに限った話ではなく、手続き型言語であっても同じこと
何を関数として汎化して切り出すか、それを設計段階で疎かにするから
無駄な読み難いコードが出来上がる

Staticおじさんの一連の騒動ををしっかりと調べた?
派生した話ではなく、その話題の発端となった話のことね
言っていることがまんまその人と同じなんだけど、危機感を持つべき事案だよ

840 :デフォルトの名無しさん:2016/10/17(月) 08:11:13.23 ID:ioKnq3J9
>>838
オブジェクト指向の話で申し訳ないが、このスライドを見てよ
少し極端な話ではあるけど、参考になると思うよ
ttp://www.slideshare.net/MoriharuOhzu/ss-14083300

この内容を額面通り受け取らず、手続き型言語において、この思考をどう活かせるか
慣れ親しんだ思考を取り敢えず横に置いておいて思考を巡らして下さいよ

理解を「出来る、出来ない」に関してアレコレ言うつもりはないけれど
理解を「しようとする、しない」の姿勢に対しては言わせてもらうわ
レガシープログラマは、新しい「もの」に対して拒絶的なのよ
そのくせ、新しい「物」を使いたがる
だけど、古いままの使い方を無理やりする

841 :デフォルトの名無しさん:2016/10/17(月) 18:44:10.12 ID:f7KVzbkf
>>839 ちょっとこれから出るので、簡単にこたえられる事だけ。
>バッファは必要でありバッファを参照(あるいはポインタ)として
より、これはメモリーのバカ食いの手法。
市販機器にのせてある主記憶装置に十分な余裕があるときに限ってできる手法。
入力ファイルは処理が終了するまで変化しては困るので、占有する/コピーして使用する。
コピー先を外部記憶装置にするか、主記憶装置にするか、で、>>839 では、主記憶装置を選んでいる。

>設計段階で期待される結果が決められている
仕様書のあいまいさがユーザー側では多い。
また、古いソフトの転用があるときには、一部仕様の変更が発生して、両者に対応する必要性が出てくる。
色々なルーチンをデータベースに入れて、転用するという考え方もあるが、成功した例を近所では聞いていない。
直接ソフト業界に関係していないせいかもしれない。

>発端となった話
は見つからなかった。

842 :デフォルトの名無しさん:2016/10/17(月) 18:47:10.02 ID:f7KVzbkf
ハングするソフトの作成に成功した。
AS03 → AS02, AS01 の3つのファイルを作成して
AS01 に限って
IAA = AS02_AAAA(TakaHWND , InValLing, RetValLong()) → IAA = 10
と書き換える。
'AS03.Bas
#Include "ASCom.bi"

Function AS03_AAAA(TakaHWND As HWND, InValLing As Long, RetValLong() as Long) As Long
Dim As Long IAA, IBB, ICC, IDD
IAA = AS02_AAAA(TakaHWND , InValLing, RetValLong())
AS03_AAAA =IAA
IDD = 0
For IBB = 1 To IAA
For ICC = 1 To IAA
DimDataLong2(IBB, ICC) = IBB*IAA + ICC
If (RetValLong(IBB, ICC) <> DimDataLong2(IBB, ICC)) Then IDD = IDD +1
Next ICC
Next IBB
ReDim DimDataLong2(IAA, IAA) As Long, RetValLong(IAA, IAA) as Long
ReDim DimDataString2(IAA, IAA) As String
For IBB = 1 To IAA
For ICC = 1 To IAA
DimDataLong2(IBB, ICC) = IBB*IAA + ICC
RetValLong(IBB, ICC) = DimDataLong2(IBB, ICC)
Next ICC
Next IBB
End Function

843 :デフォルトの名無しさん:2016/10/17(月) 18:48:21.62 ID:f7KVzbkf
ASCom.bi の内容は以下の通り。
#include once "windows.bi"

Declare Function AS01_AAAA(TakaHWND As HWND, InValLing As Long, RetVal() as Long) As Long
Declare Function AS02_AAAA(TakaHWND As HWND, InValLing As Long, RetVal() as Long) As Long
Declare Function AS03_AAAA(TakaHWND As HWND, InValLing As Long, RetVal() as Long) As Long

Const DimDim As Long = 2
Dim Shared TakaHWND As HWND
Dim Shared DimDataLong1() As Long
Dim Shared DimDataLong2() As Long
Dim Shared DimDataLong3() As Long
Dim Shared DimDataString1() As String
Dim Shared DimDataString2() As String
Dim Shared DimDataString3() As String

844 :デフォルトの名無しさん:2016/10/17(月) 18:51:40.05 ID:f7KVzbkf
チュートリアルの最初の頃と同じように、何もしない表示枠を作成して

ボタン(Button)3つ追加。
#Include "Mod/ASCom.bi"
Dim As Long IAA, IBB
Dim InValLing As Long, RetVal() as Long

Case IDC_BTN1
'
IBB = AS01_AAAA(TakaHWND,IAA, RetVal())
Case IDC_BTN2
'
IBB = AS02_AAAA(TakaHWND,IAA, RetVal())
Case IDC_BTN3
'
IBB = AS03_AAAA(TakaHWND,IAA, RetVal())
とやるとハングする。どこに追加するのかは、わかるよね。
わからなかったらば全部まとめてupするから知らせて。

では今日はこれで。帰りは酔っぱらっているから、会話にならないと思う。

845 :デフォルトの名無しさん:2016/10/17(月) 19:34:55.84 ID:ioKnq3J9
>>842>>843>>844
ざっとコード読んでみたけど、そりゃ上手く動かんだろうね

>Dim InValLing As Long, RetVal() as Long
ここで、RetVal()は動的配列を宣言して、その後関数に渡される
関数内の
>If (RetValLong(IBB, ICC) <> DimDataLong2(IBB, ICC)) Then IDD = IDD +1
   ^^^^^^^
この部分で配列RetValLong()を参照しているけど
RetValLong()の参照元の動的配列RetVal()は、まだ具体的な要素数でメモリを確保していない
redim RetValLong(IAA, IAA) as Longの場所が悪いね

846 :デフォルトの名無しさん:2016/10/17(月) 20:05:26.95 ID:ioKnq3J9
同様に>>843のグローバル配列も関数内でredimで領域確保していないな
>ReDim DimDataLong2(IAA, IAA) As Long, RetValLong(IAA, IAA) as Long
こいつらの宣言場所が悪い

まずさ、FreeBASICの言語機能を理解しようよ
言っちゃ悪いが、こんなの初歩だと思うんだけど…

847 :デフォルトの名無しさん:2016/10/17(月) 20:28:00.52 ID:ioKnq3J9
それとさ
サンプルコードなのだから取り敢えずいらない部分は削ぎ落とそうよ
やっていることは至極簡単なのに余計な部分が多々あるから読み難いよ

動くかどうか試していないけど、取り敢えずいらないものを排除したコード
変数iddが何に使うのか知らんけど、一応入れておいた

function AS03_AAAA(RetValLong() as long) as long
dim as long iaa = AS02_AAAA(RetValLong())
dim as long idd

redim DimDataLong2(iaa, iaa), RetValLong(iaa, iaa)

for ibb as long = 1 to iaa
for icc as long = 1 to iaa
DimDataLong2(ibb, icc) = ibb * iaa + icc
'' idd += -(RetValLong(ibb, icc) <> DimDataLong2(ibb, icc)) こういう書き方も出来る
idd += iif(RetValLong(ibb, icc) <> DimDataLong2(ibb, icc), 1, 0)
RetValLong(ibb, icc) = DimDataLong2(ibb, icc)
next icc
next ibb

return iaa
end function

848 :デフォルトの名無しさん:2016/10/17(月) 20:47:28.64 ID:ioKnq3J9
>>847
補足
redimはそれが宣言された時点でその型のデフォルト値で初期化されるから
値を保持したいなら、Preserve使ってな

849 :デフォルトの名無しさん:2016/10/18(火) 21:56:55.45 ID:1JWqtMl4
>>835
>アドレスを住所に置き換えたとしたら、ポインタはある地点の住所を書き留めたメモ
「住所を書き留めたメモ 」をアドレステーブル、中に書かれている「住所」をアドレスと呼んでいたのは、
機械語の限界が見えて(Winを使いだしてDebug.exeの使用をやめた)、来る前。

機械語に置き換えて考える癖が抜けないので、ポインターはアドレスだね。
機械語の場合、リロケートするのが*.comファイルなので、
アドレスといっても、相対アドレスの場合が多い。ポインターとの大きな違いはないと思われる。

850 :デフォルトの名無しさん:2016/10/18(火) 21:59:11.60 ID:1JWqtMl4
リロケート(普通のOSの実行形式はこの形式)の意味は
https://kotobank.jp/word/%E3%83%AA%E3%83%AD%E3%82%B1%E3%83%BC%E3%83%88-9856
リロケート禁止なシステムPGをやる人はいないと思う。

851 :デフォルトの名無しさん:2016/10/18(火) 22:54:11.09 ID:1JWqtMl4
>>840
MoriharuOhzu/ss-14083300
見直しながら、気が付いたこと。これ、ゲームソフトの考え方だよね。某氏の母校の。

ゲームソフトでは、盗作(懐石ともいう)を防止する観点から、解析が困難なソフトを用意する。
大体同じて、ちょっとだけ違う、ルーチンを大量に用意して解析されないようにする。

言語になれていない間は、
三項演算子の使用は、開発初期の試験プログラムでは危険。
 理由は算術Goto文が消えたことを思い出してほしい。
Else 文は必須。
 想定外の異常事態の処理、致命的エラーの処理に接続する。これをしないと、原因不明のもっともらしい値が得られるが虚偽で原因の特定にやたら時間がかかる。
 バク取りが十分行われて、不要になれば、エディタの専用マクロ処理(Basicで組んでも良いけど)で一括削除すれば良いだけ。

スプール
https://ja.wikipedia.org/wiki/%E3%82%B9%E3%83%97%E3%83%BC%E3%83%AA%E3%83%B3%E3%82%B0
の使用は、スプーラの使用選定の問題、機種依存機能の問題等があるので、ある程度以上の能力のある人以外勧められない。
極端な場合、私が作ったソフトは、800*600 CRTディスプレーしか対応していません(他のディスプレイは持っていませんのて゜ソフトが作れません)、と個人では済ませてしまう方法がある。
しかし、スプーラーを入れると、スプールが対応しなければならないので、やたら面倒。

852 :デフォルトの名無しさん:2016/10/18(火) 22:55:59.03 ID:1JWqtMl4
過去に作った作画ソフトで、初代がグラフィックディスプレーを使っていて、作画命令がタートルだった。
https://ja.wikipedia.org/wiki/LOGO
以後、処理系がタートルをさぼーとしていたので作画はタートルで処理・タートルで保存していた。
おかげで、V.B.で自前でタートルを作る羽目にあった。
色々ゴチャゴチャやったけど、APIを直接操作する特定の命令のルーチンを書いてきた。
自分で必要なルーチンはライブラリーで用意してあるから、これをAPIで対応させなければならない。
API関連が200位、ライブラリーの1/3位を占めている。
何の機能を用意して、何の機能を捨てるか、の取捨選択に迫られる。
慣れないと、この取捨選択は無理。できない。

FreeBasic でタートルをサポートしているのかな?。クラフィック関係までは手を出していない。
解の巣 (X-1)(X-1.1)(X-1.01)(X-1.001)中略 (X-1.?????1)=0 の解を求めよ
なんて時まで使わないから。使いだすのはちょっと先。

853 :デフォルトの名無しさん:2016/10/18(火) 23:17:04.53 ID:1JWqtMl4
>>846
>んなの初歩だと思うんだけど…
そりゃそうだ。
問題は、原因不明の変数食いつぶしが発生しているから、
意図的に、変数食いつぶしを発生するようなソフトを書いてみた。

DIM ???()宣言後に???()に値を定義すると
実行時の例外を表示後停止しないで、ハングする
という仕様には参った。

ハングさせることに成功していないが、
構造体を宣言した後に構造体を構成する変数の一つを定義してから、引数に引き渡す必要がある模様。

http://makoto-watanabe.main.jp/freebasic/TutDynamicArrays.html
>多くの人々が、動的配列で苦労をしている
のもわかった。
エラーが表示されないで、ハングだから原因の特定にやたら手間がかかる。

>>847 >変数iddが何に使うのか知らんけど
例外の発生、つまり変数食いつぶしの発生を調べている。
IDD が1以上ならば、異常発生のメッセージを示すための物。

わざとおかしなソフトを書いて、暴走させて、どのような条件の時に暴走するか、を特定するのも
処理系を使用し始める時にすること。
分量が多くなってくると、訳が分からなくなるから
訳が分かる程度の少ない分量で、ハングさせることが必要になる。
余計な部分は、ある程度までできたらば、For-Next で回して、スタックを圧迫させるための物。
このルーチンを作っていないので、Const で定数にしておいた。

854 :デフォルトの名無しさん:2016/10/18(火) 23:43:13.10 ID:1JWqtMl4
一つ思い出したこと。
処理系名がわからないのだが、Win95の頃のC言語で
サブルーチン(又はファンクション)の深さが10から16を超えるとハングする
という処理系があった。
そのため、サブルーチンコールを避けて、1000-3000行がざらな芋づるルーチンとしていた。

コンパイラー、特にスタック管理がよくないと、サブルーチンの深さでハングする。
画像データなんて使うと、MB単位でスタックに放り込むから要注意。

855 :デフォルトの名無しさん:2016/10/19(水) 00:16:50.83 ID:xkr0DzJS
>>851
>見直しながら、気が付いたこと。これ、ゲームソフトの考え方だよね。某氏の母校の。
全く違う、大事なことなのでもう一回言う、全く違う
オブジェクト指向の考え方をここで説明することは到底無理なので
興味があったら独自に調べてよ
そういう返答がくるとは全く想定していなかったわ
本気にそういう認識する人いるんだな

>三項演算子の使用は、開発初期の試験プログラムでは危険。
?

856 :デフォルトの名無しさん:2016/10/19(水) 00:25:01.97 ID:xkr0DzJS
>>853
>原因不明の変数食いつぶしが発生しているから
?、勘違いだと思うよ

>エラーが表示されないで、ハングだから原因の特定にやたら手間がかかる。
動的配列を知ってたら、ミスすることはないと思うけどね
まあ、標準の動的配列なんて余り使わないけどね
殆どの場合、静的配列で何とかなるし、new/delete使うし

>>854
>サブルーチン(又はファンクション)の深さが10から16を超えるとハングする
今も変わらないんじゃない?
そんなに多層に関数を呼び出すことないもの
それも設計の問題でしかないよ

857 :デフォルトの名無しさん:2016/10/19(水) 00:52:12.31 ID:q7KUmHuY
>>856 >勘違いだと思うよ
>>641-644 参照。

>静的配列で何とかなるし、
良いね。10位で作成して、100位で使っていて、10000-50000位のデータがたまに送られてくる。

>多層に関数を呼び出すことないも
Quick Sort で再帰が5-6。
作った簡易電卓では、主ルーチンから、
1. 非常駐部マクロ実行の制御を呼び出して、
2. 常駐部通常実行ルーチンの呼び出し
3. 通常実行ルーチンから非常駐部のマクロ実行ルーチンを予備だす
4. 非常駐部のマクロ実行ルーチンから常駐部通常実行ルーチンの呼び出し(ここで再帰がかかる)
5. 常駐部通常実行ルーチンから、個別の非常駐部処理ルーチンを呼び出す
と、ここまでに5重使ってしまう。

quick Sort で5重ぐらい使ってしまうから、
合計20位ないとQuickSort ができない。複数キーによる整列をかけるから、さらに再起呼び出しがかかる。

858 :デフォルトの名無しさん:2016/10/19(水) 00:56:32.69 ID:xkr0DzJS
まあ何というか、古い思想や概念を払拭出来ないから
知識が無駄になっているとしか言いようがないな
言語仕様の不理解、それを知識で補おうとするけれど
それが上手く生かされていないって印象だな

オブジェクト指向のスライドを提示したのも
手続き型言語でも有効な抽象化や汎化など考え方を理解してほしかったからなんだよね
あのスライドを見て、そういった認識しか出来ないってのは残念でならないわ

これまでのやり取りを振り返って思うことは
思考(思想も含む)と知識の切り離しが出来ていないから認識が不足するって事かな
だから、知識の提示に躍起になっていて、こちらの言い分への理解に努めようとしない
こっちは勉強になるけれども、もっと柔軟な思考を持った方が良いよ

思考がStaticおじさんと同等なのは本当に危機感持って欲しいわ

859 :デフォルトの名無しさん:2016/10/19(水) 01:09:20.38 ID:xkr0DzJS
>>857
勘違いじゃないの
>>646で問題点上げているじゃない

>再帰
場合によっては利用するけれど
関数の再帰呼び出しはなるべくしないってのが一般的だと思うよ
再帰呼び出しを禁止するコーディング規約すらある
末尾再帰なら、普通にループ処理で実装可能だしね

860 :デフォルトの名無しさん:2016/10/19(水) 23:04:12.09 ID:q7KUmHuY
>>858 こういうのがわかりやすい。
http://www.comp.tmu.ac.jp/shintani/japanese/openUniversity/node5.html
一般的に挙げられるオブジェクト指向の三大概念について考えて見ましょう.
継承 (親から受け継ぐモノがたくさんあれば楽?)
カプセル化 (細かいところは見せません・操作させません)
多態性 (問いかけに対する応答はオブジェクト自身が適切に判断)

>な抽象化や汎化など考え方を
>抽象化とは,ある物事(とその集団)から固有の特徴や共通部分を取り出す作業である
より、ライブ(ラリー)化することでしょう。
ライブ化は、今やっているような動作試験に使うルーチンではいくらやっても無意味。
お遊びソフトを何本か作ってみて、共通部分が見いだせるような、ルーチンの作り方を覚えないと、使えないし、
定番ソフトに使えるようなルーチンを作れるようにならないと、
ライブ化は無理。元々持っていたライブラリーの修正は別にして、
新規に作ったソフトが15+42個。42個はもう使うことがない、としたソフト。
15個の内1個が既存のライブラリーの動作試験で、新規は残る14個。
14個は、全部廃棄予定だね、使い道がない。
つまり、このままではライブラリーに登録(抽象化)することはない。

861 :デフォルトの名無しさん:2016/10/20(木) 19:46:24.79 ID:48/+sWie
大域宣言について
'Dim AAAA()
'DimChk11D.bas(6) error 146: Default types or suffixes are only valid in -lang deprecated or fblite or qb in 'Dim AAAA()'
'Dim Shard AAAA()
'DimChk11D.bas(8) error 146: Default types or suffixes are only valid in -lang deprecated or fblite or qb, found 'AAAA' in 'Dim Shard AAAA()'
Dim Shared As Single AAAA()
とこれが、大域配列の宣言となる。
Dim As Single AAAA()
も可能ではあるが、Function で定義されるサブルーチンからの参照ができない。

862 :デフォルトの名無しさん:2016/10/20(木) 19:48:11.30 ID:48/+sWie
Redim の使用例。Function WndProc()内ルーチンだけ記載「IDC_BTN1」をクリックしてからでないとハングする。
クリックした後だと、添え字(()内数値)が範囲外でもそのにまま通ってしまう。
Case IDC_BTN1
ReDim AAAA(10)
Case IDC_BTN2
AAAA(-1) = 1
Case IDC_BTN3
AAAA(0) = 1
Case IDC_BTN4
AAAA(1) = 1
Case IDC_BTN5
AAAA(10) = 1
Case IDC_BTN6
AAAA(11) = 1

Case IDC_BTN7
BBBB = AAAA(-1)
Case IDC_BTN8
BBBB = AAAA(0)
Case IDC_BTN9
BBBB = AAAA(1)
Case IDC_BTN10
BBBB = AAAA(10)
Case IDC_BTN11
BBBB = AAAA(11)
多分、Basic では、宣言がなくても、AAAA(10)の宣言があったものとして処理する、という処理系があるので、無前言でも使用できるように用意したルーチンだと思う。
全体が必要な人は知らせてくれ。D:\bas\Projects\DimChk11D\DimChk11D.bas 他をUPするから。

863 :デフォルトの名無しさん:2016/10/20(木) 20:49:23.76 ID:tZ8NDPa6
>>857
今時、オリジナルのQuickSortは使わんでしょ
メディアンキラーの数列問題あるし、最悪時間がO(n * n)だし
それこそ言う通りスタックオーバーフローの問題がある
一定の再帰深度に至ったらInsertionSortに切り替えたり
MergeSortとの複合だったりするハイブリッドなQuickSortが主流よ
一般的にはIntroSortの名前で知られている

>>860
その提示されたリンク先を見たら、その結論には至らないと思うけど?
自分も手続き型言語からオブジェクト指向型言語に学習を移したけど
根本的なコーディングの思考は両者共に変わらない
部品化して再利用と保守性を高めるコーディングが求められるのには違いがない
コーディングによる思考と言語に求められる思考は同列ではない

話は変わるけど、ライブラリをライブって省略する人始めて見たよ

864 :デフォルトの名無しさん:2016/10/20(木) 20:53:50.31 ID:tZ8NDPa6
>>861
>'Dim AAAA()
>'Dim Shard AAAA()
FreeBASICは静的型付け言語

>Dim Shared As Single AAAA()
>とこれが、大域配列の宣言となる。
>Dim As Single AAAA()
>も可能ではあるが、Function で定義されるサブルーチンからの参照ができない。
これ前にも指摘したよね
グローバル変数、スコープなどなど

865 :デフォルトの名無しさん:2016/10/20(木) 21:00:34.59 ID:tZ8NDPa6
>>862
>多分、Basic では、宣言がなくても、AAAA(10)の宣言があったものとして処理する
>という処理系があるので、無前言でも使用できるように用意したルーチンだと思う。
他のBASIC系がそういった処理であろうがなかろうがFreeBASICには関係ない
FreeBASICにはそれの仕様がある
勝手な解釈をしないで、マニュアル読みなさいよ

単純に範囲チェックをしていないだけ
何のためにlbound()やubound()が用意されていると思ってんの
範囲チェックは配列の外で独自にやる仕様なの

866 :デフォルトの名無しさん:2016/10/20(木) 22:31:20.44 ID:48/+sWie
>>863
>一定の再帰深度に至った
以後知らなかった。

>ライブって省略する人始めて見たよ
ライブ(LIB)、ライブラ(libr)が省略語。
ライブラリー(library)を起動したときに表示されるコマンドプロンプトの読み。
LIB> とか LIBR■ とか表示された機械を使っていた。

>>864 今までの経緯をまとめただけ。
必ずハングするソフトを作成しておくと、以後の保守の参考になる。

>>865
>用意されていると思ってんの
こんな便利なもの Fotran6にはなかった。
Dim 実行時の範囲(the total number)を定義した変数(N,M,L とコピーNN, MM, LL)を残しておくのが、多くのFotran のライブ。
極端な言い方をすれば、
10次元とか20次元の数値を使うことになりかねないので、大域のDim実行を一つのフラグにまとめて初期化している。
初期化フラグをみて非参照側は、処理せずRteurnするか、処理をするかの判断をしている。
メニュー側は、Hide(SW_HIDE, SW_SHOW)とかの処理になる。
このあたりは全部省略した。

867 :デフォルトの名無しさん:2016/10/20(木) 22:43:15.63 ID:tZ8NDPa6
>>866
まあ確かに、LibraryをLibって省略するけど
日本語に訳した語句を文章に書く人も始めて見たよ
そういうのはなるべく元の英文で書いた方が良いよ
勘違いの元になるから

>こんな便利なもの Fotran6にはなかった。
FreeBASICマニュアルの熟読が必須だな

FreeBASICは手続き型言語が元だから
OOP言語の要素を取り入れてもその形態は変わらないと思う
C++に近い感じ
だけど、グローバル変数の使用は控えた方が良いね
大抵の場合、使わなくてもコードは書けるからね

868 :デフォルトの名無しさん:2016/10/20(木) 22:45:33.28 ID:48/+sWie
古いC言語の資料で
構造体などの入力変数を、いつ、どこで、だれが、どのように、初期化するのか
はっきりしていない
との記載があった。
Dim as (適当な型名) (適当な変数)
で初期化されるのか、
(適当な変数).(適当な要素名) = (適当な値)
で初期化される(すべての要素に値が定義される)のか、
が見つからなかった。

大域の数値・文字変数の宣言は、
http://makoto-watanabe.main.jp/freebasic/ProPgErrorHandling.html
>エラーは、静かに無視され、コードの実行は、続きます。
というので、エラーコードの取得を目的に作った。
>コードは、ERR 関数を使って、次の行で、可能な誤りを処理するべきです。
だから、あえて、N等を使わないで実行させた。

869 :デフォルトの名無しさん:2016/10/20(木) 22:57:31.91 ID:tZ8NDPa6
>>868
FreeBASICの構造体、type ... end typeは
Cの構造体的な古い使い方も出来るけど、基本はOOPのクラスのように使う
クラスの初期化は、クラスが行う
FreeBASICではconstructor()の特殊メンバー関数が用意されている
この辺り、かなり覚えることが多くなるから、まだ手を出さない方が良いよ

870 :デフォルトの名無しさん:2016/10/20(木) 23:05:48.47 ID:48/+sWie
古いC言語の資料で、
(For-Next, Do-Loop, While-Wend 等の)ループ処理で、途中からの飛び出し命令(Exit For, Exit Do)を使うと
スタックに関係変数が残り、メモリーリークの原因になる
同様に、サブルーチン(Exit Function, Exit Sub 等)でも起こりうる
For-Next はループ変数に終値を代入して飛び出すか、フラグを立てて内部処理をしないで回す、等の処理が必要
なんてのが、あったんだが、
ttp://www.slideshare.net/MoriharuOhzu/ss-14083300
では、やたら飛び出しを勧めている。

手持ちの流れ図作成ソフトでは、Exit Sub 等を理解できないので、ブロックIF文で末尾に飛ばしていた。
流れ図作成ソフトでチェックしていた非常駐部等の処理(Call モジュール名.ルーチン名)が出てきてないが
ReDim の処理の検査として、流れ図作成ソフトで変数の追跡をする関係もある。

871 :デフォルトの名無しさん:2016/10/20(木) 23:56:24.26 ID:tZ8NDPa6
>>870
FreeBASICは関数やループブロックから飛び出しても問題ない
Gotoで飛び出しても大丈夫なくらい、きっちりと処理してくれる
C/C++でも問題ない

情報が古すぎるよ
N88BASICを思い出したわw
浦島状態なの?

872 :デフォルトの名無しさん:2016/10/21(金) 00:06:56.14 ID:5SWCZ9aM
>>871 助かるわ。
>浦島状態なの?
近い。
V.B. 6.0の頃で金がなくてNetが買えなくて、ズルズル。
V.S. のお試し版を入れて、操作がさっぱりわからなくて、削除。
さっき、変な英語のメッセージが出たので、なんか残っているみたい。

N88は、3か月ぐらい使っていた。課長と隣課の係長が変なことを言い出したので、
N88は使うのをやめた。係長が使っていたけど。
N88はロードランナーに徹した。
リセッターになるべく見ていたけど、結局わからなかった。

873 :デフォルトの名無しさん:2016/10/21(金) 00:18:27.22 ID:AfigWPHq
>>872
なるほど、こりゃ一苦労だな
もうね、君とのやり取りで、これまで自分が言ってきた数々のことを
何も考えずに信じて、頭空っぽにして一から学習した方が良いな

古い思想や概念を捨てきれない人って思ってたけど
単に時代の流れに取り残されただけなんだな(失礼)
Staticおじさんとはまた違うタイプだわ

せっかく学習する気になっているのだから
新しい思想や概念を新しい言語と共に習得して欲しいわ(本気で懇願するわ)
これは正にチャンスだよ

874 :デフォルトの名無しさん:2016/10/21(金) 00:54:30.23 ID:5SWCZ9aM
>>866 の続き。
大域変数の宣言は

Sub CommonStringSet()

CommonStringSetFig = 1
Ierror = 0
Dim なんたらかーたら
Call あれれ.○×▼initialize
IF (Ierror = 0) then CommonStringSetFig = 2
End Sub

で初期化して

Sub なんか仕様()
IF (CommonStringSetFig = 0) then Call CommonStringSet()

IF (CommonStringSetFig <= 0) then
'未初期化、初期化ルーチンの障害等
ElseIF (CommonStringSetFig = 1) then
'初期化作業中
'あれれ.frmから参照がある場合等
ElseIF (CommonStringSetFig = 2) then
'初期化終了
else
'致命的障害・終了処理中
end IF
End sub

でやっていた。なんかの参考にして。ベン図
https://kotobank.jp/word/%E3%83%99%E3%83%B3%E5%9B%B3-8692#E6.97.A5.E6.9C.AC.E5.A4.A7.E7.99.BE.E7.A7.91.E5.85.A8.E6.9B.B8.28.E3.83.8B.E3.83.83.E3.83.9D.E3.83.8B.E3.82.AB.29
の場合分けを徹底しておかないと、不定の値で計算してしまう、なんて発見が困難な障害に出会うことになる。

875 :デフォルトの名無しさん:2016/10/21(金) 20:13:13.49 ID:5SWCZ9aM
現在 556KB、500KB越で書き込みが一切できない板もある。
新スレを作る話をしていた方々、ヨロ。

876 :デフォルトの名無しさん:2016/10/21(金) 20:25:40.68 ID:5SWCZ9aM
こんなのを作ってみた。マルチモジュール。IDC_BTN1-IDC_BTN3でちょっと違う。連続して書いたらば禁止用語で引っかかった。
Case IDC_BTN1 → Case IDC_BTN2 → Case IDC_BTN3
Dim As Long IAA, IBB, ICC
IAA = 10: ICC = IAA
IBB = AAAA( IAA)  → IBB = AAAAByVal( IAA)  → IBB = AAAAByRef( IAA)
MessageBox(TakaHWND,

877 :デフォルトの名無しさん:2016/10/21(金) 20:27:41.63 ID:5SWCZ9aM
途切れたので、途切れた部分から続き
MessageBox(TakaHWND, "Hello ("+ Str$(IBB)+") " + Str(IAA) +"/"+Str$(ICC), "Messagebox caption", MB_ICONINFORMATION)

同じくIDC_BTN4-IDC_BTN6でちょっと違う。
Case IDC_BTN4 → Case IDC_BTN5 → Case IDC_BTN6
Dim As Long IAA, IBB, ICC
IBB = BBBB(TakahWnd) → IBB = BBBBByVal(TakahWnd) → IBB = BBBBByRef(TakahWnd)

以下 D:\bas\Projects\DimChk11E\DimChk11E01.basの内容。
Function AAAA( IAA As Long) As Long
IAA = 5
AAAA = 8
End Function
以下、AAAA系統で、異なる点だけ。
Function AAAAbyVal(ByVal IAA As Long) As Long
AAAAbyVal = 8
Function AAAAbyRef(ByRef IAA As Long) As Long
AAAAbyRef = 8

878 :デフォルトの名無しさん:2016/10/21(金) 20:30:04.01 ID:5SWCZ9aM
次にBBBB系統。
Function BBBB(TakahWnd As HWND) As Long
Dim As Long IAA, IBB, ICC
IAA = 10
ICC = IAA
IBB = AAAA( IAA)
MessageBox(TakaHWND, "Hello E("+ Str$(IBB)+") " + Str(IAA) +"/"+Str$(ICC), "Messagebox caption", MB_ICONINFORMATION)
BBBB = 9
End Function
違うところだけ
Function BBBBbyVal(TakahWnd As HWND) As Long
IBB = AAAAbyVal( IAA)
BBBBbyVal = 9
Function BBBBbyRef(TakahWnd As HWND) As Long
IBB = AAAAbyRef( IAA)
BBBBbyRef = 9

879 :デフォルトの名無しさん:2016/10/21(金) 20:41:44.32 ID:5SWCZ9aM
要点は、Function なんたら() の引数の前置句を
無指定、ByVal, ByRef
の3種類用意した。
参照側 → 非参照側への値の引き渡しは、今回は試していないが、無指定で可能。
しかし、
非参照側 → 参照側への値の引き渡しは、ByRef のみ可能
という結論に達した。
http://makoto-watanabe.main.jp/freebasic/ProPgPassingArguments.html
で、
>これは、手続きは、手続きに渡された元の変数やオブジェクトを、変更できることを意味します。
と、主語が2つあるやや難解な日本語で説明されていた。

QBでは、どっちの方法をとっても、非参照側⇔参照側の相互引き渡しが可能であった。
これを発見するまでは、かなり苦労した。
Basic は、大域に全数値が置かないと、自由に変数をいじれない、という現実が立ちはだかっていたのである。
なるべく早く、フローチャート作成ルーチンを復活させないと、
引数で非参照側から参照側へ値を送っているルーチンがほとんど(無理やりSub → Functionに書き換えた)のルーチンが使い物にならなくなる。

880 :デフォルトの名無しさん:2016/10/23(日) 10:06:03.38 ID:xOvwZfT4
構造体の初期化に関して、
手持ちのMIDIによるBEEP音が
'http://park7.wakwak.com/~efc21/cgi-bin/exqalounge.cgi?print+200707/07070177.txt
しかないので、これ関係。
'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
より、
Dim midHnd As HMIDIOUT__
Dim ImidHndPTR As HMIDIOUT = @midHnd
Dim ImidHndPTRPTR As LPHMIDIOUT = @ImidHndPTR
を用意して
midHnd.unused = 0
If (ImidHndPTR <> @midHnd) Then
MessageBox(TakaHWND, "Hello (ImidHndPTR) 範囲外" + Str(ImidHndPTR)+","+Str$(@midHnd), "Messagebox caption", MB_ICONINFORMATION)
EndIf
If (ImidHndPTRPTR <> @ImidHndPTR) Then
MessageBox(TakaHWND, "Hello (ImidHndPTRPTR) 範囲外" + Str(ImidHndPTRPTR)+","+Str$(@ImidHndPTR), "Messagebox caption", MB_ICONINFORMATION)
EndIf
とやったらば、MessageBox()が実行されなかった。だから、構造体に値が入っているかどうかは別にして、
アドレス(ポインター)はDimで決定されるみたい。

881 :デフォルトの名無しさん:2016/10/23(日) 10:15:29.01 ID:xOvwZfT4
MSの Replace()は、手持ちで類似ルーチンがあるので、類似ルーチンを使用して

MSReturnCode = midiOutOpen(@ImidHndPTR, MIDI_MAPPER, 0, 0, CALLBACK_NULL)
MSReturnCode = midiOutClose(@midHnd)
Private Function BeepMidiOut(ImidHnd As HMIDIOUT__, DataString as String) As Long
'ルーチン名の変更 Sub Midi_out() → Sub BeepMidiOut()
ImidHndPTR = @ImidHnd
ImidHndPTRPTR = @ImidHndPTR
MSReturnCode = midiOutPrepareHeader(ImidHndPTR, @lpMidiOutHdr, Len(lpMidiOutHdr))
MSReturnCode = midiOutLongMsg(ImidHndPTR, @lpMidiOutHdr, Len(lpMidiOutHdr))
で、コンパイルエラーはなくなった。

しかし、ハングする。今のところ、対応はわからない。

882 :デフォルトの名無しさん:2016/10/23(日) 14:27:32.03 ID:xOvwZfT4
>>881 のつづき。
TakaDammyReturnCode = BeepMidiOut(midHnd, MdiMsg)
入れておく必要があるかな?。

機械の方のMIDIを見るべく、手持ちのMIDIファイルをエクスプローラーでクリック。
MIDI 音源がありません
とのこと。MIDI 関係はここで打ち切り。
Win 10, 32bit で動きそうな仮想音源があったらば、知らせてほしい。
検索で見つかったところは、
http://homepage3.nifty.com/3gatudo/mididl.htm
ぐらいで、
Microsoft GS Wavetable SW Synth
は見つからない。DirectXが入っていないのかもしれない。
SW−10
は、Nifの販促CD-ROM(2001)より。ソフトが起動してしまって、中身が見られなくて、スージーを使ってコピー。
起動したけど、動かなかった。
S−YGX50
は、ヤマハのサイトが見つからなくて試せず。

883 :デフォルトの名無しさん:2016/10/23(日) 20:38:27.04 ID:xOvwZfT4
http://makoto-watanabe.main.jp/freebasic/tipsFileDialog.html#start
いじったことのある方へ。
当方 Win10, 32Bit で以下の障害メッセージが発生。
先頭から
'********************* Usage: *****************************
までを
D:\bas\Projects\File03\Mod\FL01SBCom.BI へコピー。
Function FileSelectFolder (Byref title As String = "Choose A Folder", ByVal nCSIDL As Integer, iFlags As ULong = BIF_EDITBOX, ByRef sz_InitialDir As String) As String
'D:\bas\Projects\File03\Mod\FL01SBCom.BI(91) warning 36(0): Mismatching parameter initializer, at parameter 3 (iFlags) of FileSelectFolder()
ret = SHGetSpecialFolderLocation(HWND_DESKTOP, nCSIDL, @bi.pidlRoot)
'D:\bas\Projects\File03\Mod\FL01SBCom.BI(101) error 180: Invalid assignment/conversion, at parameter 3 of SHGETSPECIALFOLDERLOCATION() in 'ret = SHGetSpecialFolderLocation(HWND_DESKTOP, nCSIDL, @bi.pidlRoot)'
ret = SHGetFolderLocation(HWND_DESKTOP, CSIDL_DESKTOP , NULL, NULL, @bi.pidlRoot)
'D:\bas\Projects\File03\Mod\FL01SBCom.BI(106) error 180: Invalid assignment/conversion, at parameter 5 of SHGETFOLDERLOCATION() in 'ret = SHGetFolderLocation(HWND_DESKTOP, CSIDL_DESKTOP , NULL, NULL, @bi.pidlRoot)'
CoTaskMemFree bi.pidlRoot
'D:\bas\Projects\File03\Mod\FL01SBCom.BI(135) error 180: Invalid assignment/conversion, at parameter 1 of COTASKMEMFREE() in 'CoTaskMemFree bi.pidlRoot'
以上、警告メッセージ1、障害メッセージ3が発生。

884 :デフォルトの名無しさん:2016/10/23(日) 20:46:42.61 ID:xOvwZfT4
#Ifndef _FILE_HELPERS_WIN32
という、コンパイラに対する命令文の意味が分からず
C:\tool\FreeBASIC
"C:\FbEdit"
http://makoto-watanabe.main.jp/freebasic/
ではヒットしない。
誰かが、何かの条件で、どこかで決めているはずだけれども
http://search.yahoo.co.jp/search;_ylt=A2RA2EPKogxYJGMA2UIDdNt7?p=_FILE_HELPERS_WIN32&search.x=1&fr=top_ga1_sa&tid=top_ga1_sa&ei=UTF-8&aq=&oq=&afs=
では、本家と日本語サイトのみに記載有り。

885 :デフォルトの名無しさん:2016/10/23(日) 22:49:17.73 ID:LVHhfsuk
>>884
#Ifndef _FILE_HELPERS_WIN32
#Define _FILE_HELPERS_WIN32
#Endif

そりゃそうだw
このマクロは「インクルードガード」だもの
これが何なのかはググってね

886 :渡辺真:2016/10/23(日) 23:24:58.78 ID:jMLXBD1u
>>882
>Win 10, 32bit で動きそうな仮想音源があったらば、知らせてほしい。

直接の返答にはなっていませんが、私の Win10 32bit では、下記を実行したら MIDI を再生できました。
http://makoto-watanabe.main.jp/freebasic/ExtLibfmod.html

887 :デフォルトの名無しさん:2016/10/24(月) 21:19:21.72 ID:sdyc/Oh5
>>886 関連。
UsingFMOD_A_Tutorial.zip
の入手には成功。
使われているファイル、"fmod.bi"の所在が分からず、ネットを検索して見つからず。
ネットをfmod.dll で検索していたら、本体に入っているらしき文言があり、手持ちのファイルを検索したら
C:\tool\FreeBASIC\inc\fmod.bi に発見。
C:\tool\FreeBASIC\内を検索して、米国では普及している音楽ファイル *.mod の再生ルーチン
C:\tool\FreeBASIC\examples\manual\libraries\fmod1.bas
*.mp3 再生ルーチン
C:\tool\FreeBASIC\examples\manual\libraries\fmod2.bas
C:\tool\FreeBASIC\examples\sound\FMOD\mp3-player.bas
を発見した。
なお、http://www.fmod.org/ には課金情報の記載もあり、
英語が天才的にできない吾輩としては、API情報などの入手はあきらめることにした。

手持ちのMIDIによるBEEP音
'http://park7.wakwak.com/~efc21/cgi-bin/exqalounge.cgi?print+200707/07070177.txt
は、1バイトづつ送って再生するルーチンを使っているので、
ファイルを一括出力する
http://makoto-watanabe.main.jp/freebasic/ExtLibfmod.html
とは考え方に違いがあり、同様な使い方はできない。
MIDIファイルを大量に作成して、使うことが原則となる。
ファイル管理等のルーチン作成が必要になった。

なお、まだ音は出していない。
コンパイラーを通して、エラーが出なくなって、
常駐しない実行形式のファイルが作成できただけ。

888 :デフォルトの名無しさん:2016/10/24(月) 21:22:53.53 ID:sdyc/Oh5
DIMの有効範囲について、次のように、
IFブロック内宣言をすると、IFブロック外で参照できない、
という仕様を発見した。

Function PlayMIDIfile1(ByRef ActionType As Integer) As Long
Dim As Long IAA, IBB
PlayMIDIfile1 = 0
If (IAA = IBB) Then
ActionType =0
Else
ActionType =1
Dim As Long Ptr IAAptr = @IAA
IBB = *IAAptr
'エラー発生せず
EndIf

If ( ActionType =1 ) Then
' IBB = *IAAptr: 'ここでエラー
'BeepFmod.bas(45) error 41: Variable not declared, IAAptr in 'IBB = *IAAptr'
EndIf
End Function

889 :デフォルトの名無しさん:2016/10/24(月) 21:34:57.84 ID:sdyc/Oh5
>>885
http://www.slis.tsukuba.ac.jp/~fujisawa.makoto.fu/cgi-bin/wiki/index.php?C%2CC%2B%2B%A5%E1%A5%E2#c98802a3
ヘッダファイルなどが複数回読み込まれるのを防ぐのに#ifndefを用いる.
#ifndef _HEADER_H_
#define _HEADER_H_
ヘッダの内容
#endif // _HEADER_H_
ユーザーレベルで(プログラム作成者が)決定する内容なのね、
こりゃ、訳が分からぬ内容だわ。

890 :デフォルトの名無しさん:2016/10/24(月) 23:05:55.00 ID:sdyc/Oh5
>>887 のつづき。
再生に成功した。正しい物理調律による不協和音の連続となる、MIDI再生。
安物の低性能スピーカーに対応した、MP3再生に。

MIDIは、
ファイル終了後繰り返し再生になって、制御が参照ルーチンに戻ってこない
という状態。
MP3再生終了後に、制御が参照ルーチンに戻る、
という状態。

前者を制御しているのが゜Sleep 命令らしい、というところまではつかんだ。
http://www.fmod.org/ ではゲーム音楽が主体という解説があり、何らかの手段でマルチタスク化、つまり、音楽再生を続けたまま制御が参照側に戻るという処理があるはずなのだが
UsingFMOD_A_Tutorial\basic_fmod_guide.txt
には、
If your needs extend beyond this tutorial, you are encouraged to explore additional FMOD calls and its documentation.
このチュートリアルを超えて使用する必要性がある場合は、FMODのマニュアルに追加されたのFMOD関係参照を調べることをお勧めします。
とあり、basic_fmod_guide.txtの英文解読が必要の模様。
FMODのマニュアルは会員制のため、英語が天才的にできない吾輩としては、あきらめる必要がある。

http://www.freebasic.net/wiki/wikka.php?wakka=KeyPgSleep
と比較して、
http://makoto-watanabe.main.jp/freebasic/PgSleep.html
で気が付いたこと。

任意の旗。 通常の睡眠に対して、0 の値を与えます。
Optional flag; give it a value of 0 for a normal sleep,
より、日本語訳の「旗」、原文の「flag」は、ユーザーが指定するから、スイッチの意味と思わせれる。
「通常の睡眠」は、「通常のsleep(命令)」の意味でしょう。
「「深い」睡眠」、原文の「 a "deep" sleep」は、""が使われていることから辞書用語
https://kotobank.jp/ejword/deep
ではあまり使われない「5 (程度が)強度の, 極度の, 強烈な」の意味と思われます。
キー入力を受け付けない、ことを「deep」と表現しているものと思われます。

891 :渡辺真:2016/10/25(火) 00:45:39.69 ID:wjYYOxoL
>>887
>1バイトづつ送って再生するルーチンを使っている

ToneGrid - Playing MIDI Notes
http://www.freebasic.net/forum/viewtopic.php?t=21027

QB like PLAY plus more...
http://www.freebasic.net/forum/viewtopic.php?t=12995
が役に立ちそうですね。

892 :渡辺真:2016/10/25(火) 00:50:54.71 ID:wjYYOxoL
>>891
#include once "windows.bi"
#include once "win\mmsystem.bi"

type MidiMessage field=1
Number as UByte
ParmA as UByte
ParmB as UByte
Reserved as UByte
end Type

#define MidiSendMessage(MSGVAR) midiOutShortMsg(MYPLAYDEVICE, *cptr(integer ptr,@MSGVAR))
dim shared as HMIDIOUT MYPLAYDEVICE '// MIDI device interface for sending MIDI output
var FLAG = midiOutOpen(@MYPLAYDEVICE, MIDI_MAPPER, 0, 0, null)
if (FLAG <> MMSYSERR_NOERROR) Then
print "Error opening MIDI Output."
end If

Dim Shared as MidiMessage MidiMsg
MidiMsg.Reserved = 0
Sub NoteOn(channel As UByte, note As UByte, velocity As UByte)
MidiMsg.Number = &h90 + (channel And &hf)
MidiMsg.ParmA = (note And &h7f) 'NOTE
MidiMsg.ParmB = (velocity And &h7f) 'volume
MidiSendMessage(MidiMsg)
End Sub

Dim I As Integer
For I =1 To 50
NoteOn(0,I,127)
Sleep 200
Next I

893 :デフォルトの名無しさん:2016/10/26(水) 00:12:47.34 ID:iMPAbDCn
>>891 現在、ソースリストを解読中。
midiOutOpen(@MYPLAYDEVICE, MIDI_MAPPER, 0, 0, null)
の戻り値が 2 となっているので、MIDIドライバーを入れない限りは動作不能。
本家を検索して、FMOD の定数の定義らしきものを発見。
#define FSOUND_LOOP_OFF 0x00000001 /* For non looping samples. */
等。
解読には時間がかかりそう。
MIDIは正確な物理調律をしているので、不協和音となりやすい。
だから、警告音としては最適なんだけど、現在使えない。

894 :渡辺真:2016/10/26(水) 10:24:24.17 ID:zIa530P9
>>893
>MIDIは正確な物理調律をしているので、不協和音となりやすい。

私の Win10 32bit では、
http://makoto-watanabe.main.jp/freebasic/tipsMIDI.html
の「QB like PLAY plus more...」の「BrazillianThemeMusic.bas」(PlayMidi.bas を含む。PlayFMOD.bas ではないので注意。)
を実行したところ、単音ですが音楽を再生できました。

895 :デフォルトの名無しさん:2016/10/28(金) 19:40:16.34 ID:zii2+97k
MIDI ドライバーを入手することに成功した。
http://rksw.blog.fc2.com/blog-entry-14.html
Win8- 10 でMIDIが鳴らない人ならば試す価値があると思う。
http://coolsoft.altervista.org/en/virtualmidisynth

私が引っ掛かったのは「virtualMIDISynthの初期画面」で、
右上の「+」を押すとファイル選択画面になること、「十字ボタンで、」がわからなかった。

導入先が、C:\Windows\Win32\ 内固定なので、エクスプローラーの
「表示」でみられる、右上端のほうの「隠しファイル」にレ印を入れないと導入先が見つからない。
しかも、一旦エクスプローラーを終了して、再起動しないと、表示内容が更新されない。
「SGM-V2.01」の圧縮が 7-ZIPで
http://www.vector.co.jp/soft/dl/win95/util/se252429.html
2014.07.04に新バージョンになっている。
旧バージョンの2004年版を使っていたが、2004年版では解凍できなかった。
使っている操作ソフトは、以前はベクターにあったのだが、現在行方不明に付お知らせできません。
http://www.csdinc.co.jp/archiver/
で差がしてください。

>>892は音が出ました。
ドライバーの問題が解決したので、MIDI関係の進捗が見込めます。

NoteOn 関係を探してみたら
http://www.g200kg.com/jp/docs/tech/midi.html
を発見。
種類が多いので、ハンドDTM、つまり、BasicソフトでMIDI-Massige を送信しながらの作曲は、敷居が高そう。
高校の時に、合計2時間ぐらい作曲を教えてもらって、何曲か作ってみたけれど
オルガンで弾いても幽霊の登場シーンのような不気味な曲になる。

896 :デフォルトの名無しさん:2016/10/31(月) 20:43:37.20 ID:+6lHFHa+
ちょっとMIDIから外れるのだが、
スーパーの文具売り場で、学校教育用カスタネット350円を買ってきた。
手持ちのオルガンと合わせて、作曲用機材はそろった。

897 :デフォルトの名無しさん:2016/10/31(月) 21:47:59.25 ID:+6lHFHa+
Function midiOutLongMsg()の使用で、
lpMidiOutHdr.lpData = VarPtr(MLMsg(0))
lpMidiOutHdr.dwBufferLength = UBound(MLMsg) + 1&
と、連続する領域にMIDIデータを保存することが必要となる。
>>818 で指摘があった通り、配列を確保すると各要素に約40バイトの付属データが伴う。
つまり、MSが規定している MIDIHDR 構造体のlpMidiOutHdr.lpDataの示すアドレスからlpMidiOutHdr.dwBufferLength個の連続した主記憶装置にMIDIデータを保存するための領域が確保できないことを示している。

これ関係での動作試験。
Dim12SB1.bas に保存。DimChk12.basより参照。

898 :デフォルトの名無しさん:2016/10/31(月) 21:48:57.96 ID:+6lHFHa+
Public Function StringPeek(ActionType As Long) As long
StringPeek = 0
Const LenZstring = 20
Dim As ZString * LenZstring AAzstring, BBzstring, CCzstring
Dim As String AAstring, BBstring
Dim As Long IAA, IBB, ICC
Dim As ZString Ptr AAzstringPTR

AAstring = ""
For IAA = 1 To LenZstring
AAstring = AAstring + Str$(IAA Mod 10)
Next IAA
AAZString = AAstring
AAzstringPTR = @AAZString
MessageBox(TakaHWND,"Hello ("+AAZString+")"+Str$(Len(AAzstring))+" , "+Str$(len(CCzstring)),"Messagebox caption",MB_ICONINFORMATION)
BBstring = ""
For IAA = 0 To LenZstring -1
IBB = Peek(UByte, AAzstringPTR + IAA)
BBstring = BBstring + Str$(IBB - &h30)
Next IAA
BBZString = BBstring
If (AAZString <> BBZString) Then
MessageBox(TakaHWND,"Hello ("+BBZString+") ("+AAzstring+")","Messagebox caption",MB_ICONINFORMATION)
Else
MessageBox(TakaHWND,"Hello ("+BBZString+")"+Str$(Len(AAzstring))+" , "+Str$(len(CCzstring)),"Messagebox caption",MB_ICONINFORMATION)
EndIf
End Function
とまー、何とか領域が確保できた。

899 :デフォルトの名無しさん:2016/10/31(月) 21:52:07.76 ID:+6lHFHa+
今度は構造体での指定と、データ転送。
Zstring で&h00-&hFFのデータを取り扱えるかどうか、Poke で転送しなければならないのかは不明。
今日はここまで。

900 :デフォルトの名無しさん:2016/11/01(火) 19:56:19.86 ID:B69ilPhK
Const MLMsgTSU = 64
Dim MLMsg() As UByte
Dim MLMsgString as String, MLMsgZString as ZString * MLMsgTSU
Dim As Long IAA, IBB, MLMsgSU
Dim lpMidiOutHdr As MIDIHDR: ' MIDIHDR 構造体
Dim ImidHndPTRPTR As LPHMIDIOUT
ImidHndPTRPTR = @ImidHndPTR: 'ImidHndPTR = @ImidHnd

IBB = Len(DataString): IAA = IBB Mod 2&
If (IAA <> 0&) Then DataString = Left$(DataString, Len(DataString) - 1&)
MLMsgSU = Len(DataString) \ 2& - 1&
If (MLMsgSU <= 0&) OR (MLMsgSU > MLMsgTSU- 3)Then
Else
ReDim MLMsg(0& To MLMsgSU): MLMsgString = ""
For IAA = 1& To Len(DataString) Step 2&
IBB =Val("&H" & Mid(DataString, IAA, 2&))
MLMsg((IAA - 1&) \ 2&) = IBB
MLMsgString = MLMsgString + Chr$(IBB)
Next IAA
MLMsgZString = MLMsgString
For IAA = 0& To MLMsgSU
If Asc(Mid$(MLMsgZString, IAA+1,1)) <>MLMsg(IAA) Then MessageBox(TakaHWND, "ZString("+Str$(MLMsg(IAA))+") と異なります"+Str$(IAA), "Messagebox caption", MB_ICONINFORMATION)
Next IAA
lpMidiOutHdr.lpData = VarPtr(MLMsgZString)
lpMidiOutHdr.dwBufferLength = MLMsgSU + 1&
lpMidiOutHdr.dwFlags = 0&
MSReturnCode = midiOutPrepareHeader(ImidHndPTR, @lpMidiOutHdr, Len(lpMidiOutHdr))

901 :デフォルトの名無しさん:2016/11/01(火) 20:03:22.69 ID:B69ilPhK
で、音が出た。Dim MLMsg() As UByte の場合と音が同じ。
とすると、Byte型配列の場合には、テータが連続して存在するのかもしれない。
前は、Dim MLMsg() As Byte だったんだが、Srt$()で-120とかの負数が表示される。
このため、as Byte から As Ubyte に変更した。

出た音は、Win2000の頃の音とは異なる。どこが原因なのかは特定できていない。

902 :デフォルトの名無しさん:2016/11/01(火) 20:06:39.53 ID:B69ilPhK
音量調節関係
Public Function BeepInfomation(ActionType As Integer, ByRef CurrentVolLeft As ULong, ByRef CurrentVolRight As ULong, ByRef IER As Long) As Long
'*-* 音量調節 'ActionType = {1;音量取得, -1;音量設定}
Dim BothVolumes As DWORD
Dim MSerrorCodeMM as MMRESULT

Dim WAVEOUT as HWAVEOUT__
Dim WAVEOUTptr as HWAVEOUT
Dim WAVEOUTptrPtr as LPHWAVEOUT
WAVEOUTptr = @WAVEOUT
WAVEOUTptrPtr = @WAVEOUTptr

BeepInfomation = 0
IER = 0
If (ActionType = 1) Then
MSerrorCodeMM = waveOutGetVolume(0, @BothVolumes)
CurrentVolLeft = LoWord(BothVolumes)
CurrentVolRight = HiWord(BothVolumes)
ElseIf (ActionType = -1) Then
BothVolumes = CurrentVolRight * &h10000 + CurrentVolLeft
MSerrorCodeMM = waveOutSetVolume(WAVEOUTptr, BothVolumes)
Else
IER = 10
End If
End Function
で音量変更ができた。次回はミュート関係の予定。

903 :717:2016/11/02(水) 09:40:51.99 ID:LbzPwQ+w
>>875
今回でいったん終わりの扱いでいい。
継続スレは要らないから関与しない。
要望が出ても俺は立てない。新しいスレが立っても不定期ROM化してる。

904 :デフォルトの名無しさん:2016/11/02(水) 20:04:49.63 ID:uE83Sw4M
起動*.bas (Gr03.bas)で存在しないルーチン名
Declare Function Beep03SC_CommonStringSet(ByVal hWin As HWND) As long
を定義して
IAA = Beep03SC_CommonStringSet(TakaHWND)
と参照すると、
Gr03.o:fake:(.text+0x42): undefined reference to `BEEP03SC_COMMONSTRINGSET@4'
と、存在しないサブルーチンを参照しているとの警告メッセージ゜が出る。
リンカーメッセージだと思うが、ルーチン名が大文字になっているので気が付きにくい。

905 :デフォルトの名無しさん:2016/11/08(火) 21:40:52.96 ID:johYCdoD
IAA = DispGRPinsideMove00(1, WidthDisp1, HeighDisp1, WidthPoint1, HeightPoint1)
の末尾に  as Long をつけて
IAA = DispGRPinsideMove00(1, WidthDisp1, HeighDisp1, WidthPoint1, HeightPoint1) as Long
と、末尾に修飾語をつけた場合のエラー
'File04.bas(77) error 3: Expected End-of-Line, found 'as' in 'IAA = DispGRPinsideMove00(1, WidthDisp1, HeighDisp1, WidthPoint1, HeightPoint1) as Long'
が発生する。 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)


906 :デフォルトの名無しさん:2016/11/11(金) 00:12:50.40 ID:U4vU37r5
ミキサー関係がさっぱりわからないので、他をいじり始めた。
Function (適当)(ByRef (適当な配列) as Long) as long
とやったらばエラーになった。
ルーチン内で数値を定義して返す変数を 一律 ByRef とすることは問題がある模様。

'C:\FbEdit\Projects\Samples\FindFile\FindFile.Bas
をちょっといじったらば、じばけするようになった。原因の特定ができていない。

File04.rc タブをクリック、IDD_DIALOg をクリック、IDC_LiST1をクリック
一番上の行の、資源をクリック、言語をクリック
表示されたLanguage に JANG_Japanese を選択
Sub langauage を未指定

で緑の▼をクリック
C:\tool\FreeBASIC\fbc -s gui "File04.bas" "File04.rc"

Error!
Line 13 of Resource Script (File04.RC):-
Sub language cannot be higher than 3Fh:-
1

OBJ file not made

Make done
とエラーメッセージが発生する。
どこか間違えて、ファイルを配置している模様。

907 :渡辺真:2016/11/11(金) 20:54:50.64 ID:AOIhEjGq
>>906
>'C:\FbEdit\Projects\Samples\FindFile\FindFile.Bas
>をちょっといじったらば、じばけするようになった。

コメントを日本語にしてみました。
http://makoto-watanabe.main.jp/freebasic/tipsFindFile.html
お試し下さい。

908 :デフォルトの名無しさん:2016/11/12(土) 15:52:56.30 ID:fBKZn4cJ
>>906 のつづき。
ディレクトリーボックス(だったかな)を作るべく、
IDC_TRV1 SysTreeView32 をFile01.rc に導入。
さて、値を定義しようとして、c:\FbEdit\*.rc, C:\Tool\FreeBASIC\*.rc
で、IDC_TRV1 や SysTreeView32 を検索したが見つからず。
http://search.yahoo.co.jp/search?p=SysTreeView32+OR+IDC_TRV+OR+TREEVIEW&aq=-1&oq=&ei=UTF-8&fr=top_ga1_sa&fl=0&x=wrt
てもそれらしきものは見つからず。
ファイル(ディレクトリー)選択ルーチンをどうしようかなというところ。

909 :デフォルトの名無しさん:2016/11/13(日) 23:54:50.63 ID:qSS9FuJA
>>907
複写修正した内容を全破棄、再度作り直して
全角文字も表示できるディレクトリー一覧が作成できました。

現在、
特定のディレクトリーに限って表示する
中止ルーチンの削除(変数 hThread の排除)
親ディレクトりーの表示と移動
子ディレクトりーの表示と作成
選択ディレクトりー内のファイル作成
チルドレン(子プロセス)で参照できるようなライブ化
に向けて作業中。

910 :デフォルトの名無しさん:2016/11/14(月) 21:35:11.21 ID:A2iFoZHP
QBASICに
PEEK POKEとマシン語呼び出しできる
機能はありますか?

911 :デフォルトの名無しさん:2016/11/14(月) 23:03:05.89 ID:eAKgqUSA
>>910 あったことは覚えているが、
制御を移す(ES:等の状態からQB使用値を取得する)方法がわからず
機械語の参照をしなかった。*.COMファイルをQBで作成(ハンドアセンブル)して
Autoexec.batやConfig.sys をQBで書き換えて、ドライバーとして登録して、Boot させて使っていた。

だから、答えられない。

912 :デフォルトの名無しさん:2016/11/16(水) 13:11:13.73 ID:d7D9Ori4
>>911
ESて何?

913 :デフォルトの名無しさん:2016/11/16(水) 22:27:19.99 ID:rTqrc2OY
>>912
http://ken-crate.blue.coocan.jp/asm/8086r.htm
ES エクストラセグメント・レジスター
    説明:DSの補助的なセグメント
DefSig(だったかな)でPEEK, POKEの対象セグメントレジスタを定義する。
通常は、
固定配置の文字列のセグメントとアドレスを指定し、POKEで命令を書き込む。
(命令忘却)で制御を移す。
「文字列のセグメントとアドレス」の取得方法がわからなかった。
また、CS:IP の指定方法もわからなかった。
そこで、Config.Sys にドライバーを定義して、マウス割り込みのInt (16?, 33?忘却)により道のルーチンをつけて、
機械語ルーチンが実行されるようにした。
PEEK でInt のアドレスが読み取れるので、ドライバーのアドレスもわかり、制御可能になった。

1秒を下回る時間経過を取得するだけしか使わなかった。
1秒単位の時間は、TIME命令で取得可能なのでこちらを使っていた。

914 :デフォルトの名無しさん:2016/11/17(木) 20:18:54.48 ID:PRY0yNKF
FreeBasic では、ちょっと手の込んだ論理演算をすると警告メッセージが出る。
DBool =((wfd.dwFileAttributes And FILE_ATTRIBUTE_READONLY) >0)
EBool = (Mid$(ComFileAttributeString, 32, 1) = "1")
DBool = ((wfd.dwFileAttributes And FILE_ATTRIBUTE_READONLY) >0) And (Mid$(ComFileAttributeString, 32, 1) = "1")
DBool = DBool Or (((wfd.dwFileAttributes And FILE_ATTRIBUTE_READONLY) >0) And (Mid$(ComFileAttributeString, 32, 1) = "1"))
File01.bas(286) warning 38(0): Mixing operand data types may have undefined results

915 :デフォルトの名無しさん:2016/11/17(木) 21:28:16.84 ID:oM0V2Zu8
>>914
演算子のオペランドがboolean型と整数型をミックスしているからだよ
boolean型同士の演算のみ、boolean型が返る
それ以外は整数型が返る(-1:true, 0:false)

>Mixing operand data types may have undefined results
複数のデータ型のオペランドの混同において、未定義の結果になる場合がある
って警告を出してくれている

>論理演算
気になるなら、オペランドの型をキャストして揃えればよい

916 :デフォルトの名無しさん:2016/11/19(土) 17:32:14.27 ID:7lQvEpwE
>>915 前半の意味が分からなかった。
後半はなんとか。
http://www.sophia-it.com/content/%E3%82%AD%E3%83%A3%E3%82%B9%E3%83%88

DBool = (((wfd.dwFileAttributes And FILE_ATTRIBUTE_READONLY) >0) and (Mid$(ComFileAttributeString, 32, 1) = "1"))
ABool = ABool or DBool: DBool = (((wfd.dwFileAttributes And FILE_ATTRIBUTE_HIDDEN)>0) and (Mid$(ComFileAttributeString, 31, 1) = "1"))
(以下略)
なんて調子に変更した。

マルチモジュール対応の便利機能を発見。
適当なBasかBIファイルを FbEdit で編集状態にして
プロジェクト(p)
 Insert Selected as #Include
とクリックすると、編集画面の位置に#Include命令の一文が挿入される。

ライブラリーとして、
D:\bas\Projects\Kako02\Mod\Taka01b.bas を使うときに Taka01b.bas 内で
#Include "TakaCom1.bi"
とやると、D:\bas\Projects\Kako02\Mod\TakaCom1.bi を読み取る。

917 :デフォルトの名無しさん:2016/11/19(土) 18:00:48.90 ID:7lQvEpwE
FbEdit で上から4行目に表示されるファイル名をクリックして
離さずに、左右に動かすと、ファイルの表示の順番が入れ替えられる。

マルチモジュールにすると、分類の仕方にもよるが、10-20個のファイルを
ライブラリーや共通ルーチンとして使用する。
編集が済んだからと言って、外してしまうとルーチンが見つかりません、とリンカーと思われるメッセージが現れるので外せない。
右端の見えない位置に山積にしてしまうという、手法が使えるようになる。

918 :デフォルトの名無しさん:2016/11/19(土) 20:30:39.66 ID:T/wP/yiF
数年プログラミング言語やって気づいたことは、
ソースコードのほとんどは「覚えゲー」でしかない。
特にJava系はそう、自分のアイデアはなくひたすらきめまりきった
ものを書くだけだ。
その中で唯一頭を使って自分のオリジナリティを発揮できる
領域がある。
if() while() の () の中だ、for()があるのにwhile()も
あるのはこのためだ。
これはLinuxソースとか解読してるとガチ。
あと、いきなりプログラミング言語で何かしら作ろうとしても
思いのほかつまらない、其れよりはVim とかEmacsをまず練習
する、
あとWikipediaエディタで、コードで複雑な数学のの書き方を覚える、
一見回りくどいようだがやってみればわかるけどこれがガチで面白い。

919 :デフォルトの名無しさん:2016/11/20(日) 09:04:57.11 ID:M6Gp69qv
>>909のつづき。
中止ルーチンの削除(変数 hThread の排除)
に成功した。されど、初期設定ルーチンが成功していない。

920 :デフォルトの名無しさん:2016/11/20(日) 09:43:18.27 ID:M6Gp69qv
>>918 
最近の言語はライブ化が進んでいるからそんなところかな。
16ビット整数演算までのライブで、16ピット超えの整数を取り扱う方法の宿題を出したらば
ライブに登録がなくできません
32ビット ライブを使って簡単にできるのになぜこんなことを要求するのか
と、出題の間違いを指摘する回答が目立った
なんて、話を何かで読んだ。
主題の意図は、論理変数の配列を使って無限な倍精度演算ルーチンを作れという内容なんだけど。

整数演算は比較的簡単に作れるけど、三角関数以上になると有効桁が取れなくて苦労する。
8087系を超える有効桁を求めるとかなりきつくなる。

921 :デフォルトの名無しさん:2016/11/20(日) 09:44:02.32 ID:M6Gp69qv
Vim たぶん
https://ja.wikipedia.org/wiki/Vim
Emacs たぶん
https://ja.wikipedia.org/wiki/Emacs
Wikipediaエディタ たぶん
https://ja.wikipedia.org/wiki/Wikipedia:%E3%83%93%E3%82%B8%E3%83%A5%E3%82%A2%E3%83%AB%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BF%E3%83%BC
だろうけど、わたししゃ使いこなせないだろうな。

今はサクラ
https://ja.wikipedia.org/wiki/%E3%82%B5%E3%82%AF%E3%83%A9%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BF
を使っているけど、使ったことがないメニューが半分を超える。
MSのEDLINE
https://ja.wikipedia.org/wiki/EDLIN

https://ja.wikipedia.org/wiki/%E3%83%A1%E3%83%A2%E5%B8%B3
がつかものにならなくて、自前で作ったけど低性能。
結局、いろいろ試して、物理制限がほとんどないサクラに落ち着いた。
フォートラン用のラインエディタ EDI.PG のサブセットぐらいの機能しか使っていない。

変な癖のある目倉うち、正規の
https://ja.wikipedia.org/wiki/%E3%82%BF%E3%83%83%E3%83%81%E3%82%BF%E3%82%A4%E3%83%94%E3%83%B3%E3%82%B0
ではなく(指がぶつかる・指が短くて届かない)、右手又は左手で書籍や紙をなぞりながら、反対側の片手だけを使って(キーボートの角に小指が親指をひっかけてホームポジションとする)、キーボートやディスプレイを見ないで
ひたすら紙だけを見ながら打ち込む方法で、この年まで乗り切ってしまった。

小脳や運動前野の学習が成立したら、簡単には打ち方を変えられないから、最初のエディタの選択には十分注意すること。
この使い方を一生背負ってゆくことになるから。

922 :デフォルトの名無しさん:2016/11/20(日) 14:06:06.88 ID:4zKqcZHF
当時流行したBASICはFORNEXTであっても複数文に
及んで機能していたわけではなく、それぞれ独立して機能していた
FORに対するNEXTではないというエラーメッセージがあるのが
その証拠である。
C言語のような括弧書きで複数行を纏める言語になってから
BASICはBASICではなくなっている。

923 :デフォルトの名無しさん:2016/11/20(日) 23:01:51.93 ID:en+u1OOF
http://www.dotup.org/uploda/www.dotup.org1068514.txt.html

現在使っている数値処理関係のリンク集です。
数学の話題が出たから、UPします。

現在はわかりませんが、かってはLISPの信者って結構いました。
https://ja.wikipedia.org/wiki/LISP
かってはLISPだけだったのです。無限倍精度演算が可能な言語は。

もし、数処理にあきたら、使える言語で無限倍精度演算に挑戦してみてください。
1学年後輩、3年先に卒業した人ですが、MS-DOSの機械語で無限倍精度演算に挑戦した人がいました。
原因は、
デカコンを使って計算していたら、4日たっても終了せず、5日目の朝に終了しました。
またされた情報処理関係教授に暴行を受けました。
それて、他学科のMS-DOS機(WinよりもUnixよりもはるかに速い)を借りて、無限倍精度演算を行いました。
リンク集には、類似の問題の解説が含まれています。

924 :デフォルトの名無しさん:2016/11/20(日) 23:10:37.92 ID:en+u1OOF
狂気の2桁2乗計算法
13*13 = (3*3) + 2 * (3 * 10) + 10 * 10 = 9 + 60 + 100 = 169
という(X + Y) * (X + Y) = (略)
となる、中学校か高校で習う公式を使った計算方法。
これを手計算で使うと、狂人認定となる。
sssp://o.8ch.net/jcf7.png

925 :渡辺真:2016/11/21(月) 00:30:17.07 ID:hydzNU9U
>>923
>使える言語で無限倍精度演算に挑戦してみてください。

FreeBASIC では、任意精度計算ライブラリ(GMP)を使えます。
http://makoto-watanabe.main.jp/freebasic/ExtLibgmp.html

926 :デフォルトの名無しさん:2016/11/21(月) 20:14:32.82 ID:o66uhtT9
>>925 ライブ化が進んでいる。
80?87を使わないで、80?87を超える有効桁が取れる環境であってほしい。
今は、FreeBasic の雰囲気をつかむ、無茶な操作法を見つけ出す、ことで手一杯なので、そっちまで手が回らないけど
30番系統、30-36番のライブラリーが、無限倍精度のライブなので、これを廃止できるかもしれない。

>>909
チルドレン(子プロセス)で参照できるようなライブ化
の一つとして、
Xクリック終了を、異常停止。Button クリック終了を正常停止。
とするための「Button クリック終了」ルーチンが組めた。
詳しくは、
http://eternalwindows.jp/winbase/window/window05.html
参照。
Case IDC_BTN4
'MessageBox(TakaHWND, "Hello 終了処理", "Messagebox caption", MB_ICONINFORMATION)
'declare function PostMessageA(byval hWnd as HWND, byval Msg as UINT, byval wParam as WPARAM, byval lParam as LPARAM) as WINBOOL
MSReturnCode = PostMessage(hwnd, WM_CLOSE, 0, 0)
return 0

927 :デフォルトの名無しさん:2016/11/22(火) 20:29:45.11 ID:y8LZzMie
>>925 をみたら、三角関数などを求めるルーチンがないので、ヒントだけ
https://ja.wikipedia.org/wiki/%E3%83%86%E3%82%A4%E3%83%A9%E3%83%BC%E5%B1%95%E9%96%8B

1.マクローリン展開(テーラー展開の特異解?、高校の工業数学の教書には乗っていたはずhttp://mathtrain.jp/maclaurin )して、関数を級数に置き換える。
2.級数を計算する。
有効桁に注意 http://www.nagaoka-ct.ac.jp/~araki/s/sisoku.html
たしか、この前やった時には、COS()が不安定で泣いた。
7.2桁(単精度実数)で、50項から100項まで計算しないと誤差がひどい。

高速化するならば、近似解(ニュートン法)等いろいろある。
http: // ayapin-film . sakura . ne . jp /LJ/Docs/27th.pdf
愛用の方法は
http://jr4pdp.blog.enjoy.jp/myblog/picmicom/
三角関数は時間がかかると思われますので、sin()の0度から90度までを予め、PCで計算し、その結果を10000倍した数値を整数として、配列に記憶させ、sin(deg)はそのまま取り出し、cos(deg)はsin(90-deg)で取り出す事にしました。
とあるように、
計算値をファイルに保存しておいて、ファイルから値を読みだす
という方法。電卓並みの速度(1秒以下)が得られる。

928 :デフォルトの名無しさん:2016/11/22(火) 23:55:18.03 ID:W05eTR51
『電子計算機のための数値計算法III』(「数理科学シリーズ 5」、培風館、1970)
には、三角関数に関する近似式がいろいろと掲載されています。
その中で、テイラー展開によるsinとcosの計算法があり、
ただ、三角関数の周期性を利用して|x|<π/2の範囲で計算すると
精度もよく、計算も速いと書いてあります。
それ以外に、最良多項式近似式も出ています。
いまでは、入手が難しいかもしれませんが、数値計算用サブルーチンを
作りたい人は一読の価値があるでしょう。

929 :デフォルトの名無しさん:2016/11/23(水) 22:19:02.11 ID:V77GbOhM
>>928 この本の話は、学生時代から聞いていて、何回か入手を試みたがすべて失敗。
一番近くの図書館が都内というありさま。
高校の副読本(線形代数・微積方程式等)ですら、公立図書館にはおいていない。

930 :デフォルトの名無しさん:2016/11/23(水) 22:37:15.00 ID:V77GbOhM
>>922 QBがらみで思い出したけど
For-Next ループ内で、Goto 先をNext の行番号にすると、おかしなことが発生したような記憶がある。
Nextで複数のループ変数をまとめないで、
一つのループ変数に対して一つのNext文を
拡張Doループは、GosubかCallか数値関数のみ
IF等を使って、あるいは、マルチステートのNext は暴走しやすいので、Nextは先頭に

なんてやっていた。

931 :デフォルトの名無しさん:2016/11/23(水) 23:54:37.72 ID:qZZB3vTy
>>929
全国の公立図書館は、お互いに本の貸し借りをする協定を結んでいますので、
お近くの公立図書館にない場合は、リクエストすると取り寄せてもらうことが
可能です。
もし都立中央図書館にあるならば、リクエストする際に都立中央図書館にありますと
伝えるといいでしょう。
国会図書館は全国の公立図書館に貸し出してくれますが、ただその場合
取り寄せてくれた図書館内での閲覧のみ、コピーは可能ですので、
借り出すことはできません。

932 :デフォルトの名無しさん:2016/11/23(水) 23:57:30.39 ID:qZZB3vTy
>>931
ねんの為に「日本の古本屋」で検索したら、3巻揃いが妥当な値段で出品されていました

933 :渡辺真:2016/11/25(金) 23:28:20.51 ID:tPNxGDnY
>>927
>925 をみたら、三角関数などを求めるルーチンがない

本家の掲示板にプログラム例がありました。
http://www.freebasic.net/forum/viewtopic.php?t=23225
「new header file GMP」の2つめのコメント
by dodicat ≫ Jan 17, 2015 1:11
の中にあるプログラムです。

934 :デフォルトの名無しさん:2016/11/27(日) 01:33:25.35 ID:xONUe7m9
>>909 の
選択ディレクトりー内のファイル作成
チルドレン(子プロセス)で参照できるようなライブ化
の2点を除いて、作成終了。たぶん。
1-2回試しただけなので、本格的バグ取りはしていない。

リストボックスの特定の項目を「選択」にしていするには
Astring = left$(szDefPath, 1)
nInx = instr(ComDevString, Astring) - 1
IF (nInx < 0) then nInx = -1
SendDlgItemMessage(hWin, IDC_LST3, LB_SETCURSEL, nInx, Cast(LPARAM, @buff)): '単項目だけ選択可能なときに特定の項目を選択する
な調子で。「 Cast(LPARAM, @buff)」は何かあるかもしれないので、つけた。意味などはわからない。

V.B.のドライブボックス相当は作れた。
ComDevString(以下ではiDevString)の定義は、
iDevString = ""
For IAA = Asc("A") to ASC("Z")
DevString = chr$(IAA) + ":\"
IBB = getVolInfo(DevString, VSNoString, FlStmString, MaxPathLenLong, DevTypeLong)
IF (MaxPathLenLong = 0) then
'ドライブが存在しない
Elseif (DevTypeLong = 0) and (ActionType = 2)Then
else
iDevString = iDevString + chr$(IAA)
End if
Next IAA
な調子で収集。

935 :デフォルトの名無しさん:2016/11/27(日) 01:42:35.88 ID:xONUe7m9
Public Function getVolInfo(DevString As String, ByRef VSNoString As String, ByRef FlStmString As String, ByRef MaxPathLenLong As Long, ByRef DevTypeLong As Long) As Long
Const TakaSubRoutineNo as long = 3&
'*-* ボリウムシリアルナンバーとファイルシステムを取得する
'VSNoString (出)ボリウムシリアルNo
'FlStmString (出)ファイルシステム名
'MaxPathLenLong (出)最大パス長さ, 0;障害
'DevTypeLong (出) 0;(障害), 1;交換可能ディスク(FD/MOなど), 2;固定ディスク, 3;リモート or ネットワークドライブ, 4;CD_ROMドライブ, 5;RAMディスク, (他);未定義}

'Const MAX_PATH& = 260
Const FileSystemNameBufferLenULng As ULong = 32&
Dim RootPathNameString As String 'ルートディレクトリ
Dim strVolumeNameBuffer As String * MAX_PATH = space$(MAX_PATH) 'ボリューム名バッファ
Dim VolumeSerialNumberULng As ULong 'ボリュームのシリアル番号
Dim MaximumComponentLengthULng As ULong 'ファイル名の最大の長さ
Dim lngFileSystemFlagsULong As ULong 'ファイルシステムのオプション
Dim FileSystemNameBufferString As String * FileSystemNameBufferLenULng = space$(FileSystemNameBufferLenULng) 'ファイルシステム名を格納するバッファ
Dim As Long IErrorLong
Dim As String AAString

936 :デフォルトの名無しさん:2016/11/27(日) 01:46:06.53 ID:xONUe7m9
TakaDammyReturnCode4 = TakaErrorPointSach(IniNameString, TakaSubRoutineNo)
getVolInfo = 0

RootPathNameString = Left$(DevString, 2) & "\" + Chr$(&H00)
AAString = ""
IF (Mid(RootPathNameString, 2,1) <> ":") then
AAString = AAString & "(" & RootPathNameString & ")" & "デバイスの指定がありません。"
else
IErrorLong = GetVolumeInformation(RootPathNameString, strVolumeNameBuffer, MAX_PATH, @VolumeSerialNumberULng, @MaximumComponentLengthULng, @lngFileSystemFlagsULong, FileSystemNameBufferString, FileSystemNameBufferLenULng)
IF (IErrorLong = 0) then
'障害発生
end if
If (lngFileSystemFlagsULong) Then
'(2005.09.05 済) Sub getVolInfo() ボリウムシリアルNoを4桁から8桁に変更
VSNoString = NHexStringUL(VolumeSerialNumberULng, 8): 'ボリウムシリアルNo
FlStmString = NulCatString(FileSystemNameBufferString): 'ファイルシステム名
MaxPathLenLong = MaximumComponentLengthULng: '最大パス長さ

If (lngFileSystemFlagsULong And FS_CASE_IS_PRESERVED) Then AAString = AAString & "ファイル名大文字小文字維持"
If (lngFileSystemFlagsULong And FS_CASE_SENSITIVE) Then AAString = AAString & "ファイル名大文字小文字区別"
(中略、こんな調子で、属性フラグを作成しているのだが、ロボットチェックに引っかかってかけないんだわ) 

937 :デフォルトの名無しさん:2016/11/27(日) 01:47:29.12 ID:xONUe7m9
If (lngFileSystemFlagsULong And FILE_SUPPORTS_SPARSE_FILES) Then AAString = AAString & "スパースファイル"
If (lngFileSystemFlagsULong And FILE_VOLUME_QUOTAS) Then AAString = AAString & "ディスククォータ"
Else
' エラーを表示
AAString = AAString & "(" & RootPathNameString & ")" & "属性は取得できません。"
VSNoString = ""
FlStmString = ""
MaxPathLenLong = 0&: '(2008.05.30 済) Sub getVolInfo() 障害時に0を返すように変更
EndIf
EndIf

IF (Mid(RootPathNameString, 2,1) <> ":") then
IErrorLong = 0
else
'declare function GetDriveTypeA(byval lpRootPathName as LPCSTR) as UINT
IErrorLong = GetDriveType(RootPathNameString)
EndIf
DevTypeLong = IErrorLong - 1&
If (DevTypeLong < 0&) Then DevTypeLong = 0&
End Function

938 :デフォルトの名無しさん:2016/11/27(日) 11:56:15.91 ID:lZFUoVdV
>>933
Function equals overload(a As mpf_t,b As mpf_t) As Integer
のように、型「mpf_t」をどこかで定義している模様。手持ちのFreeBasic 関係ファイルには未発見。

検索では、
http://math-www.uni-paderborn.de/~aggathen/vorl/2004ws/sem/markus-steinborn.pdf#search=%27Type+mpf_t+gmp.bi%27
http://www-it.sci.waseda.ac.jp/teachers/w405201/CPR2/cprogram15.pdf#search=%27mpf_t+gmp.bi%27
がヒット。
前者はドイツ語なので、英語よりも理解できない程度の語学力なので詳細不明。
後者は日本語ですが、C言語の解説です。記載頁64, アクロバット67頁右段に
>任意精度の整数・有理数・実数をサポートしています.実数型はmpf_tと宣言します.
とあり、BIファイルを見つけてFreeBasic用に変換しないと使えないでしょう。

>この不正確さを払拭するには,エネルギー保存が満たされるような常微分方程式の解法アルゴリズムを採用するといった手段が王道とされています.がしかし,精度を100桁くらいに増やして計算してみるといった力技も捨てがたい魅力があります.
とあるように、
数学や物理を専門としない人(数学を専門としない人々)にとっては、力技に頼るしかない。
数学なんて、難しくてわからないから、多倍精度演算で、小中学校で学ぶ範囲の数処理を使って、えぃ!ゃー!、とやる方法です。

939 :渡辺真:2016/11/27(日) 21:40:18.83 ID:22yXElOy
>>927
>925 をみたら、三角関数などを求めるルーチンがない

日本語訳を追加しました。
http://makoto-watanabe.main.jp/freebasic/tipsGmpFunctions.html
翻訳していて、内容のすごさに感激しました。

940 :デフォルトの名無しさん:2016/11/29(火) 21:43:47.63 ID:MxHdA4L3
>>909 の
選択ディレクトりー内のファイル作成
が作成終了。
残るは、ライブ化。

>>939
中身を試してみることはやっていませんが、
LISPでコケるのが、多倍精度演算ルーチンの作成で、多くの人々が数値計算から去ってゆきます。
>採用するといった手段が王道
なんてことは、デカコンがいくらでも使える人々ならやっているわけで
素人同然の学部生ができないのです。
一部の人間だけが独占して、てかい面している(暴行すらも許される)世界です。
高卒程度のズブのド素人が、数値計算の世界に手を突っ込めるということは、素晴らしいことです。

母校の情報処理関係学科の定員は45名、卒業生は1桁。30名以上が毎年中退してします。
同級生の奥様も、役人やっている通称お姉さまも、結局中退しました。
数値処理の世界を多くの人々に広げられれば良いですね。

941 :デフォルトの名無しさん:2016/12/01(木) 21:57:52.24 ID:FgpY/gwj
コマンド行、実行形式のファイル名の後に付ける修飾語、コマンドラインについてなんだけど
http://makoto-watanabe.main.jp/freebasic/PgCommand.html
スイッチ命名法が慣れ親しんだ 360とは異なる。
360 では、
/ スイッチの先頭を示す記号で、その後スイッチがついて、修飾語が必要な場合には:て゛区切って、空白で終わる。
/Switch:9999
スイッチの前に目的語が付く。
たとえば、実行形式のTARA.PG を起動するときに
Tara.PG /PI:20 と優先度20で実行する。
末尾指定のスイッチ。

FreeBasic では、
-x foobar.exe -m baz foo.bas bar.bas baz.bas
と先頭指定なんだよ。

スイッチの解釈ルーチンをどうしよう?。
なれていないから、スイッチの文法がよくわからぬ。
コンパイルのコマンド行は、多分作成できない。
FbEditでも、スイッチの指定をいじるとまともにコンパイルされない。

942 :デフォルトの名無しさん:2016/12/01(木) 22:40:35.97 ID:FgpY/gwj
>>941 でスイッチの解釈が問題になった理由
http://pepper.is.sci.toho-u.ac.jp/index.php?plugin=attach&refer=%BB%B3%C6%E2%A4%CE%BC%F8%B6%C8%A4%CE%A5%DA%A1%BC%A5%B8%2F11%BD%A9%2F%A5%AA%A5%DA%A5%EC%A1%BC%A5%C6%A5%A3%A5%F3%A5%B0%A5%B7%A5%B9%A5%C6%A5%E0&openfile=ss_04.pdf
#search=%27%E8%B3%87%E6%BA%90+%E5%8D%A0%E6%9C%89+%E8%A7%A3%E6%94%BE%27
がわかりやすいかな?
ファイル選択ルーチンをライブ化すると、複数のタスクから要求が来るわけで、
一つのタスクが終了するまで、他のタスクからの要求を排除しなければならない。

File01.exe がファイル選択ライブで、
作業指示ファイル File01.ini に処理の詳細を記載して、File01.exeを子プロセスとして起動する。

File01.ini のフラグを見て、使っていないのであれば使用する、とするフラグを立てて、実行する。
FreeBasic では、子プロセスが終了するまで待ち状態になる起動方法がサポートされているので、タスクの切り替えはシステム任せとなる。
ユーザーである File01.exe が起動されたときに、
非特権ユーザーからの起動では、ファイルを選択して終了、だけで済むのだが
特権ユーザーからの起動では、ファイルを選択するという作業をしないで、待ち状態の管理をしなければならない。
「待ち状態」の管理、つまり、
File01.ini の全削除
File01.ini の占有情報の破棄
File01.ini の異常値(他のユーザー(タスク)に開放するから、異常値を指定される場合もありうる)の修正
あたりをしなければならない。
特権で起動されたのか、一般として起動されたのか、を区別するために、スイッチが必要になってくる。

スイッチを昔ながらの360方式(すでに作成済み、変数名を修正したら動いたライブに入っている)を使うか、
FreeBasic 方式に合わせたスイッチを指定するようにするのか
が今迷っている内容。

943 :デフォルトの名無しさん:2016/12/01(木) 23:46:44.16 ID:FgpY/gwj
>>939 gmp 6.1.0(gmp-6.1.0.7z) ?? かな https://www.mediafire.com/?5y8d3rqwyx32ocv
http://users.freebasic-portal.de/frisian/GMP/gmp.7z 内に入っていた ReadMe.txt の日本語解読。

gmp.h.org
The orignal .h file produced by GCC
GCCが作成した本来の.hファイル

gmp.h
The edited .h file that was used for FBfrog
FBfrogが使用可能になるように編集した.hファイル
(「FBfrog」は、FreeBasic 関係の何かのソフトっぽい。)

Online code was removed since it will not work in FreeBasic
FreeBasicでは動作しないため、オンラインコードが削除されました

gmp.bi.fbfrog
The .bi file produced by FBfrog from gmp.h
gmp.hからFBfrogによって生成された.biファイル

gmp.bi
The final file with some alterations and additions
複数の変更や追加を経た最終ファイル

libgmp.a
Static libary file of GMP build with: --disable-shared --build=i486-pc-mingw32
「--disable-shared --build=i486-pc-mingw32」を使ってビルドされたGMP静的ライブラリファイル
Passed all checks
すべての検査が終了した。

944 :デフォルトの名無しさん:2016/12/01(木) 23:48:07.06 ID:FgpY/gwj
>>943 のつづき。
Make tuneup failed (complaints about missing file)
調整には失敗した(不足しているファイルについての問題)。

test_gmp.bas
A (sort of) program I made to test the new header file, don't take it to serious.
新しいヘッダファイルをテストするために作った(ある種の)プログラム。 複雑にしないでください。

D:\FreeBASIC-1.00.0-win32
+--bin
+--doc
+--inc <== bmp.bi needs to go here (rename or save the old gmp.bi file if you want to preserve it).
bmp.bi はここの保存する必要がある(古いファイルを保存したい場合には、名前を変更するか他の場所に保存する)。
\--lib
\--win32 <== libgmp.a needs to go here (if you have installed a libgmp.a by yourself rename/save the old one).
libgmp.a はここの保存する必要がある(libgmp.a を使用したい場合には、名前を変更するか他の場所に保存する)。
The gmp.bi file need two files to work properly, long.bi and stddef.bi.
gmp.biファイルが正しく動作するために2つのファイル、long.bi と stddef.biが必要です。

945 :デフォルトの名無しさん:2016/12/02(金) 00:11:55.45 ID:loKG2Fku
ちょっと前に話題にした、INI ファイル関係。
キーを削除する場合
IErrorRetCodeLong = WritePrivateProfileString(SecNameString, KeyNameString, 0, FileString)
セクションを削除する場合
IErrorRetCodeLong = WritePrivateProfileString(SecNameString, 0, 0, FileString)
Visual Basic では、VBnul という定数を指定していた。ヌル "" を指定すると削除されず
「なんたら=」とか「=」が保存された。即値の0を指定する必要がある。
IErrorRetCodeLong = GetPrivateProfileSection(SecNameString, strValue, StrLength, FileString)
IErrorRetCodeLong = GetPrivateProfileSectionNames(strValue, StrLength, FileString)
のような&h00区切り文字列の場合は、分離するサブルーチンを作成せず、読み取った直後に分離するようにした。
読み取りルーチンは、引数の種類で分けて、16種類になってしまった。
うまく書き込みがされているかどうかは試験していないもの(String 以外の型の文字変数)もある。

946 :デフォルトの名無しさん:2016/12/03(土) 12:38:01.18 ID:HN6NcG00
http://makoto-watanabe.main.jp/freebasic/PgOpen.html
ock_type ディスク・ファイルに、他の処理(スレッドやプログラム)からアクセスするときの制限を課します。下記のいずれかを使います。
Shared (ファイルは、他の処理から自由ににアクセスできます。)
Lock [Read] [Write] (読み書き両方について、他の処理からのアクセスを否定することができます。)

タスクの重複起動を禁止するために
実行形式ファイル DimChk16.exe を占有することを模索。
書き込みのみを禁止する方法は発見できたが、読み取りを禁止する方法は発見できず
File = Exepath + "\AAA.txt"
FileNoLong = FreeFile
'Open File For Input Lock Read Write As #FileNoLong (読み書き可能)
'Open File For Input Lock Read As #FileNoLong (読み書き可能)
'Open File For Input Lock As #FileNoLong (読み書き可能)
'Open File For Input, Read As #FileNoLong (エラー)
'Open File For Input Read As #FileNoLong (エラー)
'Open File For Input, Lock Read As #FileNoLong (エラー)
'Open File For Binary As #FileNoLong: '他タスクによる書き込みだけ禁止
'Open File For Binary Shared As #FileNoLong: '他タスクによる書き込みだけ禁止
Open File For Binary Lock As #FileNoLong: '他タスクによる書き込みだけ禁止
MessageBox(TakaHWND,"Hello ","Messagebox caption",MB_ICONINFORMATION)
Close #FileNoLong

MessageBox()でタスクを止めておいて、エクスプローラーから、メモ帳を使って、File をOPEN, 読み取って、編集して、書き込む、という方法で検査。

If (App.PrevInstance) Then に変わる手法を探している。
'http://microsoft.public.jp.access.narkive.com/VGCEWUUt
が理解できた方法だが、よくわからないので、INIファイルを使う方法を検討中
起動直後にRename する方法もあるが、分割LOADをWinが使っていた場合に、絶望的な状況に陥りやすい。

947 :デフォルトの名無しさん:2016/12/03(土) 22:43:19.48 ID:HN6NcG00
>>946 のつづき。INIファイルを使った重複起動の抑制ルーチン
参照側 Function WndProc() 内。 BootCountとIAA はLOCALで宣言。
' Case WM_INITDIALOG
' hWnd = hWin
' TakaHWND = hWin: '大域変数
' IAA = DoubleBootStates(-1, BootCount)
' If (DoubleBootChick(BootCount)) Then
' '初回起動
' IAA = taka01b_CommonStringSet(TakaHWND)
' IAA = Taka01H_CommonStringSet(TakaHWND)
(等の起動処理、初期化など)
' Else
' '重複起動 → 終了処理
' MessageBox(TakaHWND, "Hello 終了処理", "Messagebox caption", MB_ICONINFORMATION)
' MSReturnCode = PostMessage(hwnd, WM_CLOSE, 0, 0)
' return 0
' End If
' Case WM_DESTROY
' IAA = DoubleBootStates(1, BootCount)
' PostQuitMessage(NULL)
' '
' Case Else

948 :デフォルトの名無しさん:2016/12/03(土) 22:44:41.89 ID:HN6NcG00
Public Function DoubleBootChick(ByRef BootCount as Long) as Bool
Const TakaSubRoutineNo as long = 20&

Dim As Long IAA
'Dim As String AppExeNameString (大域)
TakaDammyReturnCode4 = TakaErrorPointSach(IniNameString, TakaSubRoutineNo)
If (CommonStringSetFig = 0) then IAA = Local_CommonStringSet(ReadActionType)
'Const DoubleBootSecName As String = "DoubleBoot" (大域)
IAA = IniFileRead2(CtrlFile5String, DoubleBootSecName, AppExeNameString, BootCount)
DoubleBootChick = (BootCount = 1)
End Function

949 :デフォルトの名無しさん:2016/12/03(土) 22:54:02.60 ID:HN6NcG00
Dim Shared CtrlFile5String As String: '重複起動検査用
Const IniNameString as String = "taka01b"
Dim Shared AppExeNameString As String

Private Function Local_CommonStringSet(ActionType as Integer) As long
Const TakaSubRoutineNo as long = 2&
'このファイルを使用するときに初期化する必要がある内容
IF (CommonStringSetFig = 0) then
CommonStringSetFig = 1
Local_CommonStringSet = 0
CtrlFile5String = Exepath + "\" + IniNameString + ".Txt"
AppExeNameString = Right(Command( 0 ), Len(Command( 0 )) - InStrRev(Command( 0 ), "\"))
CommonStringSetFig = 2
else
Local_CommonStringSet = 1
end if
End Function

950 :デフォルトの名無しさん:2016/12/03(土) 22:55:18.26 ID:HN6NcG00
Public Function DoubleBootStates(ActionType as Integer, ByRef BootCount as Long) as Long
Const TakaSubRoutineNo as long = 20&
'BootCount (出)

Dim As Long IAA
'Dim As String AppExeNameString (大域)
TakaDammyReturnCode4 = TakaErrorPointSach(IniNameString, TakaSubRoutineNo)
DoubleBootStates = 0
IF (CommonStringSetFig = 0) then IAA = Local_CommonStringSet(ReadActionType)
'Const DoubleBootSecName As String = "DoubleBoot"
Select Case ActionType
Case -1 '開始
IAA = IniFileRead2(CtrlFile5String, DoubleBootSecName, AppExeNameString, BootCount)
BootCount = BootCount + 1
IAA = IniFileWrite(CtrlFile5String, DoubleBootSecName, AppExeNameString, str$(BootCount))
Case 0 '破棄
IAA = IniFileKeyDelete(CtrlFile5String, DoubleBootSecName, AppExeNameString)
Case 1 '終了
IAA = IniFileRead2(CtrlFile5String, DoubleBootSecName, AppExeNameString, BootCount)
BootCount = BootCount - 1
IAA = IniFileWrite(CtrlFile5String, DoubleBootSecName, AppExeNameString, str$(BootCount))
Case Else
IAA = IniFileRead2(CtrlFile5String, DoubleBootSecName, AppExeNameString, BootCount)
End select
End Function

951 :デフォルトの名無しさん:2016/12/03(土) 22:59:53.72 ID:HN6NcG00
Public Function IniFileWrite(FileString as String, SecNameString as String, KeyNameString as String, KeyValString as String) as long
Const TakaSubRoutineNo as long = 20&
Dim As Long IErrorRetCodeLong
'Win 2000 では、&H09が使用可能、Win98では不可
TakaDammyReturnCode4 = TakaErrorPointSach(IniNameString, TakaSubRoutineNo)
If (Len(FileString) = 0&) Or (Len(SecNameString) <= 0&) Or (Len(KeyNameString) = 0&) Or (Len(KeyValString) = 0&) Then
IniFileWrite = 1
Else
IErrorRetCodeLong = WritePrivateProfileString(SecNameString, KeyNameString, KeyValString, FileString)
IniFileWrite = abs(sgn(IErrorRetCodeLong))-1
End If
End Function

Public Function IniFileRead2(FileString As String, SecNameString As String, KeyNameString As String, ByRef KeyValLong as Long) as Long
Const TakaSubRoutineNo as long = 25&
'IniFileRead の倍精度整数用
Dim strValue As String * IniBuffSize: '1024
Dim as Long StrLength, IErrorRetCodeLong, IAA
TakaDammyReturnCode4 = TakaErrorPointSach(IniNameString, TakaSubRoutineNo)
StrLength = Len(strValue)
IniFileRead2 = 0
If (Len(FileString) = 0) Or (Len(SecNameString) <= 0) Or (Len(KeyNameString) <= 0) Then
KeyValLong = 0&
Else
IErrorRetCodeLong = GetPrivateProfileString(SecNameString, KeyNameString, "", strValue, StrLength, FileString)
KeyValLong = Val(strValue)
End If
End Function

952 :デフォルトの名無しさん:2016/12/03(土) 23:03:27.50 ID:HN6NcG00
Public Function IniFileSecDelete(FileString As String, SecNameString As String) As Long
Const TakaSubRoutineNo as long = 32&
Dim As Long IErrorRetCodeLong
TakaDammyReturnCode4 = TakaErrorPointSach(IniNameString, TakaSubRoutineNo)
IniFileSecDelete = 0
If (Len(FileString) = 0) Or (Len(SecNameString) <= 0) Then
Else
IErrorRetCodeLong = WritePrivateProfileString(SecNameString, 0, 0, FileString)
End If
End Function

>>947-952(たぶん) がINIファイルを使った重複起動禁止

953 :デフォルトの名無しさん:2016/12/04(日) 12:12:45.27 ID:Dpp2DwtE
FreeBasic 型の「 -x foobar.exe -m baz foo.bas bar.bas baz.bas」のようなコマンドラインの解釈ルーチンが完成。
やってみたら、ユーザー依存が強い(スイッチに前置詞・後置詞があるかはユーザー側で判断)ので、
空白と「-」を区切り文字とする配列を作っただけ。
スイッチの解釈(スイッチと語句との分離)は、ユーサー任せで、ライブラリーは関与できない。
関与するとしたら、スイッチの後置詞をライブに登録する必要が出てくるから。
スイッチの後置詞内にスイッチを指定する、なんて処理は比較的容易に作れるだろう。
例 SPL 05/DV DK05/VL:trtrta をシスオペに指示する Mount 命令の場合には
/を!に, :を; に書き換える必要がある。これやらないと、Mount命令のスイッチとして解釈してしまうから

ナルト(アットマーク)処理、
http://makoto-watanabe.main.jp/freebasic/CompilerOptoptfile.html#start
は、360とあまり違っていないので、360処理のライブにかぶせる予定だが
読んだ雰囲気では、解釈が一部違う。めんどくさいから、独自の文法による拡張命令にするか。
ライブでの処理は、今のところ考えていない。
というか、
@処理はバッチ処理のタスクの所轄なので、バッチ処理を考えていない今では、何も作れない。
システムを操作する必要も出てくるから。

954 :デフォルトの名無しさん:2016/12/06(火) 23:36:17.80 ID:bNLFehP7
File01.rc を直接編集して、
#define IDC_LST1 1002
#define IDC_STC1 1004
以下の番号の順番をそろえてみた。表示画面がみだれて
CONTROL "RBN1",IDC_RBN1,"Button",0x50010009,144,45,21,9
が単なるButton
CONTROL "決定",IDC_BTN4,"Button",0x50010000,153,24,30,15
のように描かれる。どうせ番号を間違えたのだろう、と今度は、
FBEdit のRCタグを使って、ID番号を変更。
横▽をクリックして、コンパイル。
ハングした。

今の技能では、ID番号をそろえるのは不可能であると判断した。
現在の、File01系統、ファイル選択ライブの作成で、全ディスクサイズで1MB、圧縮BAKファイルで100KB、位。
やっと終わりが見えてきた。

以前紹介した、アイコン作成ツール、使って作成に成功。
オハナシ゛ャー.ico、漢字で書くとお花茶屋.icoで、アイコン登録のつもりが
コンパイラーか、FBEditか、わからないが、読み取れない。HanaJaya.icoで登録した。
Oが足らないって?、アルファベットのOは旧バージョンの意味で付ける接頭語なので使えない文字なんだわ。
登録の仕方は、http://www.hi-ho.ne.jp/makoto_watanabe/FbEdit/tut2.htm#start 参照。

955 :デフォルトの名無しさん:2016/12/08(木) 20:19:45.21 ID:fg85d7ok
ライブラリーの整理を始めた。名称の統一なんだけど。
その中で、起動表示枠の表題の取得と変更には失敗した。
Dim buff As Zstring * MAX_PATH
' GetDlgItemText(hWin, IDD_DIALOG, @buff, SizeOf(buff))
' MessageBox(TakaHWND,"IDM_FILE_01" + Buff ,"Messagebox caption",MB_ICONINFORMATION)
'取得できず
'buff = "てきとう"
' SetDlgItemText(hWin, IDD_DIALOG, @buff)
'変更できず

QBでは、たしか、使わない*.objには、ダミーの*.objをリンクさせて、容量を減らすという機能があった。
このスレでは、いろいろ話題になった、バグ取りルーチンのうち、エラー記録ルーチンを外す*.OBJを作ることとした。
Function文と名称に定義する行とEnd Function 行の3行にする。
手作業でなんてやったらば間違えるので、自動化した。

ついでに、Declare 文も一部自動作成するようにした。
大域参照するルーチンだけ自動作成にして、局所参照は今まで通り手作業で入れることとした。
今のところは、単にかき集めただけだが、他への流用を考えて、整列などをしなければならないだろう。

956 :デフォルトの名無しさん:2016/12/10(土) 12:42:07.74 ID:K21NAgqS
ライブラリーの整理の都合で、タイムゾーン関係をいじり始めることになった。
msのサイトを見ても、よくわからないので、見つけた関数を試している。
Function TimeZonTest(ActonType As Integer) As Long

'Dim TakaTimeZon As DYNAMIC_TIME_ZONE_INFORMATION
'Dim TakaTimeZonPtr As PDYNAMIC_TIME_ZONE_INFORMATION
Dim TakaTimeZon2 As _TIME_ZONE_INFORMATION
Dim TakaTimeZon2Ptr As LPTIME_ZONE_INFORMATION

Dim MsRetCode As DWORD
'TakaTimeZonPtr = @TakaTimeZon
TakaTimeZon2Ptr = @TakaTimeZon2
TimeZonTest = 0

'MsRetCode = GetTimeZoneInformation(TakaTimeZon) 致命的エラー
'MsRetCode = GetTimeZoneInformation(@TakaTimeZon) 警告エラー
'MsRetCode = GetTimeZoneInformation(TakaTimeZonPtr) 警告エラー
'MsRetCode = GetTimeZoneInformation(TakaTimeZon2) 致命的エラー
MsRetCode = GetTimeZoneInformation(@TakaTimeZon2)
MsRetCode = GetTimeZoneInformation(TakaTimeZon2Ptr)
End Function

957 :デフォルトの名無しさん:2016/12/10(土) 17:12:16.00 ID:BUzq8JlI
タイムゾーン関係のライブを見ていたら、
西暦⇔日数の換算ルーチンで、倍精度超過の整数ルーチンがあり
しっかと、無限倍精度ルーチン、BDC型が使われていた。

新ライブに移行するにも、英文解読が終わっていないからして、
結論、自前の無限倍精度ルーチン復活。

958 :デフォルトの名無しさん:2016/12/10(土) 20:05:27.64 ID:BUzq8JlI
C:\tool\FreeBASIC\fbc -s gui "Menu01.bas" "Menu01.rc" "..\Kako02\Mod\Taka01H.bas" "..\Kako02\Mod\Taka00f.bas" "..\Kako02\Mod\Taka01I.bas"
"..\Kako02\Mod\Taka00c.bas" "..\Kako02\Mod\taka01G.bas" "..\Kako02\Mod\Taka00e.bas" "..\Kako02\Mod\Taka01.bas" "..\Kako02\Mod\Taka00d.bas"
"..\Kako02\Mod\Taka05.bas" "..\Kako02\Mod\Taka01M.bas"
C:\tool\FreeBASIC\bin\win32\ld.exe: reopening Menu01.exe: Permission denied

C:\tool\FreeBASIC\bin\win32\ld.exe: final link failed: Permission denied

Make done

なにやら、抽象的障害メッセージを表示して、停止した。

959 :デフォルトの名無しさん:2016/12/11(日) 10:27:06.45 ID:5UvE8iG9
>>958 放置しておいて、再起動したら、発生しなくなった。
原因不明。変数領域の食いつぶしか、モジュールの登録・削除を繰り返したために主記憶領域が乱れたものと思われる。

>>957 無限倍精度ルーチン、ベクトル演算とBDC演算のライブ化終了。
といっても、複数の表示枠の表示方法がわからないので、単機能枠だけしか作っていない。
起動枠(Dialog as main相当)から
保守ルーチン一群の選択メニュー枠を表示して
選択メニュー枠から個別の保守ルーチン・動作試験ルーチン枠を起動していた。
この分離方法が今のところ分からない。
ライブから起動していた、非常駐部のルーチンはごく少しだが常駐部に移動することを始めた。
しかし、今のところ、保守ルーチンの起動方法がわからないので、放置。
特権の最上位で起動して、他からの干渉を排除して、動かすという方法もあるが、
INIファイルの占有方法がわからないので、他からの干渉を排除する方法がわからない。
ユーザーレベルで(個別のタスクが個別に)対応するのは簡単だが、ノートパットという誰でも起動できる強力なタスクが干渉することを排除できない。

960 :デフォルトの名無しさん:2016/12/11(日) 10:43:50.97 ID:5UvE8iG9
レジストリー関係を覗いたいたら、
Win 95-2000の頃には存在していた、
OS起動直後に中身を全削除する親キー(HKEY_CLASSES_ROOT等)がわからない。
ユーザーレベルで対応するときに、
何かおかしなことが発生した、つまり、
占有中であることを宣言して、宣言を破棄して開放する前に、異常終了した場合
時に、占有関係データを破棄する必要がある。
OS起動時に、中身を全削除してくれるレジストリーは、占有情報の保管場所として適切な場所にある。

これがわからない。
ユーザーレベルでやるのであれば、スイッチ、多くの場合には存在を隠しているスイッチを指定して、
関係情報を全削除、終了、という方法をとる。

961 :デフォルトの名無しさん:2016/12/12(月) 22:09:02.25 ID:5xU3iLZ7
金土日の3日間の処理で、
Declare 文を集めた *.biファイルのサイズが 35KB から 55KBに増えた。
よくまー、。これだけの単純作業を繰り返したもので。

コンパイラーが通れば、多少おかしな状態でも可能
という条件だからこそできた早業。これで入出力引数のチェックなんて入れたらば、終わるわけがない。

引数リストの作成ルーチンも復活させなければならないが、ファイル選択ルーチンが未完成。

962 :デフォルトの名無しさん:2016/12/13(火) 21:43:00.09 ID:4e1gXBvt
V.B.の WeekDay(), DataPart()関数を使っていた。
Free-Basic では、内部処理用時間変数を引数とする場合しか認めていない、文字変数を引数とする場合を認めていないので、エラーになる。
前者はどこかに作っておいたはず。みつけるだけ。
後者は、0から作ることになる。

どちらも、曜日を指定する場合で、RFC型時間変数にしか使わないのがせめてもの救い(後回しにできる)。
これは、
メール処理として、メールサーバーが記録した日時を読み取るルーチンを作った。
対として、逆関数も作った。この逆関数が残っていたもの。
正関数と逆関数の2つのルーチンを作って、乱数でてきとうな値を作って、
元値と、正関数・逆関数を通した値を比較する。
両者に違いがあれば、どこかに間違いがあることがわかる。

963 :デフォルトの名無しさん:2016/12/14(水) 22:54:08.74 ID:2JEVbY+L
>>962 つづき。
中身をみたら、引数の違いだけで両者ともに同じ処理。
ほぼ同一処理の引数違いの自家製ルーチンを見つけて、復活。

964 :デフォルトの名無しさん:2016/12/15(木) 21:14:04.49 ID:9nAvfrOI
バイナリファイルへの書き込みで
Put #FileNo2Long, , AAByte()
がFreeBasic の書式。FortranやVisual Basic では、AAByte と配列全体を示す場合には()をつけない。
違いに注意。半角⇔全角の変換命令がないので作った。余計な部分は、大域変数として宣言すると常駐するための物。
現時点でどのライブファイルが担当するのか決めていないので、局所宣言になっている。
Public Function StrConvAsc2SjisString(ChacterType As Integer, AAString As String) As String
Const TakaSubRoutineNo as long = 10&
'*-* ASC半角カタカナを全角平仮名・全角片仮名に書き換える
'ChacterType (入);{2;全角平仮名, (他);全角片仮名}
'AAString (入);書き換え前の文字列
'StrConvAsc2SjisString (出);書き換え後の文字列
Dim As String ChacterGLstring(&h20 To &h7E), ChacterGHstring(&hA0 To &hDF)
Dim As Long ChacterGAsetFig1 = 0
Dim As Integer ChacterGAsetFig2 = 0
Const GLstring = " !”#$%&’()*+,−./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[¥]^_‘abcdefghijklmnopqrstuvwxyz{|} ̄"
Const GHstring1 = " 。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゛゜"
Const GHstring2 = " 。「」、・をぁぃぅぇぉゃゅょっーあいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわん゛゜"
Dim As Long IAA, IBB
Dim As String BBstring

TakaDammyReturnCode4 = TakaErrorPointSach(IniNameString, TakaSubRoutineNo)
IF (ChacterGAsetFig1 = 0) or (ChacterGAsetFig2 <> ChacterType) then
ChacterGAsetFig1 = 1
IBB = 0

965 :デフォルトの名無しさん:2016/12/15(木) 21:14:46.37 ID:9nAvfrOI
For IAA = &h20 To &h7E
IBB = IBB + 1
ChacterGLstring(IAA) = Mid$(GLstring, IBB, 2)
IBB = IBB + 1
Next IAA

IF (ChacterType = 2) then
'ASC半角カタカナを全角平仮名に書き換える
IBB = 0
For IAA = &hA0 To &hDF
IBB = IBB + 1
ChacterGHstring(IAA) = Mid$(GHstring2, IBB, 2)
IBB = IBB + 1
Next IAA
ChacterGAsetFig2 = ChacterType
else
'ASC半角カタカナを全角片仮名に書き換える
IBB = 0
For IAA = &hA0 To &hDF
IBB = IBB + 1
ChacterGHstring(IAA) = Mid$(GHstring1, IBB, 2)
IBB = IBB + 1
Next IAA
ChacterGAsetFig2 = 1
End if
ChacterGAsetFig1 = 2
End if

966 :デフォルトの名無しさん:2016/12/15(木) 21:15:32.70 ID:9nAvfrOI
BBstring = ""
For IAA = 1 to Len(AAString)
IBB = asc(Mid$(AAstring, IAA, 1))
Select Case IBB
Case &h00 to &h1F, &h7F, &HFF
'BBstring = BBstring + "-"+Hex$(IBB)+"-"+Chr$(IBB)
BBstring = BBstring + Chr$(IBB)
Case &h20 To &h7E
BBstring = BBstring + ChacterGLstring(IBB)
Case &h80 to &H9F
BBstring = BBstring + Chr$(IBB)
IAA = IAA + 1
BBstring = BBstring + Chr$(IBB)
Case &hA0 To &hDF
BBstring = BBstring + ChacterGHstring(IBB)
Case &HE0 To &hFE
BBstring = BBstring + Chr$(IBB)
IAA = IAA + 1
BBstring = BBstring + Chr$(IBB)
Case else
BBstring = BBstring + Chr$(IBB)
End select
Next IAA
StrConvAsc2SjisString = BBString
End Function

967 :デフォルトの名無しさん:2016/12/15(木) 21:25:32.19 ID:9nAvfrOI
GH領域の半角空白、&hA0は、GL領域の半角空白と等値であるとして処理している。

>>946のつづき。Put 命令関係を探していたら、
http://makoto-watanabe.main.jp/freebasic/PgBinary.html
をみつけた。まだ試していないが、一息ついたらばやってみる予定。

968 :sage:2016/12/15(木) 21:30:42.16 ID:VRbOmxa/
https://www.youtube.com/watch?v=xHx5MbIGEoY

https://www.youtube.com/watch?v=8fPmkq1CkCU

https://www.youtube.com/watch?v=PR6r40GbIfk

969 :デフォルトの名無しさん:2016/12/16(金) 21:56:34.17 ID:rZ3nkbqi
>>967 のつづき。
Dim Shared As String TestFileString, ReadDataString
Dim Shared As Long FileNoLong
Dim Shared As UByte aByte(0 To &h0F)
と大域宣言して
TestFileString = ExePath + "\test.test.txt"
FileNoLong = FreeFile
Open TestFileString For Output As #FileNoLong
Print #FileNoLong,"0123456789ABCDEF";
Print #FileNoLong,"0123456789ABCDEF";
Print #FileNoLong,"0123456789ABCDEF";
Print #FileNoLong,"0123456789ABCDEF";
Close #FileNoLong
と、試験ファイルを作成して。
TestFileString = ExePath + "\test.test.txt"
Open TestFileString For Binary Access Read Write Lock Read Write As #FileNoLong
For IBB = 1 To 3
Get #FileNoLong, , aByte()
ReadDataString = ""
For IAA = LBound(aByte) To UBound(aByte): ReadDataString = ReadDataString + Chr$(aByte(IAA))+" ": Next IAA
MessageBox(TakaHWND, "Hello ("+ReadDataString +")", "Messagebox caption", MB_ICONINFORMATION)
Next IBB
Close #FileNoLong
と、読みだすと、メッセージボックス表示中に、ノートパットで中身を覗ける

970 :デフォルトの名無しさん:2016/12/16(金) 22:21:02.16 ID:rZ3nkbqi
>>589 つづき。
実行形式ファイル内に存在しないファイルのアイコンの表示には、相変わらず成功していない。
'IconFile = "D:\bas\Projects\Editbox\Res\Anchor1.ico"
'declare function LoadIconA(byval hInstance as HINSTANCE, byval lpIconName as LPCSTR) as HICON
'hIcon=LoadIcon(hInstance, @IconFile)
''hIcon=LoadIcon(hInstance, Cast(ZString PtrIconFile)): '構文エラー
SendMessage(TakaHWND,WM_SETICON,NULL,Cast(LPARAM,hIcon))
コンパイラーは通るが、ディスク上のファイルを読み取って表示しない

実行形式ファイル内のアイコンの切り替えには成功した。
Case IDC_BTN1
hIcon=LoadIcon(hInstance,Cast(ZString Ptr,500))
SendMessage(TakaHWND,WM_SETICON,NULL,Cast(LPARAM,hIcon))
Case IDC_BTN2
hIcon=LoadIcon(hInstance,Cast(ZString Ptr,501))
SendMessage(TakaHWND,WM_SETICON,NULL,Cast(LPARAM,hIcon))

971 :デフォルトの名無しさん:2016/12/16(金) 22:36:53.84 ID:rZ3nkbqi
V.B.と同じだと思っていた Byte 型変数。
比較ルーチンを使っている場合に、FreeBasic での違いに泣くので要注意。

http://makoto-watanabe.main.jp/freebasic/PgByte.html#start
-128〜127 の範囲の値を保持できます。
V.B.では
http://makoto-watanabe.main.jp/freebasic/PgUbyte.html#start
0〜255の範囲の値を保持できます。
と同じなので、
移植作業の時には、As Byte 宣言を一律 As UByte 宣言に書き換えても良いかもしれない。

V.B.のころは
値返しのFunction 文で、名称の末尾1文字を
I;単精度整数, L;倍精度整数, S;単精度実数, D;倍精度実数で、
末尾に Bool が付いた場合には論理変数で
あたいを返す用にしていた。入力引数のほうもほぼ同様な扱いにしていた。
ところが、整数型がFreeBasicではやたら増えて、合計15種類もある。
>>951 のように番号で区別するように、変更中。

972 :デフォルトの名無しさん:2016/12/18(日) 12:29:50.18 ID:1/CaK5B1
http://makoto-watanabe.main.jp/freebasic/ExtLibZip.html#start
の見本ファイルが構文障害で動作せず。
Private Sub unpack_zip_file(ByVal zip As zip_t Ptr, ByVal i As Integer)
Dim As zip_file_t Ptr fi = zip_fopen_index(zip, i, 0)
と、
As zip → As zip_t、As zip_file → As zip_file_t
の変数型の変更で動作するようになった。

"C:\tool\FreeBASIC\inc\zip.bi"
から、
Dim As String filename = *zip_get_name(zip, i, 0)
より「zip_get_name」の宣言文を見つけて、引数「zip」の宣言に合わせた。
以下同様。

973 :デフォルトの名無しさん:2016/12/18(日) 12:31:31.87 ID:1/CaK5B1
>>972 つづき。
コンパイラーが通っただけだから。圧縮・解凍するかは試してない。

974 :デフォルトの名無しさん:2016/12/18(日) 21:17:31.69 ID:1/CaK5B1
>>973 つづき。
リンカーが通らなかった。
C:\tool\FreeBASIC\fbc -s gui "DllZip01.bas" "DllZip01.rc" "LZH01.bas"
C:\tool\FreeBASIC\bin\win32\ld.exe: cannot find -lzip
C:\tool\FreeBASIC\bin\win32\ld.exe: cannot find -lz

Make done
>>972の内容が LZH01.bas にコピーしてある。
*.dll 又は *.a ファイルを探すことになるのだが
https://search.yahoo.co.jp/search?_adv_prop=web&x=op&ei=UTF-8&fr=top_ga1_sa&fr2=op&submit=%E6%A4%9C%E7%B4%A2&
va=libzip&va_vt=any&vp=&vp_vt=any&vo=lz.a+lz.dll+lzip.a+lzip.zip+&vo_vt=any&ve=&ve_vt=any&vd=all&vst=0&vs=&vf=all&vc=&fl=0
どうもソースコード配布らしい。
http://makoto-watanabe.main.jp/freebasic/ の
https://nih.at/libzip/libzip-1.1.3.tar.xz

https://nih.at/libzip/libzip-1.1.3.tar.gz
も、ソースコードらしきものがあったが、*.A, *.DLL は発見で゜傷。
Win10用のgz系圧縮ファイルの解凍ソフトは
http://www.vector.co.jp/soft/winnt/util/se489109.html
が見つかった。
gz系解凍のみのために用意していたソフトがWin10で使えなくなったので助かった。

975 :デフォルトの名無しさん:2016/12/18(日) 21:40:48.13 ID:1/CaK5B1
ライブ関係ファイル >>958 に一部表示してあるけど、訳が分からなくなって
ルーチンの引数の入出力情報を整理しようとして始めた。
ライブとして整理が終わったファイルが30位、2つの疑似というか偽装というかファイル。
後者の2つは自動作成だから、元ファイルがまともに作られているのであれば、無検査。
700個ぐらいのルーチンがある。
ルーチン名、引数の型、入出力形式の3つを保存する必要に迫られた。
各ルーチンの番号をフルわけで、
Const TakaSubRoutineNo as long = 109&
行を入れてゆく。ついでに、バグ取りルーチン、現在実行中のルーチン名を保存する
TakaDammyReturnCode4 = TakaErrorPointSach(IniNameString, TakaSubRoutineNo)
行も書き込む。
そのほかに、ファイル名(モジュール名)を保存する
Const IniNameString as String = "taka01G"
や、モジュール内に存在するルーチン数を示す
'サブルーチン総数 : 10
や、ソースの取り扱いを容易にする
'#Include Once "..\Kako02\Mod\TakaCom0.bi"
等のコメント行も自動で書き込む。
当然こんなことをすれば、書き間違いを結構するわけで、未処理のファイルはそっくり残しておきたい。
ディレクトりー内一括圧縮保存ルーチン、SendToZIP
http://hatenachips.blog34.fc2.com/blog-entry-376.html
相当ルーチンを作ろうとしたのが、今日の一連の作業。

現在 (なんたら)\MOd\ 内ファイル数約100、サイズ5MB。
内、約30ファイルが作成したもの、約30ファイルが修正不能として放置したファイル、残り40ファイルが手を付けていないファイル。

976 :渡辺真:2016/12/18(日) 21:41:51.20 ID:Mt5C7DVY
GMP(任意精度算術ライブラリ)の上手い使い方を教えてもらいました。
http://makoto-watanabe.main.jp/freebasic/tipsGmpOverloading.html
構造体として、GMP のユーザ定義型を作り、演算子の多重定義を含めて .bi ファイルにします。
これをインクルードすれば、通常のプログラムの Dim 文の変数の型を修正するだけで、取り扱える数値の桁数を、任意に拡張できるのです。
これは感激です。

もう一つ。
素因数分解の関数も教えてもらいました。
http://makoto-watanabe.main.jp/freebasic/tipsGmpPrimefactors.html
これを使うと、例えば、21桁の数値 121,439,531,096,594,251,777 を、3分足らずで素因数分解できました。

977 :デフォルトの名無しさん:2016/12/20(火) 20:26:41.53 ID:UXtQEXtu
>>975 のつづき。
一部書き換えた場合に、
どこが違っているのか、を比較して意図した内容になっているか、
を見る必要がある。意図してない内容ならば、バグかウィルスソフトにしか過ぎない。
2ファイルの比較ソフトとして使っていたのだが、異なる行の色表示が一致行との色表示と同じなので、使わなかった。
ぷれぷれDiff
http://www.vector.co.jp/soft/dl/winnt/util/se141425.html
不一致行の色を指定する方法が見つかったので、Win10でも使えることが判明した。
起動後、も左上、枠線上に6種類のマーク画像が並んでいる。
上から4つ目、下から3つ目、ネイルハンマー
http://image.search.yahoo.co.jp/search;_ylt=A2RCMY5aE1lY4hoA1iuU3uV7?p=%E3%83%8D%E3%82%A4%E3%83%AB%E3%83%8F%E3%83%B3%E3%83%9E%E3%83%BC&aq=-1&oq=%E3%83%8F%E3%83%B3%E3%83%9E%E3%83%BC&ei=UTF-8
とスパナの頭が重ね書きになっているところをクリック。「環境設定」の表示枠が表示される
左上、「文字色」内の「追加行」・「変更行」・「移動行」が「背景」と同じ白色になっていたので、クリック。
「色の設定」枠が表示されるので、適当に選んで「OK」をクリック。

こんな調子で使えるようになった。

978 :デフォルトの名無しさん:2016/12/22(木) 13:29:17.73 ID:qSEuLaQE
GPLのプログラムを使う自由があって
GFDLのドキュメントを使う自由がある。
本来のライセンスによる提供物は本来のライセンスの提供物のままであって
自分にはキュレーションメディアは必要無い。
ただ単に自分が使いたいように使い倒すまでのこと。

979 :デフォルトの名無しさん:2016/12/22(木) 20:56:55.91 ID:Vulz5JgX
>>967 GH領域の半角空白、&hA0は、
が間違い。しばらくコードをいじっていなかったので記号を忘れた。GRが正しい記号。
00http://euc.jp/i18n/charcode.ja.html
ISO 2022 の構造(8単位系)
参照。

980 :デフォルトの名無しさん:2016/12/22(木) 21:35:21.72 ID:Vulz5JgX
Lcase$()関数とUcase$()関数は、7Bitコード対応らしく、8Bitに対応していなかった。
第8bit目を見ないで、一律7bitコードとして処理している(Or40だったかな)模様。
たしか、関係システムディレクトリー、注意 末尾¥付、あたりだったか、じばけする。

今のところ、コメント文の処理に困るぐらいで、大きな被害は出ていない。そのうち対応に迫られることとなる。
使い方としては、
Bstring = "#Include "
TakaDammyReturnCode = CodeChing5(Astring, Bstring, Bstring, 0)
"#Include "、大文字小文字の混在している"#InCluEe "、全部大文字の"#INCLUDE "、全部小文字の"#include "あたりを"#Include "に書き換えるという処理。

981 :デフォルトの名無しさん:2016/12/22(木) 21:36:10.43 ID:Vulz5JgX
>>964 にあるように
'*-* ASC半角カタカナを全角平仮名・全角片仮名に書き換える
と怪しげなコメント行がある。「'*-* 」が各サブルーチンに1行だけ存在し、ルーチンの概要を示している。
これをかき集めて、先頭に書き並べると、ライブファイル内のルーチンの一覧表が完成する。
Visual Basic では、ワードを使ってドキュメントがどうのこうのと書いてあったが、理解できなかった。
それで、Wterm http://www.vector.co.jp/vpack/filearea/dos/net/term/wterm
という通信ソフトの取扱説明書のどこかに、ソースから引き抜いして説明書を作ったのでおかしな日本語がある。旨の記載があった。
これをまねして作ったのが、怪しげなコメント行。'* * の4文字が固定、*と*の間の1文字に特殊な意味を持たせている。
ここにUcase$()で一律大文字にしてInstr(???, "'*-* ")=1等で行の意味を特定していた。
Ucase$() が使えないので、先頭5文字だけ切り出して比較するという処理に変えた。

FreeBasic で&hA0を使っているとヤバイのだが、
文字定数を意味する ""内処理と""外処理では意味が変わってくる。
自動書き換えルーチンで書き換えの対象となる後者と、書き換えてはマンマシンテンターフェース上問題になってしまうであろう前者の違いである。
MS-DOSの頃は&h00を使っていたのだが、FreeBasicでは文字変数の末尾という意味で使っているので使えない。
かわりに&hA0を使って""内を塗りつぶしてInstr()文で検索している。

513 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.02 2018/11/22 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)