[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 12/13 05:17 / Filesize : 519 KB / Number-of Response : 1084
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【QBASIC互換!?】FreeBasic【GPL】



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

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

962 名前:デフォルトの名無しさん [2016/10/21(金) 20:41:44.32 ID:5SWCZ9aM.net]
要点は、Function なんたら() の引数の前置句を
無指定、ByVal, ByRef
の3種類用意した。
参照側 → 非参照側への値の引き渡しは、今回は試していないが、無指定で可能。
しかし、
非参照側 → 参照側への値の引き渡しは、ByRef のみ可能
という結論に達した。
makoto-watanabe.main.jp/freebasic/ProPgPassingArguments.html
で、
>これは、手続きは、手続きに渡された元の変数やオブジェクトを、変更できることを意味します。
と、主語が2つあるやや難解な日本語で説明されていた。

QBでは、どっちの方法をとっても、非参照側⇔参照側の相互引き渡しが可能であった。
これを発見するまでは、かなり苦労した。
Basic は、大域に全数値が置かないと、自由に変数をいじれない、という現実が立ちはだかっていたのである。
なるべく早く、フローチャート作成ルーチンを復活させないと、
引数で非参照側から参照側へ値を送っているルーチンがほとんど(無理やりSub → Functionに書き換えた)のルーチンが使い物にならなくなる。

963 名前:デフォルトの名無しさん [2016/10/23(日) 10:06:03.38 ID:xOvwZfT4.net]
構造体の初期化に関して、
手持ちのMIDIによるBEEP音が
'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で決定されるみたい。

964 名前:デフォルトの名無しさん [2016/10/23(日) 10:15:29.01 ID:xOvwZfT4.net]
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() →

965 名前:Sub BeepMidiOut()
ImidHndPTR = @ImidHnd
ImidHndPTRPTR = @ImidHndPTR
MSReturnCode = midiOutPrepareHeader(ImidHndPTR, @lpMidiOutHdr, Len(lpMidiOutHdr))
MSReturnCode = midiOutLongMsg(ImidHndPTR, @lpMidiOutHdr, Len(lpMidiOutHdr))
で、コンパイルエラーはなくなった。

しかし、ハングする。今のところ、対応はわからない。
[]
[ここ壊れてます]

966 名前:デフォルトの名無しさん [2016/10/23(日) 14:27:32.03 ID:xOvwZfT4.net]
>>892 のつづき。
TakaDammyReturnCode = BeepMidiOut(midHnd, MdiMsg)
入れておく必要があるかな?。

機械の方のMIDIを見るべく、手持ちのMIDIファイルをエクスプローラーでクリック。
MIDI 音源がありません
とのこと。MIDI 関係はここで打ち切り。
Win 10, 32bit で動きそうな仮想音源があったらば、知らせてほしい。
検索で見つかったところは、
homepage3.nifty.com/3gatudo/mididl.htm
ぐらいで、
Microsoft GS Wavetable SW Synth
は見つからない。DirectXが入っていないのかもしれない。
SW−10
は、Nifの販促CD-ROM(2001)より。ソフトが起動してしまって、中身が見られなくて、スージーを使ってコピー。
起動したけど、動かなかった。
S−YGX50
は、ヤマハのサイトが見つからなくて試せず。

967 名前:デフォルトの名無しさん [2016/10/23(日) 20:38:27.04 ID:xOvwZfT4.net]
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が発生。

968 名前:デフォルトの名無しさん [2016/10/23(日) 20:46:42.61 ID:xOvwZfT4.net]
#Ifndef _FILE_HELPERS_WIN32
という、コンパイラに対する命令文の意味が分からず
C:\tool\FreeBASIC
"C:\FbEdit"
makoto-watanabe.main.jp/freebasic/
ではヒットしない。
誰かが、何かの条件で、どこかで決めているはずだけれども
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=
では、本家と日本語サイトのみに記載有り。

969 名前:デフォルトの名無しさん mailto:sage [2016/10/23(日) 22:49:17.73 ID:LVHhfsuk.net]
>>895
#Ifndef _FILE_HELPERS_WIN32
#Define _FILE_HELPERS_WIN32
#Endif

そりゃそうだw
このマクロは「インクルードガード」だもの
これが何なのかはググってね

970 名前:渡辺真 [2016/10/23(日) 23:24:58.78 ID:jMLXBD1u.net]
>>893
>Win 10, 32bit で動きそうな仮想音源があったらば、知らせてほしい。

直接の返答にはなっていませんが、私の Win10 32bit では、下記を実行したら MIDI を再生できました。
makoto-watanabe.main.jp/freebasic/E



971 名前:xtLibfmod.html []
[ここ壊れてます]

972 名前:デフォルトの名無しさん [2016/10/24(月) 21:19:21.72 ID:sdyc/Oh5.net]
>>897 関連。
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
を発見した。
なお、www.fmod.org/ には課金情報の記載もあり、
英語が天才的にできない吾輩としては、API情報などの入手はあきらめることにした。

手持ちのMIDIによるBEEP音
'park7.wakwak.com/~efc21/cgi-bin/exqalounge.cgi?print+200707/07070177.txt
は、1バイトづつ送って再生するルーチンを使っているので、
ファイルを一括出力する
makoto-watanabe.main.jp/freebasic/ExtLibfmod.html
とは考え方に違いがあり、同様な使い方はできない。
MIDIファイルを大量に作成して、使うことが原則となる。
ファイル管理等のルーチン作成が必要になった。

なお、まだ音は出していない。
コンパイラーを通して、エラーが出なくなって、
常駐しない実行形式のファイルが作成できただけ。

973 名前:デフォルトの名無しさん [2016/10/24(月) 21:22:53.53 ID:sdyc/Oh5.net]
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

974 名前:デフォルトの名無しさん [2016/10/24(月) 21:34:57.84 ID:sdyc/Oh5.net]
>>896
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_
ユーザーレベルで(プログラム作成者が)決定する内容なのね、
こりゃ、訳が分からぬ内容だわ。

975 名前:デフォルトの名無しさん [2016/10/24(月) 23:05:55.00 ID:sdyc/Oh5.net]
>>898 のつづき。
再生に成功した。正しい物理調律による不協和音の連続となる、MIDI再生。
安物の低性能スピーカーに対応した、MP3再生に。

MIDIは、
ファイル終了後繰り返し再生になって、制御が参照ルーチンに戻ってこない
という状態。
MP3再生終了後に、制御が参照ルーチンに戻る、
という状態。

前者を制御しているのが゜Sleep 命令らしい、というところまではつかんだ。
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のマニュアルは会員制のため、英語が天才的にできない吾輩としては、あきらめる必要がある。

www.freebasic.net/wiki/wikka.php?wakka=Ke

976 名前:yPgSleep
と比較して、
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」と表現しているものと思われます。
[]
[ここ壊れてます]

977 名前:渡辺真 [2016/10/25(火) 00:45:39.69 ID:wjYYOxoL.net]
>>898
>1バイトづつ送って再生するルーチンを使っている

ToneGrid - Playing MIDI Notes
www.freebasic.net/forum/viewtopic.php?t=21027

QB like PLAY plus more...
www.freebasic.net/forum/viewtopic.php?t=12995
が役に立ちそうですね。

978 名前:渡辺真 [2016/10/25(火) 00:50:54.71 ID:wjYYOxoL.net]
>>902
#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

979 名前:デフォルトの名無しさん [2016/10/26(水) 00:12:47.34 ID:iMPAbDCn.net]
>>902 現在、ソースリストを解読中。
midiOutOpen(@MYPLAYDEVICE, MIDI_MAPPER, 0, 0, null)
の戻り値が 2 となっているので、MIDIドライバーを入れない限りは動作不能。
本家を検索して、FMOD の定数の定義らしきものを発見。
#define FSOUND_LOOP_OFF 0x00000001 /* For non looping samples. */
等。
解読には時間がかかりそう。
MIDIは正確な物理調律をしているので、不協和音となりやすい。
だから、警告音としては最適なんだけど、現在使えない。

980 名前:渡辺真 [2016/10/26(水) 10:24:24.17 ID:zIa530P9.net]
>>904
>MIDIは正確な物理調律をしているので、不協和音となりやすい。

私の Win10 32bit では、
makoto-watanabe.main.jp/freebasic/tipsMIDI.html
の「QB like PLAY plus more...」の「BrazillianThemeMusic.bas」(PlayMidi.bas を含む。PlayFMOD.bas ではないので注意。)
を実行したところ、単音ですが音楽を再生できました。



981 名前:デフォルトの名無しさん [2016/10/28(金) 19:40:16.34 ID:zii2+97k.net]
MIDI ドライバーを入手することに成功した。
rksw.blog.fc2.com/blog-entry-14.html
Win8- 10 でMIDIが鳴らない人ならば試す価値があると思う。
coolsoft.altervista.org/en/virtualmidisynth

私が引っ掛かったのは「virtualMIDISynthの初期画面」で、
右上の「+」を押すとファイル選択画面になること、「十

982 名前:噬{タンで、」がわからなかった。

導入先が、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/
で差がしてください。

>>903は音が出ました。
ドライバーの問題が解決したので、MIDI関係の進捗が見込めます。

NoteOn 関係を探してみたら
http://www.g200kg.com/jp/docs/tech/midi.html
を発見。
種類が多いので、ハンドDTM、つまり、BasicソフトでMIDI-Massige を送信しながらの作曲は、敷居が高そう。
高校の時に、合計2時間ぐらい作曲を教えてもらって、何曲か作ってみたけれど
オルガンで弾いても幽霊の登場シーンのような不気味な曲になる。
[]
[ここ壊れてます]

983 名前:デフォルトの名無しさん [2016/10/31(月) 20:43:37.20 ID:+6lHFHa+.net]
ちょっとMIDIから外れるのだが、
スーパーの文具売り場で、学校教育用カスタネット350円を買ってきた。
手持ちのオルガンと合わせて、作曲用機材はそろった。

984 名前:デフォルトの名無しさん [2016/10/31(月) 21:47:59.25 ID:+6lHFHa+.net]
Function midiOutLongMsg()の使用で、
lpMidiOutHdr.lpData = VarPtr(MLMsg(0))
lpMidiOutHdr.dwBufferLength = UBound(MLMsg) + 1&
と、連続する領域にMIDIデータを保存することが必要となる。
>>829 で指摘があった通り、配列を確保すると各要素に約40バイトの付属データが伴う。
つまり、MSが規定している MIDIHDR 構造体のlpMidiOutHdr.lpDataの示すアドレスからlpMidiOutHdr.dwBufferLength個の連続した主記憶装置にMIDIデータを保存するための領域が確保できないことを示している。

これ関係での動作試験。
Dim12SB1.bas に保存。DimChk12.basより参照。

985 名前:デフォルトの名無しさん [2016/10/31(月) 21:48:57.96 ID:+6lHFHa+.net]
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
とまー、何とか領域が確保できた。

986 名前:デフォルトの名無しさん [2016/10/31(月) 21:52:07.76 ID:+6lHFHa+.net]
今度は構造体での指定と、データ転送。
Zstring で&h00-&hFFのデータを取り扱えるかどうか、Poke で転送しなければならないのかは不明。
今日はここまで。

987 名前:デフォルトの名無しさん [2016/11/01(火) 19:56:19.86 ID:B69ilPhK.net]
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 =

988 名前: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))
[]
[ここ壊れてます]

