したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |

■■■20レス以内で済むF-BASICの質問はこちらへ■■■

1F橋:2003/12/19(金) 20:48
20レス以内程度(20回程度の投稿)で終わりそうなF-BASICの質問はこちらでお願いします
短い質問のスレッドがいくつも立つより1つのスレッドで固まっていた方が長期に渡り見ることができ
かつ保存も簡単かと…

(いや…私だけでなく…皆さんも簡単のはずなんですが…(汗(笑)))

掲示板の内容の長期保存にご協力頂ける様よろしくお願いします

488シマヅ:2009/03/06(金) 22:38:26
■Windows(R)7とF-BASICの互換性等
 次期OSと言われている、Windows(R)7とF-BASICの互換性等、何か情報をお持ちの方がおりましたら、宜しくお願い致します。

489JUN:2009/05/10(日) 10:00:21
みなさん、こんにちは。
Windows7(RC版)、インストールしてみましたので動作状況等
報告してみたいと思います。

M/B:M3A78 PRO (ASUS)
CPU:Athlon64 X2 4200+(2.2GHz)
メモリ:2GB

●動作確認できたアプリケーション
 F−BASIC V6.3 (U0003)
 Mifes V6.0
 一太郎2006(ATOK2006)
 とりあえず、F−BASIC開発に必要なもの。

●動作関連について
 インストールは、すんなりいきました。
 コンパイルも、無事終了しました。
 作成したプログラムは動作しました。
 日本語入力も自作ライブラリィで動作しました(確認はATOKのみ)。
 Btrieveファイルは、読み書きできました。

●気になる点など
 F−BASICのことではありませんが、エクスプーラで動作可能な
 モジュール(.COM .EXE等)の拡張子が表示しません。当方、Vistaを
 飛び越しているのでこれは仕様かなと思っています。情報お持ちの
 方はお教えください。

490makoto:2009/05/11(月) 13:16:45
こんにちは

>モジュール(.COM .EXE等)の拡張子が表示しません。

[スタート]-[コントロールパネル]-[ディスクトップのカスタマイズ]-
[フォルダーオプション]-[表示]の[]登録されている拡張子は表示しない
で当方の環境では表示されるようになりました。

>Windows(R)7とF-BASICの互換性等

FMV-D5340 Core2 6700 2GB 32ビット RCで問題なく動作しています。XPより快適ですw

491JUN:2009/05/11(月) 13:25:41
早速の書き込みありがとうございます。
帰宅して設定してみたいと思います。
それにしても、2000やXpと同じ機能ながら
設定する場所が違うのが結構あり探すのが
大変です。
ありがとうございました。

492名無しさん:2009/05/19(火) 17:57:42
こんばんは
F-BASICで作ったEXEファイルのショートカットに、別のファイルをマウスでドロップするとそのファイルの名称を習得するようなプログラムを書きたいのですがどうすればいいのでしょうか

493nisii:2009/05/19(火) 19:40:15
command$ で得られます。
通常の引数か判別するため、ISEXISTFILEでファイル名の存在を確認しましょう。

494名無しさん:2009/05/19(火) 22:22:44
回答をいただけてうれしいです。
ありがとうございました。

495シマヅ:2009/05/22(金) 16:31:57
皆様、貴重な情報を有難う御座います。なんとかプログラミングの寿命が伸びそうでホッとしています。《仕事の都合(出張等)などで返事が遅れて申し訳ありませんでした》

496追質問:2009/07/05(日) 23:04:14
名無しさんの質問に似てるのですが、ファイルをダブルクリックし、関連付けされた
ファイルとして、アプリケーションを起動させたとき、アプリケーションでカレントディレクトリが
ファイルの場所になりますが、アプリの本来のパスはどうしたら取得できますか?

497nisii:2009/07/06(月) 01:01:24
タイトル「F-BASIC掲示板(雑談歓迎)」をクリックして、メインページに戻り、
「いまさら聞けなかったAPI」の「ウィンドウの列挙とモジュール名の取得」を見てください。
自分自身のパスを得るサンプルがあります。

498追質問:2009/07/06(月) 20:01:54
ありがとうございます。うまくいきました。
なにぶんプログラム初心者なもので、、、
現在、ファイルを閲覧するプログラムを作っているのですが、いろんなところで、立ち止まっています。
マルチラインエディターのスクロールポジション取得やキーイベントなど、F-BASICにはありませんよね?、
(キーイベントに関しては、どこかで、どなたかが、記述していたような記憶があるのですが、、、、)

499YUTTA:2009/08/31(月) 10:05:06
ご無沙汰しております。<(_ _)>
今も尚F-BASICにお世話になっているYUTTAです。
お時間がございましたら下記につきましてご教示下さいませ<(_ _)>

vistaでも、なんとかF-BASICは動作し、相変わらずコンパイルに
いそいんでいる毎日ですが、「U003」へのアップデートができません。
ちなみにメインのPCがxpとvistaのデュアルブートなので、XPから、
vistaにF-BASICをフォルダ毎上書きコピーし、一応「U003」にしてなん
とか、問題もなく使用している状況です。"^_^"
vistaになってから、システム内の「expand.exe」との互換性に問題
が・・・・・・、などと疑っているところなんですが?
どなたかよい方法をお知り方、ご教示宜しくお願い致します。<(_ _)>

500nisii:2009/09/01(火) 13:18:27
ごぶさたです。
今、Vista SP2マシンに入れてみましたが、特に問題なくインストールは完了しました。
その環境固有の問題ではないでしょうか?

いったんXP側のF-BASICをアンインスール、該当フォルダも削除してから、
Vista側でインストールするとか。

501YUTTA:2009/09/09(水) 11:10:48
YUTTAです。
nisii先生ありがとうございました。<(_ _)>
まさにご指導の通り実行しましたら、U003にアップデートできました。
デュアルブートが原因だったんですね(^_^;)
VISTAにしてからずうっと悩んでいたんですが、
みごと解消です! 大変ありがとうございました。
VISTAにしてもうひとつ今ひっかかっていることがあります。
APIを使ってフォームの×ボタン無効化を行っていましたが、
VISTA・basicからVISTA・Ultimateにし、エアロをONにしたら、
この×ボタンの無効化で無効化可能なのだけれど、マウスにボタンが反応する?
(色など無効化前の状態のまま・・・)のです。
まあ、プログラムの実行上問題はありませんが、なんか気になります。
今また、Windows7で、更に悩みが増えそうでまたまたゲイ○氏には
頭にきますです。(^_^;)
このたびは誠にありがとうございました。 <(_ _)>

YUTTA

502FB使用人:2009/12/10(木) 00:42:10
どなたかご存知の方教えて下さい。
FBasicのメール機能を使って見ようと思いましたが、「続行不能エラー」で止まってしまいます。
MAILLOGON を実行出来きません。’98の時は確か出来ていたと思いますが、XPではダメなのでしょうか。
98の時は電話回線でしたが、ADSLにしてからは OUTLOOK に添付で、メール機能を使用していません。
どなたか詳しい方居られたら教えて下さい。(インターネット機能も実行できません)

503nisii:2009/12/10(木) 06:23:19
ヘルプより。
#電子メールの送受信をします。メールアカウントとMAPI対応のメールソフトが必要です。
#Microsoft Outlook Express 5.0以上を推奨します。

メールソフトの設定を事前にしておく必要があるのでは?
WindowsXP SP3 + Outlook Express6 + F-BASIC V6.3 U003 + YahooBB ADSL8Mで、
ヘルプにある下記サンプルの正常動作を確認しました。


