ab.com コミュニティ

ActiveBasicを通したコミュニケーション
現在時刻 - 2017年11月21日(火) 09:36

All times are UTC+09:00




新しいトピックを投稿する  トピックへ返信する  [ 11 件の記事 ] 
作成者 メッセージ
投稿記事Posted: 2006年8月08日(火) 16:21 
オフライン
Site Admin

登録日時: 2005年5月30日(月) 15:08
記事: 535
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


通報する
ページトップ
 記事の件名:
投稿記事Posted: 2006年8月08日(火) 20:16 
オフライン

登録日時: 2005年5月31日(火) 17:14
記事: 231
住所: 茨城県
コンパイルエラーの文字情報のところをダブルクリックすると、そこの行に飛べるようになっていますね。


通報する
ページトップ
 記事の件名:
投稿記事Posted: 2006年8月08日(火) 20:26 
オフライン
Site Admin

登録日時: 2005年5月30日(月) 15:08
記事: 535
引用:
コンパイルエラーの文字情報のところをダブルクリックすると、そこの行に飛べるようになっていますね。
エラー行の連動表示はAB4でも有効だったかと思います…。


通報する
ページトップ
 記事の件名:
投稿記事Posted: 2006年8月08日(火) 20:52 
オフライン

登録日時: 2005年5月31日(火) 17:14
記事: 231
住所: 茨城県
あ!本当ですね。お騒がせしましてすみませんでした。
邪魔だったら削除お願いします。


通報する
ページトップ
 記事の件名: 関係ないかも・・・
投稿記事Posted: 2006年8月11日(金) 13:31 
オフライン

登録日時: 2005年10月29日(土) 11:57
記事: 30
住所: 札幌市
私の目が節穴なだけかもしれませんが、
ActiveBasic 5.0 CP1には、サンプルが付属していないように見えるのですが。。。

あと、Windows9x系に対応していないのが、残念です・・・
開発用PCがWinMeだけという罠・・・


通報する
ページトップ
 記事の件名: 下位互換について
投稿記事Posted: 2006年8月11日(金) 15:54 
オフライン

登録日時: 2005年5月31日(火) 14:53
記事: 154
AB5.0CP1で開いてコンパイルした後、閉じてAB4.24.00で開くと、当然ながら(?)「プロジェクトファイルが壊れている」と表示されます。
そこで、プロジェクトファイルをテキストエディタで開いて#VERSION=9とし、「#DEBUG_CMD_LINE」「#DEBUG_EXE_PATH」の行を削除するとAB4.24.00で起動できましたが、その他、プロジェクトファイル関係に仕様変更はあるのでしょうか。


通報する
ページトップ
 記事の件名:
投稿記事Posted: 2006年8月11日(金) 20:41 
オフライン

登録日時: 2005年7月25日(月) 13:27
記事: 893
住所: 埼玉県東松山市
ライブラリ開発板のスレで明記されていましたが、最大で次の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でもある程度は動くかと思います。
試してませんが。

_________________
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。

に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。


通報する
ページトップ
投稿記事Posted: 2006年8月11日(金) 21:13 
オフライン

登録日時: 2005年5月31日(火) 01:10
記事: 26
住所: 岡山県
タイトルとおりの内容で、配布するソフトは試行錯誤し続けているソフトでここから本格化にしようと思い、この機会に配布しようと思っていますが
可能ですか?Discoversoftが企業化されているので、他の企業のように不可能という可能性もあるので書きました

_________________
┌-----------------------------------------┐
|[url=http://user.ftth100.net/pep]|PlayerEleanore Project[/url] |
└-----------------------------------------┘


通報する
ページトップ
投稿記事Posted: 2006年8月11日(金) 21:22 
オフライン

登録日時: 2005年5月31日(火) 14:53
記事: 154
引用:
ライブラリ開発板のスレで明記されていましたが、最大で次の4つが加わっているようです。
コード:
#OUTPUT_RELEASE=

#OUTPUT_DEBUG=

#DEBUG_CMD_LINE=
 
#DEBUG_EXE_PATH=

この4つを消せばab4でも動くとのこと。
 ありがとうございます。
引用:
タイトルとおりの内容で、配布するソフトは試行錯誤し続けているソフトでここから本格化にしようと思い、この機会に配布しようと思っていますが
可能ですか?Discoversoftが企業化されているので、他の企業のように不可能という可能性もあるので書きました
 もちろん可能ですよ。僕だって配布していますし。


通報する
ページトップ
 記事の件名: 全く・・・
投稿記事Posted: 2006年8月13日(日) 10:45 
オフライン

登録日時: 2005年10月29日(土) 11:57
記事: 30
住所: 札幌市
WindowsMeでは、全く起動しません・・・
Windowsのエラーメッセージが表示され、
「NTDLL.dllがどーのこーの・・・」
「システムに接続されたデバイスは、正常に動作していません。」
だったような・・・
一応、NTDLL.dllは存在するようですが、Windows2000とは、
バージョンが違うようです。(当たり前だ)


通報する
ページトップ
 記事の件名:
投稿記事Posted: 2006年8月14日(月) 11:02 
オフライン

登録日時: 2005年5月31日(火) 17:59
記事: 895
住所: 東京都
最新のAB5をダウンロード
動作環境に書かれているとおり,AB5はWindows NT系でしか動かないことになっています。
しかし,今のところ裏技的に9x系でも動かす方法があります。

現在AB5がNTを要求している理由は,PSAPI.DLLを使用しているからです。つまりPSAPI.DLLの代わりを用意すればよいわけです。
AB 4.24で新しくDLLプロジェクトを作成し,次のコードを書きます。
[hide]
コード:
#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[i] = 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
[/hide]
予め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をリンクしてくれれば救われるのですが……。


通報する
ページトップ
期間内表示:  ソート  
新しいトピックを投稿する  トピックへ返信する  [ 11 件の記事 ] 

All times are UTC+09:00


オンラインデータ

このフォーラムを閲覧中のユーザー: なし & ゲスト[1人]


トピック投稿:  可
返信投稿:  可
記事編集: 不可
記事削除: 不可
ファイル添付: 不可

検索:
ページ移動:  
cron
Powered by phpBB® Forum Software © phpBB Limited
Japanese translation principally by KONISHI Yohsuke