989 名前:デフォルトの名無しさん [2016/11/01(火) 20:03:22.69 ID:B69ilPhK.net]
で、音が出た。Dim MLMsg() As UByte の場合と音が同じ。
とすると、Byte型配列の場合には、テータが連続して存在するのかもしれない。
前は、Dim MLMsg() As Byte だったんだが、Srt$()で-120とかの負数が表示される。
このため、as Byte から As Ubyte に変更した。

出た音は、Win2000の頃の音とは異なる。どこが原因なのかは特定できていない。

990 名前:デフォルトの名無しさん [2016/11/01(火) 20:06:39.53 ID:B69ilPhK.net]
音量調節関係
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
で音量変更ができた。次回はミュート関係の予定。



991 名前:717 mailto:sage [2016/11/02(水) 09:40:51.99 ID:LbzPwQ+w.net]
>>886
今回でいったん終わりの扱いでいい。
継続スレは要らないから関与しない。
要望が出ても俺は立てない。新しいスレが立っても不定期ROM化してる。

992 名前:デフォルトの名無しさん [2016/11/02(水) 20:04:49.63 ID:uE83Sw4M.net]
起動*.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'
と、存在しないサブルーチンを参照しているとの警告メッセージ゜が出る。
リンカーメッセージだと思うが、ルーチン名が大文字になっているので気が付きにくい。