#include "windows.bi"
#include "internet.bi"

MAILLOGON
TO$ ="xxx@yyy.co.jp" ' 受信者
CC$="":BCC$=""
SUBJECT$="メールのテスト" ' 件名
MSG$= "テストをおこなっています。"+chr$(13,10)
FILE$=""
MAILSEND SUBJECT$, MSG$, FILE$, TO$, CC$, BCC$
MAILLOGOFF
stop
end


インターネット機能については試していませんが、たぶん設定の問題でしょう。

504FB使用人:2009/12/11(金) 00:17:49
nisiさん
早速のご返答有難うございました。
PC環境は全く同じです。FBはしばらく(二年弱)使用してなかったので
感が戻りません。実行できるみたいなので、挑戦します。後日結果を投稿します。

505Gatefield:2010/03/20(土) 16:01:41
モード付きダイアログボックスのユーザー定義フォームにコントロール、
たとえばチェックボックスを張り付けて それを制御することって
できるんでしょうか?
張り付けることだけはできたのですが 反応してくれません。

506nisii:2010/03/21(日) 00:28:36
FORM2ではダメなのですか?
ShowwindowでON/OFFできますし、MAINFORMと同じように自由度が高いですよ。

507Gatefield:2010/03/21(日) 09:50:12
どうも ありがとうございました。
m(_._)m
いろいろやってみましたが ボタンだけ有効なんですね。

ところで FORM2表示で ダイアログみたいにタスクバーの
表示をさせない方法って あるもんでしょうか?

508nisii:2010/03/21(日) 20:05:28
フォーム表示中に、タスクバーへアイコンを表示させない方法があるかは知りません。
その間MAINFORMを非表示にするなど、工夫のしようはあると思いますが…。

509シマヅ:2010/05/24(月) 21:13:54
■印刷(ハードコピー)に関する不具合・解決方法のご相談

▼不具合内容
 メインフォームをハードコピー印刷するために「WINHARDC 3,0」を使っています。
しかし、これを実行するとメインフォームの上に一瞬「印刷スプーラにデータを送っています」のウインドウが表示され、それがメインフォームの上に被さった状態で印刷されてしまいます。

 これに関して、何か解決方法がありましたら、教えて頂けませんでしょうか?。

▼下記のような状況であることを追記しておきます。
(1)WindowsXPのパソコンではプリンターとUSB接続およびセントロニクスパラレル接続のどちらでも発生しません。(メインフォームの上に「印刷スプーラにデータを送っています」は一瞬表示されますが、印刷されません)

(2)Windows Vistaのパソコンで、印刷すると一瞬「印刷スプーラにデータを送っています」が表示されて、メインフォームの上に被さって印刷されてしまいます。
【パソコンにUSB端子しかないので、プリンターとはUSB接続しています】

(3)メインフォームをトップモーストウィンドウ MAINFORM.SETTOPMOSTWINDOW (-1) としておいても、全く効果がなく、メインフォームの上に「印刷スプーラにデータを送っています」のウインドウが一瞬表示されてしまいます。

  何か対応策がありましたら、教えて頂きたく宜しくお願い致します。

510nisii:2010/05/27(木) 03:10:32
検証していないので、確証はありませんが…。
・ディスプレイドライバのハードウェアアクセラレータを切ってみる。
・XP互換モードで実行させる。


当面の回避案として、画面キャプチャを撮って印刷する。

●API -クリップボードのビットマップをファイル化-
で、keybd_event VK_SNAPSHOT , 1 を用いれば、アクティブウィンドウの内容を得られます。

511シマヅ:2010/05/27(木) 14:47:50
 nisii 様、毎度お世話になっております、アドバイス・有難う御座います。

>ディスプレイドライバのハードウェアアクセラレータを切ってみる。
>XP互換モードで実行させる。

 効果があるかと思うのですが、知人に使って貰っているソフトに関しては、この操作をして貰うのは、難しいな〜と考えております。

>当面の回避案として、画面キャプチャを撮って印刷する

 知人に使って貰っているソフトに関してはこの方法もあることを連絡しておきました。

>API -クリップボードのビットマップをファイル化-
で、keybd_event VK_SNAPSHOT , 1 を用いれば、アクティブウィンドウの内容を得られます。

 この API を使ったことがないのですが、印刷上で「印刷スプーラにデータを送っています」を被らないようにするには、どうしたらよいかな〜と思案中です。

◆MAINFORMをウインドウの中央に表示させていたので、ウインドウの位置を移動させる MAINFORM.MOVEWINDOW 0,0 で、左上に移動させる試みもやってみたのですが、ウインドウの右下の部分に「印刷スプーラにデータを送っています」が被さってしまい、解決出来ませんでした。

 更に自分でも何か方法がないか?、考えて見ますが、根本的に解決する方法がありましたら、ご指導のほどよろしくお願い致します。有難う御座いました。

512ひろ:2010/07/27(火) 20:07:57
諸先輩方教えてください
サンプルで
var PP as PRINTPARAM
var PRINTER as object
PRINTEROBJECT PRINTER
if PRINTER.PRINTDLG(PP) then
SETMOUSEPOINTER 2
PRINTER.STARTDOC "文書"
PRINTER.STARTPAGE
PRINTER.DRAWGRP
PRINTER.ENDPAGE
PRINTER.ENDDOC
PRINTER.CLOSEPRINTER
SETMOUSEPOINTER 0
endif
で印刷するとき行間を指定したいのですが・・・・

513nisii:2010/07/29(木) 01:15:48
空白行を印刷して調整、ではダメですか?
フォントサイズを変えれば調整できると思うのですが。

514ひろ:2010/07/29(木) 22:07:57
nisiiさん ご教授ありがとうございました。
やはりその方法しかありませんかぁ!
LprintSetPitchみたいなものがあればいいのにと思います。
やりたいことは自動両面印刷をしたかったのですが、プリンタオブジェクトでだけしか
プリンタが正常動作しなかったものですから....
ありがとうございました。

515nisii:2010/07/30(金) 02:15:38
調整テストにいちいち印刷すると紙とインクがもったいない、ということであれば、
Bullzip PDF Printer
なんかでPDFファイルに出力してみてはどうですか。

516ひろ:2010/07/31(土) 09:52:42
nisiiさん 追加ご指導ありがとうございました
Bullzip PDF Printer は .NETがインストールされてないと
だめなんですねぇ(涙)

517nisii:2010/07/31(土) 22:15:33
.NET Framework も無料ですよ、念のため。
Windows updateのカスタム一覧からインストールできます。

518ken:2010/10/18(月) 12:49:42
はじめまして。
前任者が作成したf-basicプログラムで困っています。
これまで、中のデータは紙ベースでの印刷しかできなくなっていまして、・
それをcsvで抜き出したいのですが、その抜き出し方ってどうすればいいのでしょうか?
あいまいですみませんが、何か方法があれば、ヒントなどいただければ幸いです。

519nisii:2010/10/18(月) 20:23:08
F-BASICソース(リスト)を変更できますか?
文法はN88-BASIC(86)にそっくりです。

ソースを変更できるなら、print #文など、出力系の部分を探してください。
これをファイル出力に変更すればテキストファイルを得られます。
多少前後に準備文が必要ですが、難しいものではありません。

520nisii:2010/10/21(木) 04:21:11
元ソースを変更できないとしたら、PDF出力してテキストをコピペするとか。
全文手打ちするより、はるかに手間が省けると思います。

521ken:2010/11/01(月) 18:43:46
>nisii様
ありがとうございます!やってみます!

