ab.com コミュニティ https://www.activebasic.com/forum/ |
|
ActiveBasic 5.0 CP1の機能に関する詳細情報 https://www.activebasic.com/forum/viewtopic.php?t=1291 |
ページ 1 / 1 |
作成者: | 山本 [ 2006年8月08日(火) 16:21 ] |
記事の件名: | ActiveBasic 5.0 CP1の機能に関する詳細情報 |
ActiveBasic 5.0 CP1、無事にリリースを終えました。 後は皆様からのフィードバックを参考にさせていただきながら、開発に打ち込んでいきます。 ところで、今回リリースしたバージョンにおきまして、機能の追加・変更に関する詳細情報をのせたページを作りませんでしたので、ここでお知らせしておきます(大雑把で申し訳ないです)。テスト時の参考にしてみてください。 【言語仕様の改良】 ・従来のVirtual修飾子の意味を持つAbstract修飾子を追加しました(抽象メソッドの定義)。 ・Virtual修飾子で実装定義が必要になりました。 ・Interfaceステートメントを正式に導入しました(詳細はヘルプをご覧ください)。 ・クラスメソッドとして、演算子のオーバーロードができるようになりました。 ・Gosub~Returnステートメントがグローバル領域限定の命令になりました。 ・ローカル領域でReturnステートメントを呼び出すことで、プロシージャから抜け出せるようになりました(戻り値も指定できます)。 ・cdeclでのエクスポートが可能になりました(詳しくはヘルプのFunctionをご覧ください) ・オブジェクトインスタンス(ポインタではない)を関数の戻り値として指定できるようになりしまた。 ・Set_LONG_PTR関数、Get_LONG_PTR関数を導入しました(ポインタ&整数値操作において、x86/x64プラットフォームの違いを吸収します)。 ・関数定義において、パラメータ及び戻り値の型を省略した際に警告を出すようにしました。 【コーディングエディタ・IDEの改良】 ・実行ファイルの名前をProjectEditor.exeからabdev.exeに変更しました。 ・タブコントロールが付きました。 ・ルーラー表示が可能になりました。 ・Web検索機能が付きました。 ・ファイルメニューからプロジェクトフォルダを開けるようになりました。 ・印刷機能が付きました。 ・最近使ったファイル・プロジェクトの表示に対応しました(ファイルメニューから見れます)。 ・正規表現による検索及び置換が可能になりました(Perl5互換)。 ・プロジェクトオプションにて、デバッグ立ち上げ時のコマンドライン引数を指定できるようになりしまた。 ・プロジェクトオプションにて、DLLデバッグ時のデバッグセッションアプリケーションの指定が可能になりました。 ・ツールバー(デバッグコマンド)を追加しました。 ・ツールバー(リリースコマンド)を追加しました。 ・デバッグコンパイルによって生成された実行可能ファイルが実行されているとき、そのプロセスにアタッチし、デバッギングを行えるようになりました。 ・デバッグコマンドとして「カーソル行まで実行」を追加しました(ブレークポイントの設定コマンドは、CP1の段階では未実装です)。 ・プロジェクトビューの関数タブを、リアルタイムに更新されるクラスビューに変更しました。 【その他の変更点】 ・デバッグ用EXE/DLLファイルに付属する.mdlファイルの取り扱いを廃止しました(デバッグ用データは実行可能ファイルの.debugセクションに埋め込まれます)。 ・デバッグコンパイルされた実行可能ファイルがデバッガをかませなくても単独で動作するようになりました。 ・各種コマンドの増加に伴い、デバッグ・リリースコマンドのショートカットキーを変更しました(オプションで設定できるようにしたいですね…)。 こんな感じかと思いますが、重要なポイントで見落としなどがあったらご指摘ください。 各種機能に関してのバグ報告、仕様提案、ご意見・ご感想などがございましたら、適切なフォーラムへスレッドを立ててくださるよう、ご協力願いますm(__)m |
作成者: | OverTaker [ 2006年8月08日(火) 20:16 ] |
記事の件名: | |
コンパイルエラーの文字情報のところをダブルクリックすると、そこの行に飛べるようになっていますね。 |
作成者: | 山本 [ 2006年8月08日(火) 20:26 ] |
記事の件名: | |
引用:
コンパイルエラーの文字情報のところをダブルクリックすると、そこの行に飛べるようになっていますね。
エラー行の連動表示はAB4でも有効だったかと思います…。
|
作成者: | OverTaker [ 2006年8月08日(火) 20:52 ] |
記事の件名: | |
あ!本当ですね。お騒がせしましてすみませんでした。 邪魔だったら削除お願いします。 |
作成者: | BASIC32 [ 2006年8月11日(金) 13:31 ] |
記事の件名: | 関係ないかも・・・ |
私の目が節穴なだけかもしれませんが、 ActiveBasic 5.0 CP1には、サンプルが付属していないように見えるのですが。。。 あと、Windows9x系に対応していないのが、残念です・・・ 開発用PCがWinMeだけという罠・・・ |
作成者: | yu0627 [ 2006年8月11日(金) 15:54 ] |
記事の件名: | 下位互換について |
AB5.0CP1で開いてコンパイルした後、閉じてAB4.24.00で開くと、当然ながら(?)「プロジェクトファイルが壊れている」と表示されます。 そこで、プロジェクトファイルをテキストエディタで開いて#VERSION=9とし、「#DEBUG_CMD_LINE」「#DEBUG_EXE_PATH」の行を削除するとAB4.24.00で起動できましたが、その他、プロジェクトファイル関係に仕様変更はあるのでしょうか。 |
作成者: | konisi [ 2006年8月11日(金) 20:41 ] |
記事の件名: | |
ライブラリ開発板のスレで明記されていましたが、最大で次の4つが加わっているようです。 コード: #OUTPUT_RELEASE= #OUTPUT_DEBUG= #DEBUG_CMD_LINE= #DEBUG_EXE_PATH=この4つを消せばab4でも動くとのこと。 あと、Win9x系に入るWinMeについてですが、動作環境の下の部分に書いてあるように 引用: ABが提供する機能のすべてをご利用いただくには、Windows2000以上のバージョンのNT系OSが必要になります。ただし、生成したEXE/DLLは9x系のWindowsでも動作可能ですので、必要に応じてクロスコンパイルを行えます。
と、機能を全部使うにはWin2000以上のNT系OSが必要と書いてあるだけで、9x系OSでもある程度は動くかと思います。試してませんが。 |
作成者: | mako20 [ 2006年8月11日(金) 21:13 ] |
記事の件名: | AB5CP1(ベータもあれば)で作成したソフトは配布可能ですか? |
タイトルとおりの内容で、配布するソフトは試行錯誤し続けているソフトでここから本格化にしようと思い、この機会に配布しようと思っていますが 可能ですか?Discoversoftが企業化されているので、他の企業のように不可能という可能性もあるので書きました |
作成者: | yu0627 [ 2006年8月11日(金) 21:22 ] |
記事の件名: | Re: AB5CP1(ベータもあれば)で作成したソフトは配布可能ですか? |
引用: ライブラリ開発板のスレで明記されていましたが、最大で次の4つが加わっているようです。
ありがとうございます。コード: #OUTPUT_RELEASE= #OUTPUT_DEBUG= #DEBUG_CMD_LINE= #DEBUG_EXE_PATH= この4つを消せばab4でも動くとのこと。 引用: タイトルとおりの内容で、配布するソフトは試行錯誤し続けているソフトでここから本格化にしようと思い、この機会に配布しようと思っていますが もちろん可能ですよ。僕だって配布していますし。
可能ですか?Discoversoftが企業化されているので、他の企業のように不可能という可能性もあるので書きました |
作成者: | BASIC32 [ 2006年8月13日(日) 10:45 ] |
記事の件名: | 全く・・・ |
WindowsMeでは、全く起動しません・・・ Windowsのエラーメッセージが表示され、 「NTDLL.dllがどーのこーの・・・」 「システムに接続されたデバイスは、正常に動作していません。」 だったような・・・ 一応、NTDLL.dllは存在するようですが、Windows2000とは、 バージョンが違うようです。(当たり前だ) |
作成者: | イグトランス [ 2006年8月14日(月) 11:02 ] |
記事の件名: | |
最新のAB5をダウンロード 動作環境に書かれているとおり,AB5はWindows NT系でしか動かないことになっています。 しかし,今のところ裏技的に9x系でも動かす方法があります。 現在AB5がNTを要求している理由は,PSAPI.DLLを使用しているからです。つまりPSAPI.DLLの代わりを用意すればよいわけです。 AB 4.24で新しくDLLプロジェクトを作成し,次のコードを書きます。 [ここをクリックすると内容が表示されます] コード: #include <api_tlhelp32.sbp> Dim OSVersionInfo As OSVERSIONINFO Dim hmodPsapi As HMODULE Function Export DllMain(hinstDLL As HINSTANCE, fdwReason As DWord, lpvReserved As VoidPtr) As Long 'DLLエントリポイント Select Case fdwReason Case DLL_PROCESS_ATTACH 'DLLがプロセス空間にロードされた時に実行されます。 _System_StartupProgram() ' DisableThreadLibraryCalls(hinstDLL) OSVersionInfo.dwOSVersionInfoSize = Len (OSVersionInfo) GetVersionEx(OSVersionInfo) DllMain=TRUE End Select End Function Function IsRunningOnNT() As BOOL If OSVersionInfo.dwPlatformId = VER_PLATFORM_WIN32_NT Then IsRunningOnNT = TRUE Else IsRunningOnNT = FALSE End If End Function TypeDef PGetModuleFileNameExA = *Function( hProcess As HANDLE, hModule As HMODULE, pFilename As PSTR, nSize As DWord ) As DWord TypeDef PEnumProcessModules = *Function( hProcess As HANDLE, phModule As *HMODULE, cb As DWord, pcbNeeded As *DWord ) As BOOL TypeDef PEnumProcesses = *Function( pidProcess As *DWord, cb As DWord, cbNeeded As *DWord ) As BOOL Dim pGetModuleFileNameExA As PGetModuleFileNameExA Dim pEnumProcessModules As PEnumProcessModules Dim pEnumProcesses As PEnumProcesses Sub PsapiInit() If IsRunningOnNT() <> FALSE And hmodPsapi = 0 Then Dim systemPath[ELM(MAX_PATH)] As Byte GetSystemDirectory(systemPath, MAX_PATH) lstrcat(systemPath, "\psapi.dll") hmodPsapi = LoadLibrary(systemPath) pGetModuleFileNameExA = GetProcAddress(hmodPsapi, "GetModuleFileNameExA") As PGetModuleFileNameExA pEnumProcessModules = GetProcAddress(hmodPsapi, "EnumProcessModules") As PEnumProcessModules pEnumProcesses = GetProcAddress(hmodPsapi, "EnumProcesses") As PEnumProcesses End If End Sub TypeDef HMODULE = HINSTANCE TypeDef PSTR = BytePtr Function Export GetModuleFileNameExA( hProcess As HANDLE, hModule As HMODULE, pFilename As PSTR, nSize As DWord ) As DWord If IsRunningOnNT() Then PsapiInit() GetModuleFileNameExA = pGetModuleFileNameExA(hProcess, hModule, pFilename, nSize) Else GetModuleFileNameExA = GetModuleFileName(hModule, pFilename, nSize) End If End Function Function Export EnumProcessModules( hProcess As HANDLE, phModule As *HMODULE, cb As DWord, pcbNeeded As *DWord ) As BOOL If IsRunningOnNT() Then PsapiInit() EnumProcessModules = pEnumProcessModules(hProcess, phModule, cb, pcbNeeded) Else End If End Function Function Export EnumProcesses( pidProcess As *DWord, cb As DWord, cbNeeded As *DWord ) As BOOL If IsRunningOnNT() Then PsapiInit() EnumProcesses = pEnumProcesses(pidProcess, cb, cbNeeded) Else Dim hSnap As HANDLE Dim pe As PROCESSENTRY32 Dim bResult As BOOL Dim i As DWord ' スナップショットを作成 hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0) ' プロセスの最初の情報を取得 pe.cntUsage = Len (pe) bResult = Process32First(hSnap, pe) While bResult If cb >= (i + 1) * SizeOf (DWord) Then pidProcess = pe.th32ProcessID End If i++ bResult = Process32Next(hSnap, pe) WEnd If cbNeeded <> 0 Then SetDWord(cbNeeded, i * SizeOf (DWord)) End If CloseHandle(hSnap) End If End Function TypeDef PPROCESSENTRY32 = *PROCESSENTRY32 TypeDef LPPROCESSENTRY32 = PPROCESSENTRY32 予めapi_tlhelp32.sbpをAB5のIncludeフォルダからAB4のIncludeフォルダへコピーしておいてください。 出力ファイル名をPSAPI.DLLとしてリリースビルドし,それをAB5のabdev.exeと同じフォルダにおきます。 これによってWindows 98で起動するようになったのは確認しましたが,どこまで使えるかはわかりません。 また,NT系でこのファイルが存在する状態でAB5を起動した場合,本来のPSAPI.DLLを呼ぶようにしており,問題ないと当初考えていましたが, ヘルプを表示するときにも,(本来のPSAPI.DLLではなく)この自作DLLが使われるらしく, 必要な関数が見つからないというエラーが表示され,ヘルプを表示させることができません。 将来的にNT系でしか使えない(9x系で代替が存在しない)APIを使ってきたら,もうお手上げです。 たとえばUnicodeのW版APIの使用もそうです。その際にはunicows.libをリンクしてくれれば救われるのですが……。 |
ページ 1 / 1 | 全ての表示時間は UTC+09:00 です |
Powered by phpBB® Forum Software © phpBB Limited https://www.phpbb.com/ |