993 名前:デフォルトの名無しさん [2016/11/08(火) 21:40:52.96 ID:johYCdoD.net]
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)


994 名前:デフォルトの名無しさん [2016/11/11(金) 00:12:50.40 ID:U4vU37r5.net]
ミキサー関係がさっぱりわからないので、他をいじり始めた。
Function (適当)(ByRef (適当な配列) as Long) as long
とやったらばエラーになった。
ルーチン内で数値を定義して返す変数を 一律 ByRef とする

995 名前:アとは問題がある模様。

'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
とエラーメッセージが発生する。
どこか間違えて、ファイルを配置している模様。
[]
[ここ壊れてます]

996 名前:渡辺真 [2016/11/11(金) 20:54:50.64 ID:AOIhEjGq.net]
>>917
>'C:\FbEdit\Projects\Samples\FindFile\FindFile.Bas
>をちょっといじったらば、じばけするようになった。

コメントを日本語にしてみました。
makoto-watanabe.main.jp/freebasic/tipsFindFile.html
お試し下さい。

997 名前:デフォルトの名無しさん [2016/11/12(土) 15:52:56.30 ID:fBKZn4cJ.net]
>>917 のつづき。
ディレクトリーボックス(だったかな)を作るべく、
IDC_TRV1 SysTreeView32 をFile01.rc に導入。
さて、値を定義しようとして、c:\FbEdit\*.rc, C:\Tool\FreeBASIC\*.rc
で、IDC_TRV1 や SysTreeView32 を検索したが見つからず。
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
てもそれらしきものは見つからず。
ファイル(ディレクトリー)選択ルーチンをどうしようかなというところ。

998 名前:デフォルトの名無しさん [2016/11/13(日) 23:54:50.63 ID:qSS9FuJA.net]
>>918
複写修正した内容を全破棄、再度作り直して
全角文字も表示できるディレクトリー一覧が作成できました。

現在、
特定のディレクトリーに限って表示する
中止ルーチンの削除(変数 hThread の排除)
親ディレクトりーの表示と移動
子ディレクトりーの表示と作成
選択ディレクトりー内のファイル作成
チルドレン(子プロセス)で参照できるようなライブ化
に向けて作業中。

999 名前:デフォルトの名無しさん mailto:sage [2016/11/14(月) 21:35:11.21 ID:A2iFoZHP.net]
QBASICに
PEEK POKEとマシン語呼び出しできる
機能はありますか?

1000 名前:デフォルトの名無しさん [2016/11/14(月) 23:03:05.89 ID:eAKgqUSA.net]
>>921 あったことは覚えているが、
制御を移す(ES:等の状態からQB使用値を取得する)方法がわからず
機械語の参照をしなかった。*.COMファイルをQBで作成(ハンドアセンブル)して
Autoexec.batやConfig.sys をQBで書き換えて、ドライバーとして登録して、Boot させて使っていた。

だから、答えられない。



1001 名前:デフォルトの名無しさん mailto:sage [2016/11/16(水) 13:11:13.73 ID:d7D9Ori4.net]
>>922
ESて何?

1002 名前:デフォルトの名無しさん [2016/11/16(水) 22:27:19.99 ID:rTqrc2OY.net]
>>923
ken-crate.blue.coocan.jp/asm/8086r.htm
ES エクストラセグメント・レジスター
    説明:DSの補助的なセグメント
DefSig(だったかな)でPEEK, POKEの対象セグメントレジスタを定義する。
通常は、
固定配置の文字列のセグメントとアドレスを指定し、POKEで命令を書き込む。
(命令忘却)で制御を移す。
「文字列のセグメントとアドレス」の取得方法がわからなかった。
また、CS:IP の指定方法もわからなかった。
そこで、Config.Sys にドライバーを定義して、マウス割り込みのInt (16?, 33?忘却)により道のルーチンをつけて、
機械語ルーチンが実行されるようにした。
PEEK でInt のアドレスが読み取れるので、ドライバーのアドレスもわかり

1003 名前:、制御可能になった。

1秒を下回る時間経過を取得するだけしか使わなかった。
1秒単位の時間は、TIME命令で取得可能なのでこちらを使っていた。
[]
[ここ壊れてます]

1004 名前:デフォルトの名無しさん [2016/11/17(木) 20:18:54.48 ID:PRY0yNKF.net]
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

1005 名前:デフォルトの名無しさん mailto:sage [2016/11/17(木) 21:28:16.84 ID:oM0V2Zu8.net]
>>925
演算子のオペランドがboolean型と整数型をミックスしているからだよ
boolean型同士の演算のみ、boolean型が返る
それ以外は整数型が返る(-1:true, 0:false)

>Mixing operand data types may have undefined results
複数のデータ型のオペランドの混同において、未定義の結果になる場合がある
って警告を出してくれている

>論理演算
気になるなら、オペランドの型をキャストして揃えればよい

1006 名前:デフォルトの名無しさん [2016/11/19(土) 17:32:14.27 ID:7lQvEpwE.net]
>>926 前半の意味が分からなかった。
後半はなんとか。
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 を読み取る。

1007 名前:デフォルトの名無しさん [2016/11/19(土) 18:00:48.90 ID:7lQvEpwE.net]
FbEdit で上から4行目に表示されるファイル名をクリックして
離さずに、左右に動かすと、ファイルの表示の順番が入れ替えられる。

マルチモジュールにすると、分類の仕方にもよるが、10-20個のファイルを
ライブラリーや共通ルーチンとして使用する。
編集が済んだからと言って、外してしまうとルーチンが見つかりません、とリンカーと思われるメッセージが現れるので外せない。
右端の見えない位置に山積にしてしまうという、手法が使えるようになる。