522yothan:2010/11/18(木) 22:09:16
現在でも 使用されている方がおられるのですね
val("abcdefg") 等の文字列を数値変換できないですかね

523nisii:2010/11/19(金) 20:08:24
そのままではエラーになりますが、どのような結果をお望みでしょうか?
val( "123" )
なら、結果は123の数値になります。

524keinin:2010/12/24(金) 09:40:12
はじめまして。
F-BasicでAPI関数の「GetLastError」の使い方をご存知の方がおられましたらご教授ください。

525nisii:2010/12/25(土) 01:28:37
資料から推察すると、VisualBasic同様、正しいエラーコードは得られない可能性があります。
以下、実際の動作は未確認です。

var shared RC as long
declare function API_GELASTERROR& lib "KERNEL32" alias "GetLastError" ()

RC = API_GELASTERROR

526keinin:2010/12/25(土) 08:13:59
早速のご教授有難うございます。
サンプルの方法でエラーコードを取得しているのですがリターン値が常にゼロになります。F-BasicではGetLastError関数は使えないのでしょうか?

527nisii:2010/12/25(土) 13:09:00
はい、そう考えています。
VisualBasicでも、別の組み込み関数(プロパティ)を使ってエラーコードを得るのが常套のようですし。
F-BASICにはその組み込み関数も無いため、実現は困難かと。

528keinin55:2011/05/21(土) 13:44:48
どなたかご存知の方教えて下さい。
F−BASICでタスクトレイアイコン上でマウス操作された時のイベント「NOTIFYICON」はありますが、F−BASICコマンドでウィンドウをアイコン化してタスクトレイに表示する方法はあるのでしょうか?

529keinin55:2011/05/22(日) 07:29:03
昨日お尋ね致しましたタスクトレイに表示する方法はリファレンスの索引にありました。お騒がせいたしました。