1008 名前:デフォルトの名無しさん [2016/11/19(土) 20:30:39.66 ID:T/wP/yiF.net]
数年プログラミング言語やって気づいたことは、
ソースコードのほとんどは「覚えゲー」でしかない。
特にJava系はそう、自分のアイデアはなくひたすらきめまりきった
ものを書くだけだ。
その中で唯一頭を使って自分のオリジナリティを発揮できる
領域がある。
if() while() の () の中だ、for()があるのにwhile()も
あるのはこのためだ。
これはLinuxソースとか解読してるとガチ。
あと、いきなりプログラミング言語で何かしら作ろうとしても
思いのほかつまらない、其れよりはVim とかEmac

1009 名前:sをまず練習
する、
あとWikipediaエディタで、コードで複雑な数学のの書き方を覚える、
一見回りくどいようだがやってみればわかるけどこれがガチで面白い。
[]
[ここ壊れてます]

1010 名前:デフォルトの名無しさん [2016/11/20(日) 09:04:57.11 ID:M6Gp69qv.net]
>>920のつづき。
中止ルーチンの削除(変数 hThread の排除)
に成功した。されど、初期設定ルーチンが成功していない。



1011 名前:デフォルトの名無しさん [2016/11/20(日) 09:43:18.27 ID:M6Gp69qv.net]
>>929 
最近の言語はライブ化が進んでいるからそんなところかな。
16ビット整数演算までのライブで、16ピット超えの整数を取り扱う方法の宿題を出したらば
ライブに登録がなくできません
32ビット ライブを使って簡単にできるのになぜこんなことを要求するのか
と、出題の間違いを指摘する回答が目立った
なんて、話を何かで読んだ。
主題の意図は、論理変数の配列を使って無限な倍精度演算ルーチンを作れという内容なんだけど。

整数演算は比較的簡単に作れるけど、三角関数以上になると有効桁が取れなくて苦労する。
8087系を超える有効桁を求めるとかなりきつくなる。

1012 名前:デフォルトの名無しさん [2016/11/20(日) 09:44:02.32 ID:M6Gp69qv.net]
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
ではなく(指がぶつかる・指が短くて届かない)、右手又は左手で書籍や紙をなぞりながら、反対側の片手だけを使って(キーボートの角に小指が親指をひっかけてホームポジションとする)、キーボートやディスプレイを見ないで
ひたすら紙だけを見ながら打ち込む方法で、この年まで乗り切ってしまった。

小脳や運動前野の学習が成立したら、簡単には打ち方を変えられないから、最初のエディタの選択には十分注意すること。
この使い方を一生背負ってゆくことになるから。

1013 名前:デフォルトの名無しさん mailto:sage [2016/11/20(日) 14:06:06.88 ID:4zKqcZHF.net]
当時流行したBASICはFORNEXTであっても複数文に
及んで機能していたわけではなく、それぞれ独立して機能していた
FORに対するNEXTではないというエラーメッセージがあるのが
その証拠である。
C言語のような括弧書きで複数行を纏める言語になってから
BASICはBASICではなくなっている。

1014 名前:デフォルトの名無しさん [2016/11/20(日) 23:01:51.93 ID:en+u1OOF.net]
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よりもはるかに速い)を借りて、無限倍精度演算を行いました。
リンク集には、類似の問題の解説が含まれています。

1015 名前:デフォルトの名無しさん [2016/11/20(日) 23:10:37.92 ID:en+u1OOF.net]
狂気の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

1016 名前:渡辺真 [2016/11/21(月) 00:30:17.07 ID:hydzNU9U.net]
>>934
>使える言語で無限倍精度演算に挑戦してみてください。

FreeBASIC では、任意精度計算ライブラリ(GMP)を使えます。
makoto-watanabe.main.jp/freebasic/ExtLibgmp.html

1017 名前:デフォルトの名無しさん [2016/11/21(月) 20:14:32.82 ID:o66uhtT9.net]
>>936 ライブ化が進んでいる。
80?87を使わないで、80?87を超える有効桁が取れる環境であってほしい。
今は、FreeBasic の雰囲気をつかむ、無茶な操作法を見つけ出す、ことで手一杯なので、そっちまで手が回らないけど
30番系統、30-36番のライブラリーが、無限倍精度のライブなので、これを廃止できるかもしれない。

>>920
チルドレン(子プロセス)で参照できるようなライブ化
の一つとして、
Xクリック終了を、異常停止。Button クリック終了を正常停止。
とするための「Button クリック終了」ルーチンが組めた。
詳しくは、
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

1018 名前:デフォルトの名無しさん [2016/11/22(火) 20:29:45.11 ID:y8LZzMie.net]
>>936 をみたら、三角関数などを求めるルーチンがないので、ヒントだけ
https://ja.wikipedia.org/wiki/%E3%83%86%E3%82%A4%E3%83%A9%E3%83%BC%E5%B1%95%E9%96%8B

1.マクローリン展開(テーラー展開の特異解?、高校の工業数学の教書には乗っていたはずmathtrain.jp/maclaurin )して、関数を級数に置き換える。
2.級数を計算する。
有効桁に注意 www.nagaoka-ct.ac.jp/~araki/s/sisoku.html
たしか、この前やった時には、COS()が不安定で泣いた。
7.2桁(単精度実数)で、50項から100項まで計算しないと誤差がひどい。

高速化するならば、近似解(ニュートン法)等いろいろある。
http: // ayapin-film . sakura . ne . jp /LJ/Docs/27th.pdf
愛用の方法は
jr4pdp.blog.enjoy.jp/myblog/picmicom/
三角関数は時間がかかると思われますので、sin()の0度から90度までを予め、PCで計算し、その結果を10000倍した数値を整数として、配列に記憶させ、sin(deg)はそのまま取り出し、cos(deg)はsin(90-deg)で取り出す事にしました。
とあるように、
計算値をファイルに保存しておいて、ファイルから値を読みだす
という方法。電卓並みの速度(1秒以下)が得られる。

1019 名前:デフォルトの名無しさん [2016/11/22(火) 23:55:18.03 ID:W05eTR51.net]
『電子計算機のための数値

1020 名前:計算法III』(「数理科学シリーズ 5」、培風館、1970)
には、三角関数に関する近似式がいろいろと掲載されています。
その中で、テイラー展開によるsinとcosの計算法があり、
ただ、三角関数の周期性を利用して|x|<π/2の範囲で計算すると
精度もよく、計算も速いと書いてあります。
それ以外に、最良多項式近似式も出ています。
いまでは、入手が難しいかもしれませんが、数値計算用サブルーチンを
作りたい人は一読の価値があるでしょう。
[]
[ここ壊れてます]



1021 名前:デフォルトの名無しさん [2016/11/23(水) 22:19:02.11 ID:V77GbOhM.net]
>>939 この本の話は、学生時代から聞いていて、何回か入手を試みたがすべて失敗。
一番近くの図書館が都内というありさま。
高校の副読本(線形代数・微積方程式等)ですら、公立図書館にはおいていない。

1022 名前:デフォルトの名無しさん [2016/11/23(水) 22:37:15.00 ID:V77GbOhM.net]
>>933 QBがらみで思い出したけど
For-Next ループ内で、Goto 先をNext の行番号にすると、おかしなことが発生したような記憶がある。
Nextで複数のループ変数をまとめないで、
一つのループ変数に対して一つのNext文を
拡張Doループは、GosubかCallか数値関数のみ
IF等を使って、あるいは、マルチステートのNext は暴走しやすいので、Nextは先頭に

なんてやっていた。

1023 名前:デフォルトの名無しさん [2016/11/23(水) 23:54:37.72 ID:qZZB3vTy.net]
>>929
全国の公立図書館は、お互いに本の貸し借りをする協定を結んでいますので、
お近くの公立図書館にない場合は、リクエストすると取り寄せてもらうことが
可能です。
もし都立中央図書館にあるならば、リクエストする際に都立中央図書館にありますと
伝えるといいでしょう。
国会図書館は全国の公立図書館に貸し出してくれますが、ただその場合
取り寄せてくれた図書館内での閲覧のみ、コピーは可能ですので、
借り出すことはできません。

1024 名前:デフォルトの名無しさん [2016/11/23(水) 23:57:30.39 ID:qZZB3vTy.net]
>>931
ねんの為に「日本の古本屋」で検索したら、3巻揃いが妥当な値段で出品されていました

1025 名前:渡辺真 [2016/11/25(金) 23:28:20.51 ID:tPNxGDnY.net]
>>938
>936 をみたら、三角関数などを求めるルーチンがない

本家の掲示板にプログラム例がありました。
www.freebasic.net/forum/viewtopic.php?t=23225
「new header file GMP」の2つめのコメント
by dodicat ≫ Jan 17, 2015 1:11
の中にあるプログラムです。

1026 名前:デフォルトの名無しさん [2016/11/27(日) 01:33:25.35 ID:xONUe7m9.net]
>>920 の
選択ディレクトりー内のファイル作成
チルドレン(子プロセス)で参照できるようなライブ化
の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
な調子で収集。

1027 名前:デフォルトの名無しさん [2016/11/27(日) 01:42:35.88 ID:xONUe7m9.net]
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

1028 名前:デフォルトの名無しさん [2016/11/27(日) 01:46:06.53 ID:xONUe7m9.net]
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 & "ファイル名大文字小文字区別"
(中略、こんな調子で、属性フラグを作成しているのだが、ロボットチェックに引っかかってかけないんだわ) 

1029 名前:デフォルトの名無しさん [2016/11/27(日) 01:47:29.12 ID:xONUe7m9.net]
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

1030 名前:デフォルトの名無しさん [2016/11/27(日) 11:56:15.91 ID:lZFUoVdV.net]
>>944
Function equals overload(a As mpf_t,b As mpf_t) As Integer
のように、型「mpf_t」をどこかで定義している模様。手持ちのFreeBasic 関係ファイルには未発見。

検索では、
math-www.uni-paderborn.de/~aggathen/vorl/2004ws/sem/markus-steinborn.pdf#search=%27Type+mpf_t+gmp.bi%27
www-it.sci.waseda.ac.jp/teachers/w405201/CPR2/cprogram15.pdf#search=%27mpf_t+gmp.bi%27
がヒット。
前者はドイツ語なので、英語よりも理解できない



1031 名前:度の語学力なので詳細不明。
後者は日本語ですが、C言語の解説です。記載頁64, アクロバット67頁右段に
>任意精度の整数・有理数・実数をサポートしています.実数型はmpf_tと宣言します.
とあり、BIファイルを見つけてFreeBasic用に変換しないと使えないでしょう。

>この不正確さを払拭するには,エネルギー保存が満たされるような常微分方程式の解法アルゴリズムを採用するといった手段が王道とされています.がしかし,精度を100桁くらいに増やして計算してみるといった力技も捨てがたい魅力があります.
とあるように、
数学や物理を専門としない人(数学を専門としない人々)にとっては、力技に頼るしかない。
数学なんて、難しくてわからないから、多倍精度演算で、小中学校で学ぶ範囲の数処理を使って、えぃ!ゃー!、とやる方法です。
[]
[ここ壊れてます]

1032 名前:渡辺真 [2016/11/27(日) 21:40:18.83 ID:22yXElOy.net]
>>938
>936 をみたら、三角関数などを求めるルーチンがない

日本語訳を追加しました。
makoto-watanabe.main.jp/freebasic/tipsGmpFunctions.html
翻訳していて、内容のすごさに感激しました。

1033 名前:デフォルトの名無しさん [2016/11/29(火) 21:43:47.63 ID:MxHdA4L3.net]
>>920 の
選択ディレクトりー内のファイル作成
が作成終了。
残るは、ライブ化。

>>950
中身を試してみることはやっていませんが、
LISPでコケるのが、多倍精度演算ルーチンの作成で、多くの人々が数値計算から去ってゆきます。
>採用するといった手段が王道
なんてことは、デカコンがいくらでも使える人々ならやっているわけで
素人同然の学部生ができないのです。
一部の人間だけが独占して、てかい面している(暴行すらも許される)世界です。
高卒程度のズブのド素人が、数値計算の世界に手を突っ込めるということは、素晴らしいことです。

母校の情報処理関係学科の定員は45名、卒業生は1桁。30名以上が毎年中退してします。
同級生の奥様も、役人やっている通称お姉さまも、結局中退しました。
数値処理の世界を多くの人々に広げられれば良いですね。

1034 名前:デフォルトの名無しさん [2016/12/01(木) 21:57:52.24 ID:FgpY/gwj.net]
コマンド行、実行形式のファイル名の後に付ける修飾語、コマンドラインについてなんだけど
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でも、スイッチの指定をいじるとまともにコンパイルされない。