530F橋:2011/05/24(火) 22:31:35
お役にたてず申し訳ございませんでした(汗

531keinin55:2011/06/23(木) 07:10:32
F-Basicはウィンドウプログラムを作るのにRADツールを使用しないで、OriosのActiveBasic講座(2-1)の様に自力で全部書く事は可能でしょうか?

532F橋:2011/07/02(土) 01:01:39
>>531
私には分かりません(汗
どなたか分かる方よろしくお願いします

533Gatefield:2011/07/26(火) 18:47:47
GETASYNCKEYSTATE 関数を使ってますが キーバッファー
によると思われる誤動作を起こします。
(while 〜 wend ループ内です)
そこで いったん キーバッファーをクリアする方法は
無いものでしょうか?
(現在は フラグで対処してますが やはり面倒です)

534名無しさん:2011/07/27(水) 18:43:44
簡易なキーバッファクリアでよければ

while inkey$><"" : wend

でいいと思いますが、押しっぱなしに対応するのはできません。
ご存知の方、お願いします

535Gatefield:2011/07/28(木) 20:41:22
ありがとうございます。
試してみましたがダメでした。
リストコントロールの中で キーチェックでGETASYNCKEYSTATE関数を
使用、 ENTERキーで選択した項目のリンクを実行するように
してますが 例えば リスト項目をエディットボックスで編集、
ENTERキーで確定して そこで止まってくれればいいのですが
ENTER の記憶が残っているのか リンク実行へ進んでしまいます。
どうも リストコントロールは 特殊みたいで 1回の キーイベントでは
その内容(キーの記録)がクリアできないみたいです。

inkey$ なら そのようなことは起きないのですが Ctrl+C とか Ctrl+V を
有効にするため あえてGETASYNCKEYSTATE関数 を使っています。

何か よい方法があれば お教えください。

536nisii:2011/08/30(火) 06:36:55
今更ですが…。
いったんEnterを受け付けた直後は、Enterが押されている間先には進まないようにしてみては。

537Gatefield:2011/09/01(木) 21:01:34
ありがとうございます。
さっそく試してみました。
gosub *キーチェック で
while GETASYNCKEYSTATE(&HD):*****:wend
**** で shell で外部プログラムを走らせて
"exit" ENTER 復帰させるつもりが 再び同じコマンド
shellによる外部プログラムが立ち上がります。(とまらない!)
そこで **** に

while GETASYNCKEYSTATE(&HD)
wend

を入れ Enterが押されてる間 ループするように
離れたらもとのメインループに戻るようにしてみたんですが
やはり 改善されませんでした。
(プラットホーム環境のせいかもしれません)

どこか 勘違いや バグがあるのかも・・・・

とりあえず フラグで防止できるので
それで 擬似的に我慢してます。

(デフォルト0 shell実行でー1
他のキー操作で0に戻して・・・・
複雑になるし 他の障害も・・・・(;_;)

でも
どうも いろいろ ありがとうございます。
_(._.)_
このHP とても勉強になります。
これからも よろしくお願いします。

538nisii:2011/09/03(土) 19:13:00
そうですか。
フラグで解決するにしても、while wendでキー待ちループなどを作る場合は、
wait 5などを必ずはさむことをお勧めします。
でないと猛烈な負荷がかかることになり、誤検出の原因になったりもしますので。

539Gatefield:2011/09/05(月) 20:35:08
レス ありがとうございます。
さっそく試してみました。
いろいろ 試してみたのですが
XP(1GHちょっと) では OK window7(2GHZくらい) NG
と なりました。
ハードとの相性みたいです。

XPから 非対応なので あきらめるしかないのですが
いろいろ試行錯誤でまだまだ対応可能です。

F-BASIC 貴重な知的遺産として残していって欲しいです。
(window APIと一体みたいなので Linuxや Androidへの
拡張は無理かもしれないですが・・・・)

540teamTAKA:2011/12/14(水) 00:13:39
僕は、F−BASICが廃盤になる直前に購入しました。
その時にこの掲示板を知りましたが、
基本形のみを使い、世界中で使えるロトソフトを創りました。
windowsもMe、XP、Vista、7で問題なく動いています。

25年前N88で開発していましたが、手直しがほとんどなくF−BASICで表現ができました。
性能はF−BASICの方が比べ物にならないぐらい上です。
今も、25年前(PC98全盛のころ)のN88の知識のままです。


このBASICは本当にすばらしい!!!

541frost:2011/12/28(水) 22:24:13
はじめまして。

突然の質問で申し訳ありません。
昔の先輩が作成したプログラムがF-BASICで書かれていました。

このプログラムの修正を考えています。
内容としては、表示した画面を画像ファイルとして保存したいと思っています。
どのように書けばよろしいのでしょうか。

お手数ですが、よろしくお願いします。

542nisii:2011/12/29(木) 21:15:52
Print Screenキーを押したら画面イメージをBMPファイル化する、というサンプルは次の通りです。
http://www.geocities.jp/fbasic63/api16.txt

543frost:2012/01/03(火) 12:03:18
ありがとうございます!!
さっそく試してみます。

いかんせん初心者なもんですから、
経過報告には時間がかかるかもしれませんが・・・

544ひろ:2012/03/16(金) 13:24:57
FBASICでSQLサーバーへ接続して抽出してきたデータを格納する方法のサンプルPGを教えて
いだけないでしょうか。概念から解っていませんので宜しくお願いいたします。

545名無しさん:2012/03/17(土) 21:16:30
C:\FBASICV63\Sample_B\ODBC にSQLのサンプルらしきものがありますが
詳しいことは他の方にお任せします

546名無しさん:2012/03/17(土) 21:24:23
>>544
こちらもご参考にどうぞ

One Point Lesson 第七回「データベースと連携してみよう」
www.fmworld.net/product/soft/fbasic/lesson/lesson_7.pdf

547ひろ:2012/03/19(月) 19:00:05
名無しさん ありがとうござてました。
さっそく見てみます。
わかるかなー?

548名無しさん:2012/03/20(火) 21:53:20
SQLサーバーやODBC接続は詳しい方へ
私では説明不足なので他にも分かりやすい話やサンプルあったら
どなたかひろさんへご解説お願いします。

549としかず:2012/04/08(日) 22:48:48
Windows 8(Consumer Preview)でF-BASICは動きますか?

550名無しさん:2012/04/16(月) 22:41:15
Windows8 Consumer Preview でF-BASICが動きました
インストール、U003アップデート、簡単なソースのコンパイル、実行までOKでした。
もちろん不具合の出る命令とかはあると思いますが基本的には動きそうでした。

551F橋:2012/05/27(日) 18:52:09
>>545 >>546 >>548
解説ありがとうございました

>>550
ご報告ありがとうございました

552なりぞう:2012/06/12(火) 20:35:10
F-BASICは、linux mintやUbuntuなどのUNIX系で使えますか?
そのままでは多分、使えないと思うけど、wineなどのソフトを使っても駄目ですか?

553旧人類:2012/06/30(土) 11:16:59
F−Fasicを使用している方でご存知でしたら教えてください。 

「 knj$() で外字コード(jis &H7f21〜) を表示する方法をご存知ありませんか」

どこか設定がおかしいのでしよう、OS は XP です。
N88 の時代より Baic を愛用しております、簡単でそこそこの速度で
使いやすいコンパイラと思っておりまが、消えて行くのが寂しい気がします。

554名無しさん:2012/09/14(金) 08:07:19
>>553
原因はわからないのですが、参考まで。

Windowsの アクセサリ - 外字エディタ を起動して、外字のフォントが表示されるで
しょうか?
あと、外字のリンクが特定の「すべてのフォント」でなく特定のフォントにリンクされて
いるとダメなのかも。
外字エディタのファイル(F) - フォントのリンク で確認してみてください。

外字エディタで作成される既定の外字フォントのファイル名はEUDC.TTEとEUDC.EUFなので、
もしかするとF-BASICはこのファイル名で登録した外字フォントしか対応できないのかも・・。


もし、EUDC.TTEとECDC.EUFのファイルを他から直接コピーしてきたのでしたら、
Windowsが使用中のため、コピーに失敗(ECDC.EUFの方)する場合があります。
その場合、IMEの文字一覧など、外字が正常に表示されるが、外字エディタでは
表示されないという現象が発生します。

555ひろ:2012/09/26(水) 00:20:54
No544で投稿したひろです。
未だにODBCがよくわかりません
FBASICV63のサンプルでODBC.MAKを使ってMS-SQL-Serverに接続できません
'========================================================================
'= 接続/クエリ =
'========================================================================
' 入力:OBJ 結果を設定するコントロール(リストボックス)
' 入力:DATANAME$ データベース名
' 入力:SQL_COMMAND$ SQLコマンド
function EXEC_ODBC( OBJ as object, DATANAME$, SQL_COMMAND$ )
var HDBC as long ' DB HANDLE
var HSTMT as long ' SQL Statement HANDLE
var RCODE as integer ' 復帰コード

' 初期化
if SQL_SUCCESS<>SQLALLOCCONNECT( HENV, HDBC ) then goto *_ERR
if SQL_SUCCESS<>SQLCONNECT( HDBC, DATANAME$, SQL_NTS, "", SQL_NTS, "", SQLNTS ) then goto *_ERR   ->ここで落ちる
if SQL_SUCCESS<>SQLALLOCSTMT( HDBC, HSTMT ) then goto *_ERR
' SQLコマンドの実行
if SQL_SUCCESS<>SQLEXECDIRECT( HSTMT, SQL_COMMAND$, SQL_NTS ) then goto *_ERR

どなたか教えてください。
ODBCの設定はしているつもりです。

556名無しさん:2012/09/26(水) 08:50:52
>>555

SQLCONNECT に渡すパラメータの定義は次のようになっています。
HDBC& 接続ハンドル
SZDSN$ データソース名 <-- DATANAME$
CBDSN% データソース名の文字数 またはSQL_NTS指定
SZUID$ 接続するデータベースのユーザーIDの文字列
CBUID% ユーザーIDの文字数 またはSQL_NTS指定
SZAUTHSTR$ パスワード(認証用文字列)
CBAUTHSTR% パスワードの文字数 またはSQL_NTS指定


まず、DATANAME$ 文字列変数の内容がODBCの設定をされたデータソース名かどうか
確認してみてください。
(サンプルのフォームにデータソース名とODBCドライバ名が表示されているはず)

if SQL_SUCCESS<>SQLCONNECT( HDBC, DATANAME$, SQL_NTS, "", ・・・

サンプル(ODBC.MAK)での接続先データベースはMS-Access (*.MDB)なので、
ユーザーIDとパスワードの文字列はなし("")でよいのですが、
MS-SQL ServerではユーザーIDの指定が必要だと思いますのでサンプルを修正します。

<例> if SQL_SUCCESS<>SQLCONNECT( HDBC, DATANAME$, SQL_NTS, "UserID", ・・・

サンプルではSQLCONNECT に渡す値の最後が「SQLNTS」となっていますが、
これはサンプルの誤りで、SQL_NTSだと思います。
※SQL_NTSは、渡した文字列がNULL文字で終了する文字列であると意味するそうです。

SQLCONNECTが返す値がエラー(SQL_SUCCESS_WITH_INFOまたはSQL_ERROR)の場合
SQLERRORで(ODBC Ver3以降はSQLGetDiagRecを使います)エラーの詳細情報が
取得できます。
FBASICのサンプルはODBC Ver2.0のときのもので、
SQLGetDiagRecの関数宣言はサンプル中のODBC.BIにはありません。

557ひろ:2012/09/28(金) 20:44:29
名無しさん さっそくご教授いただきましてありがとうございます。
SQLNTSはSQL_NTSに変えてみましたがダメでした。
いろいろやってみましたが結局いまだよくわかりません。
DSNの設定での接続テストまではOKなのですが......

558556:2012/09/29(土) 03:33:03
サンプルのSQLNTSの誤りは、未定義変数として初期値ゼロとなり、
パスワードの文字数がゼロと指定したことになります。
パスワードが不要な場合は影響しないことになります。

559556:2012/09/29(土) 04:09:48
>>557
ODBCデータソースの設定のほうに「トレース」機能があります。
ODBCドライバに発行された命令の記録(ログ)をテキストファイルに出力する機能です。
この機能をONしてから実行し、出力されたテキストファイルの中を見ればODBCドライバが
返したエラーがわかると思います。


使用後は必ず「トレース」機能をOFFにして、出力されたテキストファイルを削除
してください。(実行速度が遅くなるなど、後でトラブルになるため。)

560旧人類:2012/10/03(水) 01:08:22
「名無しさん」有難う御座います。
フォントはフリーソフトの「外字コピー屋さん」を利用して駆動時に現フォントを保存して、
使用フォント(外字も含め)をコピーして立ち上がるようにしています、
無論該当ソフトの終了時には逆の動作で元のフォント状態に戻しています。
 (ただ停電の時の復元が少し手間取りますが)

「 knj$() で外字コード(jis &H7f21〜) を表示する」ことは諦めました、
Win95でのFB−Ver6.0 でも同様ですから、多分もともと機能がないのではと。

現在の私の解決策は エディタでIMEより使用する外字を配列文字変数にコピーして
その変数を表示する(symbol or ?)、配列の1番が jis &H7f21 に該当する。
data でソースプログラムに書き込むとか別ファイルで保存するとかしています。
APIを使用するより、こんな馬鹿げた方法が簡単な気がします。
何かいい方法があったら教えてください。

ところで TOKOさんのホームページ[ProgramTips]は閉鎖です移転ですか、
ご存知なら教えてください、APIを随分と参考にさせて頂きましたが。

561554:2012/10/04(木) 02:47:31
>>560 , 553

 「外字コピー屋さん」のWebページのほうを見させていただきました。
勉強になりました。

>
> Win95でのFB−Ver6.0 でも同様ですから、多分もともと機能がないのではと。
>
 Windows 95上でもだめだったとは..。
F-BASICのヘルプでは、knj$()関数で外字を印字できるような記述なのですが..。

 実験してみるとknj$()関数は空文字[""]を返してきました。
対になるjis()関数のほうは動作しました。
また、IMEで外字を文字列定数としてプログラムソースに直接記入すれば、
表示できました。フォント別の外字リンクをされている場合でも表示できました。

 なので、おっしゃるような方法をとるのがやはり簡単ということになります。

 プログラムソースに外字を直接記入してしまうのはあまりよくないので、
knj$()関数をお使いになられようとされたのでしょう。
 ここはknj$()関数を置き換えるように独自の関数を作り、その関数内で
直接記入した外字の文字列(配列)から取り出して返す処理をするのがよいと思います。
外字でない通常のjisコードのときは内部でF-BASIC本来のknj$()関数に
渡して処理させれば、knj$()関数を置き換えられるので可用性が高まります。

562554:2012/10/04(木) 06:04:07
 簡単な方法を忘れてました。
JISコードによるknj$()関数がだめなら、
Shift-JISコードで、上位・下位コードに分けて文字をつなげば
表示できます。

例: chr$(&HF0)+chr$(&H40)

563旧人類:2012/10/20(土) 00:39:48
554さん 
暫く不在していて、確認が遅れてすみません。
なるほど、こんな簡単な方法があるとは思いませんでした。
サブ画面(PICTURE)に自作外字を表示して選択する、方法に戻します。
参考になりもした、有難う御座いました、余分なファイルが減りました。

関連することですが、方法があれば教えてください。
「エデッタ画面でIMEを使用した時にIME側のフォント名を取得する方法」
IMEでは別のフォント名選択でき、そのフォントの文字・記号を選択画面に
表示はしますが、IMEで文字・記号をクリックした時に、そのフォント名を
取得できれば前記の問題もすべて解決するのですが。

564554:2012/10/20(土) 07:24:46
>>560

> ところで TOKOさんのホームページ[ProgramTips]は閉鎖です移転ですか、


こちらでしょうか。

「F-Basic Programming Tips」
[URL] tokovalue.jp

>>563
的を外しているかもしれませんが、ひとつ。
IMEのAPIで、
ImmGetContext()でコンテキストのハンドルを取得。

ImmGetCompositionFont()で取得したLOGFONT 構造体の中に
変換中に表示するフォント名があります。

変換中に表示するフォントの変更は ImmSetCompositionFont()

565554:2012/10/20(土) 07:34:39
>>563
役に立つかどうか、むりやりな方法をひとつ考えてみました。
「IMEの文字パッド(文字一覧)で表示されている(いた)フォント名の取得方法」。

FindWindowEx()で[ひとつめの]IMEの文字パッドのウィンドウを探します。

親ウィンドウのハンドル: NULL (0&)
子ウィンドウのハンドル: 初期値は NULL (0&)
クラス名:"msime98imepad" <--注:IMEのバージョンやOFFICE IMEでは違うかも。

見つかったウィンドウのプロセスIDをGetWindowThreadProcessId()で取得し、
自分のアプリのプロセスIDと比較して一致しなければ他のアプリ用なので、
FindWindowEx()で次を探します。見つかるか戻り値がNULLになるまで繰り返します。

子ウィンドウのハンドル: 先ほど見つかったウィンドウのハンドルに変更

自分のアプリのIMEの文字パッドのウィンドウが見つかったら、次の処理。

FindWindowEx()で子ウインドウを探します。

親ウィンドウのハンドル: 見つかったIMEの文字パッドのハンドル
子ウィンドウのハンドル: NULL (0&)
子ウインドウのクラス名:"ACPAD"

さらに、クラス"ACPAD"の子ウインドウ(コンボボックス)をFindWindowEx()で順次探します。

親ウィンドウのハンドル: 子ウィンドウのクラス"ACPAD"のハンドル
子ウィンドウのハンドル: NULL (0&) または 前回見つけたウィンドウのハンドル
子ウインドウのクラス名:"ComboBox"

(おそらく2つめの)コンボボックスにGetWindowText()でテキストを取得すれば、
IMEの文字パッドで表示されているフォント名が得られます。

566旧人類:2012/11/01(木) 00:47:04
554 さん
TOKOさんのホームページ[ProgramTips] ですが、
当方の「お気に入り」のURLがなぜか書き変わってました、ちゃんと存在してました。
すみませんでした、よく利用してたページなので助かりました。

567旧人類:2012/11/01(木) 01:02:28
554 さん 
追記 「フォント名の取得」の件ですが、成功したら書き込みます、結果は多忙で少し
   時間がかかるかも。

568ねじ:2013/08/25(日) 08:27:51
教えてください。F-BASIC V6.3のソフトを手に入れたいのですが、無理ですかね。

569はぜ:2013/10/23(水) 10:49:41
 はじめまして。PC8001からので移植して 行番号などそのまま
で使っています。
 仕事のデータ シーケンス 一件 12変数の 1万ぐらいを ワードパッド
で保存して やりとりしていますが、読み込むとEOFがききません。
 結局 データのひとつを指標にして 終わりを認識させているので
すが、どういった障害があるのでしょうか。
 同じ型のデータで 少量ならばEOFでおわるのですが。
 どなたか教えいていただければ幸いです。

570名無しさん:2013/10/24(木) 04:49:15
入力命令が INPUT# か LINE INPUT# かで違いますが、

EOF(関数)が効かないということは INPUT# でデータ中の項目の区切りが
途中でずれたということが考えられます。
区切り記号は半角のコンマ、コロンと空白。(空白は数値データで)

また、ファイルの終端であることを示すEOFコードとして
制御コード(16進数で1Ah)がありますが、

Windowsアプリ(メモ帳・ワードパッドやExcelなど)ではEOFコードは
字形がない文字として表示(半角の中点「・」)され、文字として扱わ
れるがゆえに、ワードパッドなどで編集するデータ中にEOFコードが
紛れ込んでいると、問題発生の原因となります。

571はぜ:2013/10/25(金) 09:34:12
さっそくのご返答ありがとうございます。

 LINE INPUT#はつかっていません。データも何度も確認しています。
 読み込むと同時に画面に表示させていますが、 
 最後まで正確に読んでくれますが、最後尾 どうしても 「変数の型
とファイル内のデータ形式があっていません。」がでてしまいます。

 一度 データ量を段階的に減らしたりして試してみたいと思います。
 何か 量的な制限があるような気もしますので。

 しばらく 時間をいただきます。

 目的としては 全体のファイルに 当日出たデータを 自動的にくっつ
けたく、今は、ワードパッドで手動で結合しているのですが、うまい方法が
ないか思考錯誤しています。

572570:2013/10/26(土) 03:13:43
エラー番号:58「変数の型とファイル内のデータの形式が合っていません 」
ですか...。
INPUT# 命令で「数値型」の変数を指定している場合に起きるので
普通にありがちな可能性としては、
ファイルの末尾に空行(改行のみ)や空白文字がある場合とか。

※F-BASICの障害修正パッチのダウンロード (念のため記述)
ttp://www.fmworld.net/product/soft/fbasic/download/


F-BASICのFILECOPY命令では、テキストファイルの結合によるデータ蓄積は
できないので、別の方法としてはバッチ(*.BAT/*.cmd)ファイルを作って
それをSHELL 命令で呼び出すかバッチコマンド一行を直接指定する。

バッチの例) FILE1の末尾にFILE2の内容を追加(FILE2はそのまま残る)
注:失敗するとFILE1などを消失するので事前のバックアップは必須。

COPY /A FILE1.TXT+FILE2.TXT
例2)ファイルの内容を結合した結果をFILE3で新たに作成
COPY /A FILE1.TXT+FILE2.TXT FILE3.TXT

/Aオプションはテキストモード、つまり指定した各ファイルのEOFコードを
認識して処理、末尾にEOFコードを付加します。

かわりに /Bオプションを指定したときにはEOFコードはなにも処理されない
ので実質、EOFコードが【必ず無い】ファイル同士を扱うときのみ指定可能。

573名無しさん:2013/10/26(土) 19:26:17
F-BASIC V6.3 (U003適用済)で単純なテストを実施。

○実施テスト内容
データ内容:12345678,abc, ・・・のくりかえし定型
データ形式:カンマ区切りで「数値,文字列」を12組の計24項目で改行
データ末尾にEOFコードはなし

データ量:3万件(行) 、ファイル総容量 4.49MiB(4,710,000バイト)

データ読み込み終了条件:EOF()関数による検出
データ読み込み内容:数値変数,文字列変数の項順で12組の計24変数に一回で読む
input #1,DTL#(1),DTA$(1), ・・・ DTL#(12),DTA$(12)


実施内容:データ量を2万件および3万件(行)のファイルに対して実施。
実施環境:実行中の空きメモリ(RAM):約80MiB

結果確認方法:
・読み込み回数のカウント値採取
・EOF()関数で検出で終了後、再度input#命令発行でエラー発生(err 54)を確認。

結果:異常検出なし (ランタイム使用型・独立型のコンパイル共に)

574はぜ:2013/10/28(月) 10:01:36
  丁寧な実験 と 提案 ありがとうございます。

 当方 Win 7 で F-basicは ver6.0 L10 とありました。
 プログラムは 下記 です
 eof が 効かないので 232行で 通し番号を拾って 読み込み終わりにしています。
念のため231行で 表示していますが データはきちんと最後までよんでいます。
 
小生 PC8001の名を出したように 高年ですので 基本的なBASIC言語以外は
わかりませんし 挑戦する気力もないのでご容赦ください。

 DOS-V から WIN へ移植するのに 7年もかかりました。
 
 また 解凍など要するアップデイトと 言うんでしょうか ちよっと怖くて
とてもできません。

 今は 少しでも 自動化しようと試みてはいますが。


226 open "tcz2013" for input as #2 'datdat10
227 ta!=0
228 while not eof(2)
229 ta!=ta!+1
230 input #2,DCO#(TA!),DHI(TA!),DNM!(TA!),DDA$(TA!),DNA$(TA!),DBL$(TA!),DNM$(TA!),DNO(TA!),DPR!(TA!),DPZ!(TA!),DCP(TA!),DPL(TA!)
231 'print DCO#(TA!),DHI(TA!),DNM!(TA!),DDA$(TA!),DNA$(TA!),DBL$(TA!),DNM$(TA!),DNO(TA!),DPR!(TA!),DPZ!(TA!),DCP(TA!),DPL(TA!)
232 'if DNM!(TA!)=81118 then 236 'テータの終わりを認識してくれるかどうか
235 wend
236 close #2

575570:2013/10/29(火) 02:22:57
バージョン情報の詳細はF-BASICを起動してメニューの[ヘルプ(H)]−[バージョン情報(A)]
大きく表示されたF-BASICのロゴの左下に 「V6.0L10」の後にあるU00xの有無で
アップデート適用有無が確認できます。V6.0ではV6.0L10 U002が最終版です。

とりあえずF-BASIC 6.0用のアップデートパックをダウンロードしてその中にある
UPDATE.TXT(障害修正一覧の項)を見てみました。
斜め読みですがEOFの件に該当しそうなものは見当たりませんでした。


Windows 7の上でF-BASIC V6.0L10ですか・・。
効果があるかはわかりませんが、Windows 7の機能の
「アプリケーション互換モード」を設定してみてはどうでょうか。

F-BASICで作成(翻訳/コンパイル)した実行ファイルに次の操作を行う。

1. 実行ファイルをマウスで右クリックしてプロパティを選択。
2. 表示されたウィンドウの中の「互換性」のタブを選択。
3. [互換モード]という囲みの中の
 3-1.「□互換モードでこのプログラムを実行する」にチェックを入れる。
 3-2.すぐ下のボックスをクリックして一覧の中から「Windows 98/Windows Me」を選ぶ。
4.[適用(A)]ボタンを左クリック。[OK]ボタンを左クリックして閉じる。

*設定を解除するときは3-1. でチェックを外す操作をしてください。(3-2.は不要)

576570:2013/10/29(火) 02:51:22
最後のデータまで正常に読めているのにかかわらず
EOF()が効かないという障害ということで、
お見せいただいたプログラムに障害回避の追加を試みます。

△var DTEST$

open "tcz2013" for input as #2 'datdat10
△open "tcz2013" for input as #3 'datdat10を二度開く(LINE INPUT用)
TA!=0
while not eof(2)
△line input #3, DTEST$
△if len(trim$(DTEST$))<12 then print "Over!",TA!:exit 'データの終わりをオーバー?
TA!=TA!+1
input #2,DCO#(TA!),DHI(TA!),DNM!(TA!),DDA$(TA!),DNA$(TA!),DBL$(TA!),DNM$(TA!),DNO(TA!),DPR!(TA!),DPZ!(TA!),DCP(TA!),DPL(TA!)
'print DCO#(TA!),DHI(TA!),DNM!(TA!),DDA$(TA!),DNA$(TA!),DBL$(TA!),DNM$(TA!),DNO(TA!),DPR!(TA!),DPZ!(TA!),DCP(TA!),DPL(TA!)
'if DNM!(TA!)=81118 then exit 'テータの終わりを認識してくれるかどうか
wend
close #2
△close #3

補足:
・△がある行を追加しました。
・追加したif文の、[DTEST$変数の長さ<12]とは、1行12項目のデータは、
区切りの文字だけでも11(桁)あるのだから・・・。
・「then 236」(236行へGO TO)は「while - wendループの外へ出る」と解釈し、
exit命令に置き換えました。

577はぜ:2013/10/30(水) 10:30:32
試みてみました。うまくいきました。
 ありがとうございます。感謝申し上げます。

 長年の停滞が解除されて、よりよいソフトにできそうです。
 
 自分で自由に作れるソフトはすばらしいものですね。しかし 今は
頭の奥が痛くなるだけではありますが。

 重ねて御礼申し上げます。

578名無しさん:2013/10/31(木) 03:28:51
>>571
参考プログラムです。機会があればどうぞ。

'**** FILE1の末尾にFILE2の内容(テキストデータ)を追加する。
var L1 as long '読み込んだ行数
var L2 as long '実際に追記した行数
var DTEST$

open "FILE1.TXT" for append as #2 'このファイルに追記する
open "FILE2.TXT" for input as #3 '読み込むデータ
L1=0
L2=0
while not eof(3)
L1=L1+1
if L1>=20000& then print "LoopBreak!":exit '***EOFが効かない?
line input #3, DTEST$
if not (len(trim$(DTEST$))<12) then '空行等でなければ出力
L2=L2+1
print #2,DTEST$
endif
wend
close #2
close #3
'**** F-BASICにより自動付加されたファイル末尾のEOFコードを削除する。
DTEST$=space$(1) '読み込むバイト数の桁の領域確保
open "FILE1.TXT" for binio as #2 '対象(※追記したファイル)
if lof(2)<>0 then 'ファイルの内容が空でないこと
seek #2,-1,2 '***mode 2:ファイルの末尾から -n移動
fread #2,DTEST$ '確認のため一度読み込む
if DTEST$=chr$(&H1A) then 'EOFコードかどうか確認する
seek #2,-1,2 '再度、移動する(※EOFコードの位置)
truncate #2 '現在の位置からファイルの内容を切り捨てる
endif
endif
close #2

579はぜ:2013/12/14(土) 09:48:25
 質問です

 これは 別に不都合を感じてはいないのですが、MX VISTA 7と
すすむほどに BASICの表示枠が だんだん 小さくなっていきます。
 
 そんなものでしょうか。

580570:2013/12/16(月) 06:27:48
>>BASICの表示枠が だんだん 小さくなっていきます。

1. F-BASICのプログラム編集画面の文字が小さいという場合
メニュー:表示(V) - オプション(O) で
表示されたダイアログの[エディタ]タブの中の
フォント(F)とサイズ(S)の、設定がおそらく

「FixedSys」になっていてサイズが選べないと思います。

 これを「MS ゴシック」や「MS 明朝」などに変更すれば
サイズを選べるようになります。
選択したサイズによっては、表示がくずれるなどの問題が起きることが
あるので、その場合は他のサイズに選びなおしてください。
 なお、「MS Pゴシック」や「MS P明朝」はプロポーショナルフォント
ですので、避けたほうがよいでしょう。


2. F-BASICで作成したプログラムの実行画面の場合

旧来の(DOSや8ビットパソコン上)のBASICと同等な「手続き型」で作成した
場合、画面の大きさや背景色などの定義情報がないので新たに
フォームの編集が必要です。
リソースファイル(.RC)を作成してその中の
フォーム − 「MAINFORM」を開き、MAINFORMのプロパティ画面を
表示させて、フォントの項目を変更します。

詳細については、富士通のサポートページの「活用ガイド」
http://www.fmworld.net/product/soft/fbasic/gpib/
にあるワンポイントレッスン集の、
  第一回「実行画面を大きくしよう」 (PDF形式)

この文書(lesson_1.pdf)を表示するかダウンロードして
ご覧ください。

581はぜ:2013/12/19(木) 10:04:41
途中経過報告です

 ありがとうございます。うまくいきました。実行枠です。すみません。

 ただ、

 ①表示速度が かすかに 遅くなる。
 ②実行枠ですが、繊細で、いろいろボタンを押したりすると戻ったりしてしまう。
 ③プログラムの実行するたびに、変更されたモジュールが・・・と出る
 ④何もしていない ほかのプログラムまで ③とおなじになる。

                 以上こんな現象がでます。

582570:2013/12/20(金) 09:32:13
>>581
実行枠が不安定ということには複数の問題がからんでいると思います。
一つづつ解決していきましょう。

まずは、リソースファイル(.RC)のフォームのブロパティ設定から。
F-BASICで、作成済みのリソースファイル(.RC)を開き、フォーム「MAINFORM」を
開いて画面に表示させます。

(a): フォームの「プロパティ」ダイアログを表示させてプロパティ各項目を
設定・確認していきます。

・ダイアログの中の表示内容(P):【クライアントエリア】に切り替え、
マッピングモードを確認・設定します。標準は「テキストモード」です。
テキスト行数とテキスト桁数を確認します。(標準値は80桁、24行)

・ダイアログの中の表示内容(P):【フォント】に切り替え、
フォントとフォントのサイズを任意に設定。

・ダイアログの中の表示内容(P):【フレーム】に切り替え、
ウィンドウの初期位置の項目を設定します。(初期値は「ユーザー設定」)
水平スクロールと垂直スクロールを「あり」に変更。(*F-BASICの初期動作に合わせた。)

・ダイアログの中の表示内容(P):【基本スタイル】に切り替え、
位置X座標および位置Y座標をゼロに設定。(これは任意です。F-BASICの初期動作に合わせた。)
※これをゼロにすると大抵、F-BASIC本体のメニュー部と重なって操作のじゃまになりますが・・。


(b): ここで、フォームの画面枠の大きさを再設定します。表示されているMAINFORMの
枠の右下隅をマウスでドラッグして枠のサイズを縦横とも動く最大まで伸ばします。
(一度左上にドラッグして少し小さくしてから伸ばすとよい)
 MAINFORMの枠にある垂直・水平スクロールバーが消えます。
*別の方法としてはプロパティ【基本スタイル】のサイズの各項に、
わざと大きな数字(3000とか)を入力して自動訂正により枠のサイズを最大にする方法があります。

(c): リソースファイル(.RC)を上書き保存します。

 任意のプログラムにリソースファイル(.RC)を登録して(再)翻訳・実行して
動作を確認します。

583570:2013/12/20(金) 09:40:52
>>581
「変更されたモジュールが・・・」のメッセージが《ほかのプログラムまで》出る件ですが、

リソースファイル(.RC)を登録したことで出るようになったものと思います。

 旧来のBASICの多くは「インタプリタ」方式でしたがF-BASICは
「コンパイラ」方式ですのでプログラムを実行する前に、
コンパイル(F-BASICでいう翻訳)によって実行可能形式( .EXE)のファイルを作ります。

 F-BASIC本体の中から、なんらかのプログラムを実行させると、
まず、コンパイル(翻訳)するべきかどうか個々のファイル(.BASや.RCなど)ごとに
F-BASICが判断して、必要なときは確認のメッセージを出すという内部動作になります。

リソースファイル(.RC)を登録したことで、作成した(一連の)プログラムに変更点が有る
という判断になるため、メッセージが出されています。

続けて過去に作成したほかのプログラムを開いて実行しようとしても同じ結果となります。
*実行可能形式ファイル(.EXE)よりリソースファイル(.RC/.RES)の方の最終更新日付が新しい

 リソースファイル(.RC)の登録内容はF-BASIC本体に記憶されるのではなく、
再度のコンパイル(翻訳)で再作成された個々の実行可能プログラム(.EXE)の
中に埋め込まれます。
 また、F-BASIC本体を再起動すると、リソースファイル(.RC)の登録は解除されてしまいます。
(メニュー:プロジェクト(P) - 環境(E) のダイアログ設定内容)

 このため、リソースファイル(.RC)による画面枠の変更内容が実行開始時に反映されたり
されなかったり、解除しても元に戻らないといった現象が発生します。
 この問題を軽減するためにはプロジェクトファイル(*.MAK)を新たに作成し、これを通じて
F-BASICに認識させる必要があります。(後述)

584570:2013/12/20(金) 09:55:03
>>581
 リソースファイル(.RC)を登録したことにより、
「変更されたモジュールが・・・」の翻訳を促すメッセージが、
BASICプログラムを変更していないのにもかかわらず、毎回出るといった問題についてですが、
これへの対処にはプロジェクトファイル(*.MAK)を一つの実行プログラム毎に作成する必要が
あります。

プロジェクトファイル(*.MAK)の役目はおおまかに、
 ・メニュー:プロジェクト(P) - 環境(E) のダイアログで設定する内容を記録する
 ・一つの実行可能形式ファイル(.EXE)を作るために必要なソースファイル等の一覧を記録
   a. (一つまたは複数の)BASICソースプログラム(.BAS、.SUB)
   b. リソースファイル(.RC)およびアイコンファイルやその他のファイル
   c. 必要な追加ライブラリやオブジェクトファイル
 ・個々のファイルを再コンパイル(翻訳)して実行可能形式ファイルを再作成する
  かどうかの判断材料にする

■プロジェクトファイルの手順説明
 プロジェクトファイル関係について、>>580 で紹介したワンポイントレッスン(第一回)
にはまったく説明されていないため説明不足となったことをお詫びいたします。

 では、既存のBASICプログラムにプロジェクトファイル(*.MAK)を追加作成する手順を
説明します。 ここでは仮に次の各ファイル名として説明します。
 ・既存のBASICプログラムのソース: UNTIL1.BAS
 ・作成済みのリソースファイル: MAINFORM.RC
 ・実行可能形式ファイル(.EXE): UNTIL1.EXE

1. F-BASIC起動後、メニューのプロジェクト(P) - 新規作成(N)を選択。ダイアログの
ファイル名欄を「UNTIL1.MAK」に書き換えてOKボタン。
(「UNTIL1.MAK」と同名でプロジェクトウィンドウが表示されます)
2. メニューのプロジェクト(P) - 環境(E)を選択。ダイアログのファイル(F)ボタンを押して
リソースファイル「MANFORM.RC」を選択。
2-2. ダイアログのプロジェクトと実行形式ファイル欄にあるファイル名を再確認します。
 (必要ならばここでファイル名の指定を変更することができます)
2-3. OKボタンでダイアログを閉じます。
4. メニューのプロジェクト(P) - モジュール(M)を選択。
4-2. ダイアログの「ソース」タブでファイル(I)ボタンを押してBASICプログラムのソースを
選択(登録ボタン)。
  もし、複数のファイルに分かれている場合は再度ファイル(I)ボタンを押す操作を繰り返す。
4-3. ダイアログの右側の「プロジェクトモジュール欄」の一覧にBASICプログラムのソースが
あることを確認してOKボタンでダイアログを閉じます。
5. メニューのプロジェクト(P) - 上書き保存(S)または名前を付けて保存(A)を選択し、
ブロジェクトファイル「UNTIL1.MAK」をファイルに保存します。

6. 後は、通常通りプログラムを翻訳メニューから翻訳するか実行メニューが実行します。

後でこのBASICプログラムを修正・実行する場合はBASICプログラムを直接開くのではなく、
メニューのプロジェクト(P) - 開く(O)を選択してプロジェクトファイルを開きます。
*メニューのファイル(F) - 開く(O)のダイアログで「ファイルの種類(T)」の欄を「プロジェク

ト(*.mak)」に変更してファイルを選択しても同じです。

585570:2013/12/20(金) 11:34:26
リソースファイル(.RC)でフォーム「MAINFORM」を作成してプログラム実行時のウィンドウ
を置き換えた場合、F-BASICの従来のウィンドウと異なるところがいくつかあるようです。

$$ここでは従来のウィンドウを仮に[FB画面]、リソースファイルで作成した
  「MAINFORM」を[RC画面]と表記します。

○実行時のウィンドウのタイトル名
[FB画面]:実行時のプログラムのファイル名が自動で設定される
[RC画面]:「MAINFORM」のプロパティに設定した【フレーム】の「テキスト」項の内容

問題点:複数のプログラムを実行中にウィンドウを最小化したときなどに
表示されている名称が同じ(MAINFORM)になって区別がつかなくなる。

解決方法-1 (F-BASICの標準機能でのみ実現、実用上ほぼ同じに):
 BASICプログラムの先頭に次の文を追加する(2行)。

#include "WINDOWS.BI"

SETWINDOWTEXT "(表示するタイトル名)" '<−プログラム名など任意の文字列を入れる


解決方法-2 (Windowsの機能を利用):
 ここでは例示しませんが、Windows APIの「GetModuleFileNameA」を呼び出して
プログラムのファイル名を取得して設定する方法になります。


○実行時/最小化時のアイコンのイメージ
[RC画面]:[FB画面]のときとアイコンが異なる。

解決方法:
もし、同じアイコンにしたい場合は、F-BASICをインストールしたフォルダ中のBINフォルダ
内にF1A0DFLT.ICOというアイコンファイルがあるのでこれをリソースファイル(.RC)、
「MAINFORM」にアイコンとして登録する。

1.リソースファイル(.RC)を開き、「MAINFORM」を画面に表示させる。
2.メニューの リソース(S) - インポート(R)を選択する。
 もし、グレー色になってメニューを選択できないときは「MAINFORM」のウィンドウを
マウスでクリックしてから、メニューを選択操作する。
3.インポートするファイルを選択するダイアログが表示されるので。
F-BASICをインストールしたフォルダの中のBINフォルダまでたどり、
F1A0DFLTというアイコンファイル(.ICO)を選択して開くボタンを押す。
4.「MAINFORM」のプロパティ ダイアログを表示させる。
ダイアログの中の表示内容(P):【フレーム】に切り替え、アイコンの項の内容から
f1a0dflt (F1A0DFLT)を選択する。
5.リソースファイル(.RC)を上書き保存します。

586570:2013/12/21(土) 03:47:49
>>581
>表示速度が かすかに 遅くなる。


Windows環境では速度が一定しないこともあり、
あくまでひとつの参考値としてですが、
 リソースファイル(.RC)で、おもに以下の状態に設定
 ・フォント:MS 明朝 (サイズの項は変更せず(FixedSysのときと同値))
 ・テキストは80桁,24行のまま
 ・フォームの画面枠を広げる(画面枠はおもに横方向に広がった)
 ・背景色は白色

(a)実行するプログラム:テキストを連続で何行も表示して画面のスクロール多い

このときの画面表示速度の低下は 7%から15%程度

(b)実行するプログラムは(a)と同じでフォント設定はFixedSysに。

この場合は(a)よりも若干速い。


(c)実行するプログラム:テキストを画面全行書き換えるが画面スクロール少ない

このときの画面表示速度は逆に若干速い傾向。


表示速度についてはさまざまな要因があるため推測でしかありませんが、

・テキスト画面のスクロールが多いような場合については、
実行画面全体の表示を書き換えることになるため、画面の面積に比例して
速度が低下する。
・テキスト画面のスクロールが多いような場合はF-BASICの元の画面が速い?
・テキスト画面のスクロールが無く、テキストの書き換えが少ない場合は
リソースファイルの画面の設定次第では若干速い可能性がある。


余談ですが、リソースファイルで画面のマッピングモードを
「テキストモード」からTWIPSなどに変更すると画面の描画速度は高速化します。
これはF-BASICによる画面の互換機能を捨ててWindows互換にするということを意味します。

587はぜ:2013/12/25(水) 08:10:23
ありがとうございます 
繁忙期に入りましたので、しばらく試行を保留させてください。


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板