1035 名前:デフォルトの名無しさん [2016/12/01(木) 22:40:35.97 ID:FgpY/gwj.net]
>>952 でスイッチの解釈が問題になった理由
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 方式に合わせたスイッチを指定するようにするのか
が今迷っている内容。

1036 名前:デフォルトの名無しさん [2016/12/01(木) 23:46:44.16 ID:FgpY/gwj.net]
>>950 gmp 6.1.0(gmp-6.1.0.7z) ?? かな https://www.mediafire.com/?5y8d3rqwyx32ocv
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
すべての検査が終了した。

1037 名前:デフォルトの名無しさん [2016/12/01(木) 23:48:07.06 ID:FgpY/gwj.net]
>>954 のつづき。
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/

1038 名前: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が必要です。
[]
[ここ壊れてます]

1039 名前:デフォルトの名無しさん [2016/12/02(金) 00:11:55.45 ID:loKG2Fku.net]
ちょっと前に話題にした、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 以外の型の文字変数)もある。

1040 名前:デフォルトの名無しさん [2016/12/03(土) 12:38:01.18 ID:HN6NcG00.net]
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 に変わる手法を探している。
'microsoft.public.jp.access.narkive.com/VGCEWUUt
が理解できた方法だが、よくわからないので、INIファイルを使う方法を検討中
起動直後にRename する方法もあるが、分割LOADをWinが使っていた場合に、絶望的な状況に陥りやすい。



1041 名前:デフォルトの名無しさん [2016/12/03(土) 22:43:19.48 ID:HN6NcG00.net]
>>957 のつづき。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

1042 名前:デフォルトの名無しさん [2016/12/03(土) 22:44:41.89 ID:HN6NcG00.net]
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 (CommonStringSetFi

1043 名前:g = 0) then IAA = Local_CommonStringSet(ReadActionType)
'Const DoubleBootSecName As String = "DoubleBoot" (大域)
IAA = IniFileRead2(CtrlFile5String, DoubleBootSecName, AppExeNameString, BootCount)
DoubleBootChick = (BootCount = 1)
End Function
[]
[ここ壊れてます]

1044 名前:デフォルトの名無しさん [2016/12/03(土) 22:54:02.60 ID:HN6NcG00.net]
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

1045 名前:デフォルトの名無しさん [2016/12/03(土) 22:55:18.26 ID:HN6NcG00.net]
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

1046 名前:デフォルトの名無しさん [2016/12/03(土) 22:59:53.72 ID:HN6NcG00.net]
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

1047 名前:デフォルトの名無しさん [2016/12/03(土) 23:03:27.50 ID:HN6NcG00.net]
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

>>958-963(たぶん) がINIファイルを使った重複起動禁止

1048 名前:デフォルトの名無しさん [2016/12/04(日) 12:12:45.27 ID:Dpp2DwtE.net]
FreeBasic 型の「 -x foobar.exe -m baz foo.bas bar.bas baz.bas」のようなコマンドラインの解釈ルーチンが完成。
やってみたら、ユーザー依存が強い(スイッチに前置詞・後置詞があるかはユーザー側で判断)ので、
空白と「-」を区切り文字とする配列を作っただけ。
スイッチの解釈(スイッチと語句との分離)は、ユーサー任せで、ライブラリーは関与できない。
関与するとしたら、スイッチの後置詞をライブに登録する必要が出てくるから。
スイッチの後置詞内にスイッチを指定する、なんて処理は比較的容易に作れるだろう。
例 SPL 05/DV DK05/VL:trtrta をシスオペに指示する Mount 命令の場合には
/を!に, :を; に書き換える必要がある。これやらないと、Mount命令のスイッチとして解釈してしまうから

ナルト(アットマーク)処理、
makoto-watanabe.main.jp/freebasic/CompilerOptoptfile.html#start
は、360とあまり違っていないので、360処理のライブにかぶせる予定だが
読んだ雰囲気では、解釈が一部違う。めんどくさいから、独自の文法による拡張命令にするか。
ライブでの処理は、今のところ考えていない。
というか、
@処理はバッチ処理のタスクの所轄なので、バッチ処理を考えていない今では、何も作れない。
システムを操作する必要も出てくるから。

1049 名前:デフォルトの名無しさん [2016/12/06(火) 23:36:17.80 ID:bNLFehP7.net]
File01.rc を直接編集して、
#define IDC_LST1 1002
#define IDC_STC1 1004
以下の番号の順番をそろえてみた。表示画面がみだれて
CONTROL "RBN1",IDC_RBN1,"Button",0x50010009,144,45,21,9
が単なるButton
CONTROL "決定",IDC_

1050 名前: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 参照。
[]
[ここ壊れてます]



1051 名前:デフォルトの名無しさん [2016/12/08(木) 20:19:45.21 ID:fg85d7ok.net]
ライブラリーの整理を始めた。名称の統一なんだけど。
その中で、起動表示枠の表題の取得と変更には失敗した。
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 文も一部自動作成するようにした。
大域参照するルーチンだけ自動作成にして、局所参照は今まで通り手作業で入れることとした。
今のところは、単にかき集めただけだが、他への流用を考えて、整列などをしなければならないだろう。

1052 名前:デフォルトの名無しさん [2016/12/10(土) 12:42:07.74 ID:K21NAgqS.net]
ライブラリーの整理の都合で、タイムゾーン関係をいじり始めることになった。
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

1053 名前:デフォルトの名無しさん [2016/12/10(土) 17:12:16.00 ID:BUzq8JlI.net]
タイムゾーン関係のライブを見ていたら、
西暦⇔日数の換算ルーチンで、倍精度超過の整数ルーチンがあり
しっかと、無限倍精度ルーチン、BDC型が使われていた。

新ライブに移行するにも、英文解読が終わっていないからして、
結論、自前の無限倍精度ルーチン復活。

1054 名前:デフォルトの名無しさん [2016/12/10(土) 20:05:27.64 ID:BUzq8JlI.net]
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

なにやら、抽象的障害メッセージを表示して、

1055 名前:停止した。 []
[ここ壊れてます]

1056 名前:デフォルトの名無しさん [2016/12/11(日) 10:27:06.45 ID:5UvE8iG9.net]
>>969 放置しておいて、再起動したら、発生しなくなった。
原因不明。変数領域の食いつぶしか、モジュールの登録・削除を繰り返したために主記憶領域が乱れたものと思われる。

>>968 無限倍精度ルーチン、ベクトル演算とBDC演算のライブ化終了。
といっても、複数の表示枠の表示方法がわからないので、単機能枠だけしか作っていない。
起動枠(Dialog as main相当)から
保守ルーチン一群の選択メニュー枠を表示して
選択メニュー枠から個別の保守ルーチン・動作試験ルーチン枠を起動していた。
この分離方法が今のところ分からない。
ライブから起動していた、非常駐部のルーチンはごく少しだが常駐部に移動することを始めた。
しかし、今のところ、保守ルーチンの起動方法がわからないので、放置。
特権の最上位で起動して、他からの干渉を排除して、動かすという方法もあるが、
INIファイルの占有方法がわからないので、他からの干渉を排除する方法がわからない。
ユーザーレベルで(個別のタスクが個別に)対応するのは簡単だが、ノートパットという誰でも起動できる強力なタスクが干渉することを排除できない。

1057 名前:デフォルトの名無しさん [2016/12/11(日) 10:43:50.97 ID:5UvE8iG9.net]
レジストリー関係を覗いたいたら、
Win 95-2000の頃には存在していた、
OS起動直後に中身を全削除する親キー(HKEY_CLASSES_ROOT等)がわからない。
ユーザーレベルで対応するときに、
何かおかしなことが発生した、つまり、
占有中であることを宣言して、宣言を破棄して開放する前に、異常終了した場合
時に、占有関係データを破棄する必要がある。
OS起動時に、中身を全削除してくれるレジストリーは、占有情報の保管場所として適切な場所にある。

これがわからない。
ユーザーレベルでやるのであれば、スイッチ、多くの場合には存在を隠しているスイッチを指定して、
関係情報を全削除、終了、という方法をとる。

1058 名前:デフォルトの名無しさん [2016/12/12(月) 22:09:02.25 ID:5xU3iLZ7.net]
金土日の3日間の処理で、
Declare 文を集めた *.biファイルのサイズが 35KB から 55KBに増えた。
よくまー、。これだけの単純作業を繰り返したもので。

コンパイラーが通れば、多少おかしな状態でも可能
という条件だからこそできた早業。これで入出力引数のチェックなんて入れたらば、終わるわけがない。

引数リストの作成ルーチンも復活させなければならないが、ファイル選択ルーチンが未完成。

1059 名前:デフォルトの名無しさん [2016/12/13(火) 21:43:00.09 ID:4e1gXBvt.net]
V.B.の WeekDay(), DataPart()関数を使っていた。
Free-Basic では、内部処理用時間変数を引数とする場合しか認めていない、文字変数を引数とする場合を認めていないので、エラーになる。
前者はどこかに作っておいたはず。みつけるだけ。
後者は、0から作ることになる。

どちらも、曜日を指定する場合で、RFC型時間変数にしか使わないのがせめてもの救い(後回しにできる)。
これは、
メール処理として、メールサーバーが記録した日時を読み取るルーチンを作った。
対として、逆関数も作った。この逆関数が残っていたもの。
正関数と逆関数の2つのルーチンを作って、乱数でてきとうな値を作って、
元値と、正関数・逆関数を通した値を比較する。
両者に違いがあれば、どこかに間違いがあることがわかる。

1060 名前:デフォルトの名無しさん [2016/12/14(水) 22:54:08.74 ID:2JEVbY+L.net]
>>973 つづき。
中身をみたら、引数の違いだけで両者ともに同じ処理。
ほぼ同一処理の引数違いの自家製ルーチンを見つけて、復活。



1061 名前:デフォルトの名無しさん [2016/12/15(木) 21:14:04.49 ID:9nAvfrOI.net]
バイナリファイルへの書き込みで
Put #FileNo2Long, , AAByte()
がFreeBasic の書式。FortranやVisual Basic では、AAByte と配列全体を示す場合には()をつけない。
違いに注

1062 名前:モ。半角⇔全角の変換命令がないので作った。余計な部分は、大域変数として宣言すると常駐するための物。
現時点でどのライブファイルが担当するのか決めていないので、局所宣言になっている。
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
[]
[ここ壊れてます]

1063 名前:デフォルトの名無しさん [2016/12/15(木) 21:14:46.37 ID:9nAvfrOI.net]
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

1064 名前:デフォルトの名無しさん [2016/12/15(木) 21:15:32.70 ID:9nAvfrOI.net]
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

1065 名前:デフォルトの名無しさん [2016/12/15(木) 21:25:32.19 ID:9nAvfrOI.net]
GH領域の半角空白、&hA0は、GL領域の半角空白と等値であるとして処理している。

>>957のつづき。Put 命令関係を探していたら、
makoto-watanabe.main.jp/freebasic/PgBinary.html
をみつけた。まだ試していないが、一息ついたらばやってみる予定。

1066 名前:sage [2016/12/15(木) 21:30:42.16 ID:VRbOmxa/.net]
https://www.youtube.com/watch?v=xHx5MbIGEoY

https://www.youtube.com/watch?v=8fPmkq1CkCU

https://www.youtube.com/watch?v=PR6r40GbIfk

1067 名前:デフォルトの名無しさん [2016/12/16(金) 21:56:34.17 ID:rZ3nkbqi.net]
>>978 のつづき。
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))+"

1068 名前: ": Next IAA
MessageBox(TakaHWND, "Hello ("+ReadDataString +")", "Messagebox caption", MB_ICONINFORMATION)
Next IBB
Close #FileNoLong
と、読みだすと、メッセージボックス表示中に、ノートパットで中身を覗ける
[]
[ここ壊れてます]

1069 名前:デフォルトの名無しさん [2016/12/16(金) 22:21:02.16 ID:rZ3nkbqi.net]
>>597 つづき。
実行形式ファイル内に存在しないファイルのアイコンの表示には、相変わらず成功していない。
'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))

1070 名前:デフォルトの名無しさん [2016/12/16(金) 22:36:53.84 ID:rZ3nkbqi.net]
V.B.と同じだと思っていた Byte 型変数。
比較ルーチンを使っている場合に、FreeBasic での違いに泣くので要注意。

makoto-watanabe.main.jp/freebasic/PgByte.html#start
-128〜127 の範囲の値を保持できます。
V.B.では
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種類もある。
>>962 のように番号で区別するように、変更中。



1071 名前:デフォルトの名無しさん [2016/12/18(日) 12:29:50.18 ID:1/CaK5B1.net]
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」の宣言に合わせた。
以下同様。

1072 名前:デフォルトの名無しさん [2016/12/18(日) 12:31:31.87 ID:1/CaK5B1.net]
>>983 つづき。
コンパイラーが通っただけだから。圧縮・解凍するかは試してない。

1073 名前:デフォルトの名無しさん [2016/12/18(日) 21:17:31.69 ID:1/CaK5B1.net]
>>984 つづき。
リンカーが通らなかった。
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
>>983の内容が 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
どうもソースコード配布らしい。
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系圧縮ファイルの解凍ソフトは
www.vector.co.jp/soft/

1074 名前:winnt/util/se489109.html
が見つかった。
gz系解凍のみのために用意していたソフトがWin10で使えなくなったので助かった。
[]
[ここ壊れてます]

1075 名前:デフォルトの名無しさん [2016/12/18(日) 21:40:48.13 ID:1/CaK5B1.net]
ライブ関係ファイル >>969 に一部表示してあるけど、訳が分からなくなって
ルーチンの引数の入出力情報を整理しようとして始めた。
ライブとして整理が終わったファイルが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
hatenachips.blog34.fc2.com/blog-entry-376.html
相当ルーチンを作ろうとしたのが、今日の一連の作業。

現在 (なんたら)\MOd\ 内ファイル数約100、サイズ5MB。
内、約30ファイルが作成したもの、約30ファイルが修正不能として放置したファイル、残り40ファイルが手を付けていないファイル。

1076 名前:渡辺真 [2016/12/18(日) 21:41:51.20 ID:Mt5C7DVY.net]
GMP(任意精度算術ライブラリ)の上手い使い方を教えてもらいました。
makoto-watanabe.main.jp/freebasic/tipsGmpOverloading.html
構造体として、GMP のユーザ定義型を作り、演算子の多重定義を含めて .bi ファイルにします。
これをインクルードすれば、通常のプログラムの Dim 文の変数の型を修正するだけで、取り扱える数値の桁数を、任意に拡張できるのです。
これは感激です。

もう一つ。
素因数分解の関数も教えてもらいました。
makoto-watanabe.main.jp/freebasic/tipsGmpPrimefactors.html
これを使うと、例えば、21桁の数値 121,439,531,096,594,251,777 を、3分足らずで素因数分解できました。

1077 名前:デフォルトの名無しさん [2016/12/20(火) 20:26:41.53 ID:UXtQEXtu.net]
>>986 のつづき。
一部書き換えた場合に、
どこが違っているのか、を比較して意図した内容になっているか、
を見る必要がある。意図してない内容ならば、バグかウィルスソフトにしか過ぎない。
2ファイルの比較ソフトとして使っていたのだが、異なる行の色表示が一致行との色表示と同じなので、使わなかった。
ぷれぷれDiff
www.vector.co.jp/soft/dl/winnt/util/se141425.html
不一致行の色を指定する方法が見つかったので、Win10でも使えることが判明した。
起動後、も左上、枠線上に6種類のマーク画像が並んでいる。
上から4つ目、下から3つ目、ネイルハンマー
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
とスパナの頭が重ね書きになっているところをクリック。「環境設定」の表示枠が表示される
左上、「文字色」内の「追加行」・「変更行」・「移動行」が「背景」と同じ白色になっていたので、

1078 名前:クリック。
「色の設定」枠が表示されるので、適当に選んで「OK」をクリック。

こんな調子で使えるようになった。
[]
[ここ壊れてます]

1079 名前:デフォルトの名無しさん mailto:sage [2016/12/22(木) 13:29:17.73 ID:qSEuLaQE.net]
GPLのプログラムを使う自由があって
GFDLのドキュメントを使う自由がある。
本来のライセンスによる提供物は本来のライセンスの提供物のままであって
自分にはキュレーションメディアは必要無い。
ただ単に自分が使いたいように使い倒すまでのこと。

1080 名前:デフォルトの名無しさん [2016/12/22(木) 20:56:55.91 ID:Vulz5JgX.net]
>>978 GH領域の半角空白、&hA0は、
が間違い。しばらくコードをいじっていなかったので記号を忘れた。GRが正しい記号。
00euc.jp/i18n/charcode.ja.html
ISO 2022 の構造(8単位系)
参照。



1081 名前:デフォルトの名無しさん [2016/12/22(木) 21:35:21.72 ID:Vulz5JgX.net]
Lcase$()関数とUcase$()関数は、7Bitコード対応らしく、8Bitに対応していなかった。
第8bit目を見ないで、一律7bitコードとして処理している(Or40だったかな)模様。
たしか、関係システムディレクトリー、注意 末尾¥付、あたりだったか、じばけする。

今のところ、コメント文の処理に困るぐらいで、大きな被害は出ていない。そのうち対応に迫られることとなる。
使い方としては、
Bstring = "#Include "
TakaDammyReturnCode = CodeChing5(Astring, Bstring, Bstring, 0)
"#Include "、大文字小文字の混在している"#InCluEe "、全部大文字の"#INCLUDE "、全部小文字の"#include "あたりを"#Include "に書き換えるという処理。

1082 名前:デフォルトの名無しさん [2016/12/22(木) 21:36:10.43 ID:Vulz5JgX.net]
>>975 にあるように
'*-* ASC半角カタカナを全角平仮名・全角片仮名に書き換える
と怪しげなコメント行がある。「'*-* 」が各サブルーチンに1行だけ存在し、ルーチンの概要を示している。
これをかき集めて、先頭に書き並べると、ライブファイル内のルーチンの一覧表が完成する。
Visual Basic では、ワードを使ってドキュメントがどうのこうのと書いてあったが、理解できなかった。
それで、Wterm 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()文で検索している。

1083 名前:過去ログ ★ [[過去ログ]]
■ このスレッドは過去ログ倉庫に格納されています






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´Д`)<519KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef