FreeBasic
ttp://www.freebasic.net/
建てたいって人がいたので勝手に建てた
後はご自由にどうぞ
俺は知らん
過去スレ
http://echo.2ch.net/test/read.cgi/tech/1139379786/
探検
【QBASIC互換!?】FreeBasic【GPL】 2 [無断転載禁止]©2ch.net
1デフォルトの名無しさん
2016/12/24(土) 12:22:27.77ID:CVYSyiU+2デフォルトの名無しさん
2016/12/25(日) 17:21:20.77ID:R91XRShr 現在 Declere 文75KB,
””内外で処理が異なる例を見つけた。
「:」、
””外では、Visual Basic では、半角空白が1文字追加され、文の切れ目の意味を持つ。
””外では、Windows では、デバイスの末尾の文字でルートディレクトリーを示す。
前者に慌せて、一律空白を入れてしまうと、ファイルに全くアクセスできなくなるという状態に陥る。
サブルーチン内で値を変更している引数を一括して、ByRef 引数に書き換えるべく、
解釈ルーチンを作っているのだが、大文字と小文字を区別しないということが、漢字コード゛の存在下でかなり面倒くさい処理になってしまっている。
””内外で処理が異なる例を見つけた。
「:」、
””外では、Visual Basic では、半角空白が1文字追加され、文の切れ目の意味を持つ。
””外では、Windows では、デバイスの末尾の文字でルートディレクトリーを示す。
前者に慌せて、一律空白を入れてしまうと、ファイルに全くアクセスできなくなるという状態に陥る。
サブルーチン内で値を変更している引数を一括して、ByRef 引数に書き換えるべく、
解釈ルーチンを作っているのだが、大文字と小文字を区別しないということが、漢字コード゛の存在下でかなり面倒くさい処理になってしまっている。
3デフォルトの名無しさん
2016/12/28(水) 23:44:18.26ID:bENiqIxW http://makoto-watanabe.main.jp/freebasic/PgIfthen.html
にあるように
IF NOT (なんだら) Then
の代わりの
IF (なんたら) ELSE
文がFreeBasic では使えない。
V.B.でIF ELSE 文を使っていた人は要注意。
にあるように
IF NOT (なんだら) Then
の代わりの
IF (なんたら) ELSE
文がFreeBasic では使えない。
V.B.でIF ELSE 文を使っていた人は要注意。
4デフォルトの名無しさん
2016/12/31(土) 15:16:52.44ID:HTFXcJGG5デフォルトの名無しさん
2017/01/12(木) 18:51:09.21ID:JOVmaPyb 現在 Declere 文81KB,まもなく900行となる。
Function文からの引き抜きルーチンがうまく動いているようで、Function 文に間違いがなければ、何とか動いてくれている。
問題は引数検査。
命令語の右側の値を定義する命令が今のところ見つかっていないので、
例 機械語の INC AL 等
「=」を見つけて、左側の変数が定義される、として処理したまでは良かった。
問題は関数
適当な関数(変数,,,,)
で、変数を定義する場合があることに気が付いた。
引数の入出力チェックは今のところで来ていない。
引数の値を定義しないByValと定義するByRefの検査ルーチンが今のところ作成不能。
Function文からの引き抜きルーチンがうまく動いているようで、Function 文に間違いがなければ、何とか動いてくれている。
問題は引数検査。
命令語の右側の値を定義する命令が今のところ見つかっていないので、
例 機械語の INC AL 等
「=」を見つけて、左側の変数が定義される、として処理したまでは良かった。
問題は関数
適当な関数(変数,,,,)
で、変数を定義する場合があることに気が付いた。
引数の入出力チェックは今のところで来ていない。
引数の値を定義しないByValと定義するByRefの検査ルーチンが今のところ作成不能。
6デフォルトの名無しさん
2017/01/12(木) 19:28:24.87ID:JOVmaPyb 複数モジュール(ファイル) AAA.BAS, BBB.BAS, CCC.BAS があったとする。
お互いに、他のファイルの関数を参照していると、他の関数の参照関係(ByValかVtRefか)が決定されないと自分の参照関係がわからない。
ループや振り子現象にどう対応するか、
ループや振り子現象になるようなルーチンをどうやって発見するか、
が問題となる。これの見通しが立っていない。
発見できれば、別ファイルにして一つにまとめると、
同一ルーチン内のループや振り子現象になるので、処理が楽になる(一律ByRefとする)。
今現在は、大文字小文字を区別せずに整列して、昇順に処理しているけど
これを参照する他のファイル数の少ない順に処理してゆく
もし、参照関係を変更したら、遡って処理しなおすという方法で避けられるから。
その代り、処理時間がやたらかかることになる。
a,b,c,dとあったときに、Dが他のファイルを参照していない独立なファイルならば、最初に参照関係を調べる。独立なファイルをまず調べる。
次に、Dだけ(独立しているファイルだけ)を参照しているファイルをみつけて、このファイルだけ処理する、
というようにやってゆく。
ファイルが内容だけで分類する(たとえば、ファイル操作、ファイル名操作、ディレクトリー操作等の分類)のではなく
他のファイルの内容を参照しているか否かの分類も必要になってくる。
これが今のところ分からないでいる。
というのは、以前は、Call 文を検出するだけで、参照することを発見できたが
Call文が使えなくなって、参照している(配列ではない)ことを検出する方法が見当つかない。
Call 文とかLET文とか、結構使い道があった。
お互いに、他のファイルの関数を参照していると、他の関数の参照関係(ByValかVtRefか)が決定されないと自分の参照関係がわからない。
ループや振り子現象にどう対応するか、
ループや振り子現象になるようなルーチンをどうやって発見するか、
が問題となる。これの見通しが立っていない。
発見できれば、別ファイルにして一つにまとめると、
同一ルーチン内のループや振り子現象になるので、処理が楽になる(一律ByRefとする)。
今現在は、大文字小文字を区別せずに整列して、昇順に処理しているけど
これを参照する他のファイル数の少ない順に処理してゆく
もし、参照関係を変更したら、遡って処理しなおすという方法で避けられるから。
その代り、処理時間がやたらかかることになる。
a,b,c,dとあったときに、Dが他のファイルを参照していない独立なファイルならば、最初に参照関係を調べる。独立なファイルをまず調べる。
次に、Dだけ(独立しているファイルだけ)を参照しているファイルをみつけて、このファイルだけ処理する、
というようにやってゆく。
ファイルが内容だけで分類する(たとえば、ファイル操作、ファイル名操作、ディレクトリー操作等の分類)のではなく
他のファイルの内容を参照しているか否かの分類も必要になってくる。
これが今のところ分からないでいる。
というのは、以前は、Call 文を検出するだけで、参照することを発見できたが
Call文が使えなくなって、参照している(配列ではない)ことを検出する方法が見当つかない。
Call 文とかLET文とか、結構使い道があった。
7デフォルトの名無しさん
2017/01/15(日) 11:55:43.47ID:Z3HvmWhY hosyu
8渡辺真
2017/01/16(月) 11:52:56.37ID:l394ym3c9渡辺真
2017/01/16(月) 11:54:25.11ID:l394ym3c >>6
>Call 文とかLET文とか、結構使い道があった。
'$lang:"fblite"
とすると、Call 文、LET文が使えるようになります。
http://makoto-watanabe.main.jp/freebasic/CompilerDialects.html
試してみては、いかがでしょう。
>Call 文とかLET文とか、結構使い道があった。
'$lang:"fblite"
とすると、Call 文、LET文が使えるようになります。
http://makoto-watanabe.main.jp/freebasic/CompilerDialects.html
試してみては、いかがでしょう。
10デフォルトの名無しさん
2017/01/16(月) 20:59:04.92ID:nwZac5ew >>8-9 それ絶望的。現在
ライブラリーの総ファイル数約100。
内、FreeBasic 要に書き換えた
ファイルが約40、
局所ルーチン 53
大域ルーチン 646
と合計700のルーチンがある。100位は、FreeBasic用に新規に作成したもの。
例 Function (適当)(IAA As Long)の他に、AS Integer, As Byte 等FreeBasic で新規に作られた変数型対応。
これを全部 Call文に書き換えて、、、というのは絶望に近い。
なお、引数を伴わないFunction 文に関しては、無意味な引数をつけることで、引数なしの場合を想定しないで済むようにしている。
もう少し使い方になれたから、自己書き換えルーチンの作り方がマシになって、ある程度の自由な操作が可能になるだろう。
ライブラリーの総ファイル数約100。
内、FreeBasic 要に書き換えた
ファイルが約40、
局所ルーチン 53
大域ルーチン 646
と合計700のルーチンがある。100位は、FreeBasic用に新規に作成したもの。
例 Function (適当)(IAA As Long)の他に、AS Integer, As Byte 等FreeBasic で新規に作られた変数型対応。
これを全部 Call文に書き換えて、、、というのは絶望に近い。
なお、引数を伴わないFunction 文に関しては、無意味な引数をつけることで、引数なしの場合を想定しないで済むようにしている。
もう少し使い方になれたから、自己書き換えルーチンの作り方がマシになって、ある程度の自由な操作が可能になるだろう。
11デフォルトの名無しさん
2017/01/18(水) 20:22:28.09ID:jwPQ/iiW 参照関係を調べる時に使うルーチン
Public Function RoutineImmediateStringCat(InLineString As String, OutLineString As String) As Long
'*-* 即値 の文字列をヌルに書き換える
Dim As String BString
'Dim As String CH22String
Dim As Long IAA, IBB, iModeLong
RoutineImmediateStringCat = 0
iModeLong = 0&: 'CH22String = Chr$(&H22)
OutLineString = ""
For IAA = 1& To Len(InLineString)
BString = Mid$(InLineString, IAA, 1): IBB = Asc(BString)
Select Case iModeLong
Case 0&
If (IBB = &H22) Then
iModeLong = 10&
OutLineString = OutLineString + BString
Else
OutLineString = OutLineString + BString
End If
Case 10&
If (IBB = &H22) Then
iModeLong = 0&
OutLineString = OutLineString + BString
End If
End Select
Next IAA
End Function
Public Function RoutineImmediateStringCat(InLineString As String, OutLineString As String) As Long
'*-* 即値 の文字列をヌルに書き換える
Dim As String BString
'Dim As String CH22String
Dim As Long IAA, IBB, iModeLong
RoutineImmediateStringCat = 0
iModeLong = 0&: 'CH22String = Chr$(&H22)
OutLineString = ""
For IAA = 1& To Len(InLineString)
BString = Mid$(InLineString, IAA, 1): IBB = Asc(BString)
Select Case iModeLong
Case 0&
If (IBB = &H22) Then
iModeLong = 10&
OutLineString = OutLineString + BString
Else
OutLineString = OutLineString + BString
End If
Case 10&
If (IBB = &H22) Then
iModeLong = 0&
OutLineString = OutLineString + BString
End If
End Select
Next IAA
End Function
12デフォルトの名無しさん
2017/01/18(水) 20:24:45.43ID:jwPQ/iiW13デフォルトの名無しさん
2017/01/18(水) 20:25:56.21ID:jwPQ/iiW ロボッチチェックに引っかかってちょっと分割する。
Public Function RoutineCommentLineCat(InLineString As String, OutLineString As String) As Long
Const TakaSubRoutineNo as long = 21&
'*-* コメント行をヌルに置き換える
Dim As String BString
'Dim CH22String 大域
Dim As Long IAA, IBB, iModeLong
RoutineCommentLineCat = 0
'CH22String = Chr$(&H22)
OutLineString = Trim$(InLineString)
If (Left$(OutLineString, 1&) = "'") Then
OutLineString = ""
ElseIf (InStr(OutLineString, CH22String) <= 0&) Then
IAA = InStr(OutLineString, ": '")
If (IAA > 0&) Then OutLineString = Left$(OutLineString, IAA - 1&)
IAA = InStr(OutLineString, " '")
If (IAA > 0&) Then OutLineString = Left$(OutLineString, IAA - 1&)
OutLineString = Trim$(OutLineString)
If (Right$(OutLineString, 1) = ":") Then OutLineString = Trim$(Left$(OutLineString, Len(OutLineString) - 1&))
Public Function RoutineCommentLineCat(InLineString As String, OutLineString As String) As Long
Const TakaSubRoutineNo as long = 21&
'*-* コメント行をヌルに置き換える
Dim As String BString
'Dim CH22String 大域
Dim As Long IAA, IBB, iModeLong
RoutineCommentLineCat = 0
'CH22String = Chr$(&H22)
OutLineString = Trim$(InLineString)
If (Left$(OutLineString, 1&) = "'") Then
OutLineString = ""
ElseIf (InStr(OutLineString, CH22String) <= 0&) Then
IAA = InStr(OutLineString, ": '")
If (IAA > 0&) Then OutLineString = Left$(OutLineString, IAA - 1&)
IAA = InStr(OutLineString, " '")
If (IAA > 0&) Then OutLineString = Left$(OutLineString, IAA - 1&)
OutLineString = Trim$(OutLineString)
If (Right$(OutLineString, 1) = ":") Then OutLineString = Trim$(Left$(OutLineString, Len(OutLineString) - 1&))
14デフォルトの名無しさん
2017/01/18(水) 20:26:27.41ID:jwPQ/iiW ElseIf (InStr(OutLineString, "'") <= 0&) Then
Else
iModeLong = 0&
For IAA = 1& To Len(OutLineString)
BString = Mid$(OutLineString, IAA, 1)
IBB = Asc(BString)
Select Case iModeLong
Case 0&
If (IBB = &H22) Then
iModeLong = 10&
ElseIf (BString = "'") Then
OutLineString = Left$(OutLineString, IAA - 1&)
Exit For
End If
Case 10&
If (IBB = &H22) Then
iModeLong = 0&
End If
Case Else
'障害
End Select
Next IAA
OutLineString = Trim$(OutLineString)
If (Right$(OutLineString, 1) = ":") Then OutLineString = Trim$(Left$(OutLineString, Len(OutLineString) - 1&))
End If
End Function
Else
iModeLong = 0&
For IAA = 1& To Len(OutLineString)
BString = Mid$(OutLineString, IAA, 1)
IBB = Asc(BString)
Select Case iModeLong
Case 0&
If (IBB = &H22) Then
iModeLong = 10&
ElseIf (BString = "'") Then
OutLineString = Left$(OutLineString, IAA - 1&)
Exit For
End If
Case 10&
If (IBB = &H22) Then
iModeLong = 0&
End If
Case Else
'障害
End Select
Next IAA
OutLineString = Trim$(OutLineString)
If (Right$(OutLineString, 1) = ":") Then OutLineString = Trim$(Left$(OutLineString, Len(OutLineString) - 1&))
End If
End Function
15デフォルトの名無しさん
2017/01/18(水) 20:36:07.21ID:jwPQ/iiW >>13-14はコメント行を消す作業。コメント行か実行文か判断は面倒なので、
一括して消してしまう。
この2つのルーチンが主要なもので、他には、連続した空白の削除、TAB文字を空白に書き換える等の処理が必要。
こっちは比較的簡単なので、すぐ作れると思う。
Function 文で定義したルーチンの場合、
先頭が1文字目にある場合、戻り値を使わない場合の参照方法。
戻り値を使う場合には、先頭文字の直前(左側)が、演算子の場合が多い。
ということで、演算子であるかのチェックが必要。その他、()や空白、TAB文字等も演算子とみなして処理する。
なんとか、どのファイルの内容を参照しているか、を一覧表で表す見込みが立った。
一括して消してしまう。
この2つのルーチンが主要なもので、他には、連続した空白の削除、TAB文字を空白に書き換える等の処理が必要。
こっちは比較的簡単なので、すぐ作れると思う。
Function 文で定義したルーチンの場合、
先頭が1文字目にある場合、戻り値を使わない場合の参照方法。
戻り値を使う場合には、先頭文字の直前(左側)が、演算子の場合が多い。
ということで、演算子であるかのチェックが必要。その他、()や空白、TAB文字等も演算子とみなして処理する。
なんとか、どのファイルの内容を参照しているか、を一覧表で表す見込みが立った。
16デフォルトの名無しさん
2017/01/21(土) 05:13:37.25ID:ktEIEfUe >>5
「=」を見つけて、左側の変数が定義される、として処理したまでは良かった。
例外が見つかってしまった。
Abool = (Along = Blong)
Abool = TekitoBool(Along = Blong, (適当な引数))
論理演算子「=」の取り扱い。
Fotran でなぜ .EQ. を使っていたのかわかるような気がした。
「=」を見つけて、左側の変数が定義される、として処理したまでは良かった。
例外が見つかってしまった。
Abool = (Along = Blong)
Abool = TekitoBool(Along = Blong, (適当な引数))
論理演算子「=」の取り扱い。
Fotran でなぜ .EQ. を使っていたのかわかるような気がした。
17デフォルトの名無しさん
2017/01/22(日) 22:39:33.42ID:THvjeSOw >>8-9 を受けて、Function 文から Sub 文への変更の可能性について検討を始めた。
と言っても、自己書き換えルーチン用。
Function 文指定ルーチンのうち、Subroutine に書き換え可能なルーチンは、戻り値が一定値ある必要がある。
参照する必要性がない値を返す場合に限られる。混乱を避けるために専用の型を用意した。
Type Wata As Long
綿は、C:\FbEdit\ や C:\tool\FbEdit\ 内 *.BIファイルに使われていないし、http://www.freebasic.net/ 内にも発見できなかったから、今後使われる見込みがないと見当がつく。
変数型、Wata を指定した。
Public Function taka00_CommonStringSet(ByVal hWin As HWND) as Wata
のように、CALL 文参照可能なサブルーチンは、戻り値の型を綿とした。
今度は、サブルーチン内で、
taka00_CommonStringSet = 0
という定義以外の定義があるルーチンは、別の型にしなければならない。
前スレでは、戻り値に障害メッセージ番号を返すように、という指摘があった。
返すようにルーチンを作ったものもあるが、せいぜい数十個ぐらいで数が少ないので、
以前のように、
外部出力として障害を積み上げてゆく(Fotran の Write (4, *) システムコンソールへの障害情報表示)か
障害があってもそのまま強行してしまうか
ある期間障害の発生個数を記録して、読み出せるようにするか、
どれを選択するか、迷っているところ。
余計なルーチンである、との指摘を受けて、Function WriteLibErrMes() 処理系を省いてしまったので、
再度、付け足すか、する必要がある。
と言っても、自己書き換えルーチン用。
Function 文指定ルーチンのうち、Subroutine に書き換え可能なルーチンは、戻り値が一定値ある必要がある。
参照する必要性がない値を返す場合に限られる。混乱を避けるために専用の型を用意した。
Type Wata As Long
綿は、C:\FbEdit\ や C:\tool\FbEdit\ 内 *.BIファイルに使われていないし、http://www.freebasic.net/ 内にも発見できなかったから、今後使われる見込みがないと見当がつく。
変数型、Wata を指定した。
Public Function taka00_CommonStringSet(ByVal hWin As HWND) as Wata
のように、CALL 文参照可能なサブルーチンは、戻り値の型を綿とした。
今度は、サブルーチン内で、
taka00_CommonStringSet = 0
という定義以外の定義があるルーチンは、別の型にしなければならない。
前スレでは、戻り値に障害メッセージ番号を返すように、という指摘があった。
返すようにルーチンを作ったものもあるが、せいぜい数十個ぐらいで数が少ないので、
以前のように、
外部出力として障害を積み上げてゆく(Fotran の Write (4, *) システムコンソールへの障害情報表示)か
障害があってもそのまま強行してしまうか
ある期間障害の発生個数を記録して、読み出せるようにするか、
どれを選択するか、迷っているところ。
余計なルーチンである、との指摘を受けて、Function WriteLibErrMes() 処理系を省いてしまったので、
再度、付け足すか、する必要がある。
18デフォルトの名無しさん
2017/01/24(火) 20:20:07.15ID:YONpxV7Y Declare Function なんたらだけを記載している
TakaCom1.BI
の作成ルーチンで、ちょっと集計を取ってみた。
'簡易障害の発見件数(Function 文) (障害数)/(戻り値総数)/(引数総数)
'%%:01' 可変長文字変数 の末尾が String 以外の末尾を使っている箇所 (1) : 21/ 147/ 970
'%%:02' 符号付32Bit整数変数 の末尾が Long 以外の末尾を使っている箇所 (2) : 0/ 36/ 817
(中略)
'%%:16' 論理変数 の末尾が Bool 以外の末尾を使っている箇所 (16) : 0/ 21/ 13
'%%:28' 草型変数 を引数として使っている箇所 : 0/ 5/ 0
'%%:29' 綿型変数 を引数として使っている箇所 : 0/ 529/ 0
'%%:30' その他型変数 を引数として使っている箇所 : / 0/ 0
と、引数に値を返している場合に、末尾に String 等をつけて区別している。
草型変数 As Xusa は、前スレで指摘があった障害メッセージを返す場合。
綿型変数 As Wata は常に定数( = 0)を返す場合。
その他変数は、ルーチンの間違いがあって、なんたら() As Long なんて引数が存在しない場合がここに該当する。
ルーチン名の末尾に問題がある場合、ルーチンの総数、引数の型の総数の3つを集計した。
'%%:30'等は、ルーチン名に問題があった時に、この番号をつけて、ルーチン名を出力する。
Function 文がそのまま出力されているので、エディタで修正するときに使う。
もう一つが
ファイル別 大域 局所 不明 ルーチン数
Taka00.bas 16 1 0
(中略)
Taka35E.bas 8 8 0
合計 679 68 11 758
ファイル名、Public Function 、Private Function 、Function の集計。
合計 758個のFunction文があり、このような調子で使っていることを示している。
単なる Function 文のルーチンは、ほとんどが動作試験用のルーチン。
TakaCom1.BI
の作成ルーチンで、ちょっと集計を取ってみた。
'簡易障害の発見件数(Function 文) (障害数)/(戻り値総数)/(引数総数)
'%%:01' 可変長文字変数 の末尾が String 以外の末尾を使っている箇所 (1) : 21/ 147/ 970
'%%:02' 符号付32Bit整数変数 の末尾が Long 以外の末尾を使っている箇所 (2) : 0/ 36/ 817
(中略)
'%%:16' 論理変数 の末尾が Bool 以外の末尾を使っている箇所 (16) : 0/ 21/ 13
'%%:28' 草型変数 を引数として使っている箇所 : 0/ 5/ 0
'%%:29' 綿型変数 を引数として使っている箇所 : 0/ 529/ 0
'%%:30' その他型変数 を引数として使っている箇所 : / 0/ 0
と、引数に値を返している場合に、末尾に String 等をつけて区別している。
草型変数 As Xusa は、前スレで指摘があった障害メッセージを返す場合。
綿型変数 As Wata は常に定数( = 0)を返す場合。
その他変数は、ルーチンの間違いがあって、なんたら() As Long なんて引数が存在しない場合がここに該当する。
ルーチン名の末尾に問題がある場合、ルーチンの総数、引数の型の総数の3つを集計した。
'%%:30'等は、ルーチン名に問題があった時に、この番号をつけて、ルーチン名を出力する。
Function 文がそのまま出力されているので、エディタで修正するときに使う。
もう一つが
ファイル別 大域 局所 不明 ルーチン数
Taka00.bas 16 1 0
(中略)
Taka35E.bas 8 8 0
合計 679 68 11 758
ファイル名、Public Function 、Private Function 、Function の集計。
合計 758個のFunction文があり、このような調子で使っていることを示している。
単なる Function 文のルーチンは、ほとんどが動作試験用のルーチン。
19デフォルトの名無しさん
2017/01/24(火) 20:25:33.44ID:YONpxV7Y 引数無しのルーチンが解釈できないというバクがあるのでこんなのも作ってみた
Function Tekito As Bool
Tekito = 0
End Function
Function Tekito2() As Long
Tekito2 = 0
End Function
Public Function Tekito3 As Bool
Tekito3 = 0
End Function
Public Function Tekito4() As Long
Tekito4 = 0
End Function
解釈できなくても、良いんじゃないかな、という手抜きをする心境。
自分の作ったソフトで解釈できない、難解な処理ルーチンは使わなければよいから。
Function Tekito As Bool
Tekito = 0
End Function
Function Tekito2() As Long
Tekito2 = 0
End Function
Public Function Tekito3 As Bool
Tekito3 = 0
End Function
Public Function Tekito4() As Long
Tekito4 = 0
End Function
解釈できなくても、良いんじゃないかな、という手抜きをする心境。
自分の作ったソフトで解釈できない、難解な処理ルーチンは使わなければよいから。
20デフォルトの名無しさん
2017/01/25(水) 22:00:07.83ID:Hm7TFQ6k 虚数演算は、皆さんはどのように作ってますか?。
V.B.用ルーチンを転用したら、見事に文法エラーが発生した。
'複素数(虚数)計算
Type Conplex
RealPart As Double
ImagPart As Double
End Type
Public Function ConplexAdd(CA As Conplex, CB As Conplex) As Conplex
Const TakaSubRoutineNo as long = 2&
'Cadd = CA + CB
TakaDammyReturnCode4 = TakaErrorPointSach(IniNameString, TakaSubRoutineNo)
ConplexAdd.RealPart = CA.RealPart + CB.RealPart
ConplexAdd.ImagPart = CA.ImagPart + CB.ImagPart
End Function
V.B.用ルーチンを転用したら、見事に文法エラーが発生した。
'複素数(虚数)計算
Type Conplex
RealPart As Double
ImagPart As Double
End Type
Public Function ConplexAdd(CA As Conplex, CB As Conplex) As Conplex
Const TakaSubRoutineNo as long = 2&
'Cadd = CA + CB
TakaDammyReturnCode4 = TakaErrorPointSach(IniNameString, TakaSubRoutineNo)
ConplexAdd.RealPart = CA.RealPart + CB.RealPart
ConplexAdd.ImagPart = CA.ImagPart + CB.ImagPart
End Function
2017/01/26(木) 09:26:17.08ID:1chZ2FHw
>>20
>>Conplex
複素数はComplexでしょ
>ConplexAdd.RealPart
>ConplexAdd.ImagPart
アクセス演算子(「.」や「->」)の使い方が間違っている
何故に関数名からアクセス演算子が伸びるのよ?
メソッドチェインしているならともかく
>虚数演算は、皆さんはどのように作ってますか?
普通にクラス作って、必要なメンバーを定義しているよ
非メンバーの算術演算子も別途オーバーロードしているよ
>V.B.用
恐らくVB6の事だと思うけど、.NetのVBもあるのだからきっちりバージョンを書いた方が良いよ
同じBASICだからといって、言語仕様が全く違うのだから文法エラーになるのは当然
FBはQBASICとの互換モードがあるBASIC系言語ってだけで様々なBASIC構文を網羅しているわけじゃないよ
分かっていると思うけれども一応ね
-lang fbにはクラスとしてのユーザ定義型(type ... end type)があるのだから
構造体としてのユーザ定義型ではなく、OOPのクラスとして定義するべきだと思うよ
>>Conplex
複素数はComplexでしょ
>ConplexAdd.RealPart
>ConplexAdd.ImagPart
アクセス演算子(「.」や「->」)の使い方が間違っている
何故に関数名からアクセス演算子が伸びるのよ?
メソッドチェインしているならともかく
>虚数演算は、皆さんはどのように作ってますか?
普通にクラス作って、必要なメンバーを定義しているよ
非メンバーの算術演算子も別途オーバーロードしているよ
>V.B.用
恐らくVB6の事だと思うけど、.NetのVBもあるのだからきっちりバージョンを書いた方が良いよ
同じBASICだからといって、言語仕様が全く違うのだから文法エラーになるのは当然
FBはQBASICとの互換モードがあるBASIC系言語ってだけで様々なBASIC構文を網羅しているわけじゃないよ
分かっていると思うけれども一応ね
-lang fbにはクラスとしてのユーザ定義型(type ... end type)があるのだから
構造体としてのユーザ定義型ではなく、OOPのクラスとして定義するべきだと思うよ
2017/01/26(木) 09:45:37.13ID:1chZ2FHw
>>20
type Complex
private:
_real as double
_imag as double
public:
'' member functions.
declare const property Real() as double
declare property Real(byval value as double)
declare const property Imag() as double
declare property Imag(byval value as double)
declare operator +=(byref value as const Complex)
end type
'' non-member operators.
declare operator +(byref lvalue as const Complex, byref rvalue as const Complex) as Complex
こんな感じ
勿論、コンストラクタ、デストラクタ、その他のメンバー関数など
必要なものは定義しているよ
type Complex
private:
_real as double
_imag as double
public:
'' member functions.
declare const property Real() as double
declare property Real(byval value as double)
declare const property Imag() as double
declare property Imag(byval value as double)
declare operator +=(byref value as const Complex)
end type
'' non-member operators.
declare operator +(byref lvalue as const Complex, byref rvalue as const Complex) as Complex
こんな感じ
勿論、コンストラクタ、デストラクタ、その他のメンバー関数など
必要なものは定義しているよ
23デフォルトの名無しさん
2017/01/27(金) 20:21:16.13ID:tSNcnN0K >>21-22 よくわかんないけと゛、Type 命令文関係を見てみます。
虚数演算と同じファイルに放り込んでおいたのが、整数演算。
'http://rucio.a.la9.jp/main/Samples/vbsample042.htm
で見つけた内容をコピーしただけのルーチン(何やっているのかわからなかった)がいくつか。
で、問題は
Function LCM(ParamArray Values() As Variant) As Long
の「ParamArray 」、の部分。これに対応できるらしい命令が
Function Overload 系処理。
http://makoto-watanabe.main.jp/freebasic/TutFunctionOverloading.html
http://makoto-watanabe.main.jp/freebasic/PgFunction.html
Declare Function AAAA OverLoad (InA1 As Long, InA2 As Long, InA3 As Long) As Long
Declare Function AAAA OverLoad (InA1 As Long, InA2 As Long) As Long
Declare Function AAAA(InA() As Long) As Long
と、OverLoad 句のついている Declare を先に、ついていないDeclare文を後ろにと、並べないとエラーになる。
間に別の名称の文を入れても解釈してくれるみたい。
Declare Function AAAA OverLoad (InA1 As Long, InA2 As Long, InA3 As Long) As Long
Declare Function AAAA OverLoad (InA1 As Long, InA2 As Long) As Long
Declare Function BBBB(InA() As Long) As Long
Declare Function AAAA(InA() As Long) As Long
虚数演算と同じファイルに放り込んでおいたのが、整数演算。
'http://rucio.a.la9.jp/main/Samples/vbsample042.htm
で見つけた内容をコピーしただけのルーチン(何やっているのかわからなかった)がいくつか。
で、問題は
Function LCM(ParamArray Values() As Variant) As Long
の「ParamArray 」、の部分。これに対応できるらしい命令が
Function Overload 系処理。
http://makoto-watanabe.main.jp/freebasic/TutFunctionOverloading.html
http://makoto-watanabe.main.jp/freebasic/PgFunction.html
Declare Function AAAA OverLoad (InA1 As Long, InA2 As Long, InA3 As Long) As Long
Declare Function AAAA OverLoad (InA1 As Long, InA2 As Long) As Long
Declare Function AAAA(InA() As Long) As Long
と、OverLoad 句のついている Declare を先に、ついていないDeclare文を後ろにと、並べないとエラーになる。
間に別の名称の文を入れても解釈してくれるみたい。
Declare Function AAAA OverLoad (InA1 As Long, InA2 As Long, InA3 As Long) As Long
Declare Function AAAA OverLoad (InA1 As Long, InA2 As Long) As Long
Declare Function BBBB(InA() As Long) As Long
Declare Function AAAA(InA() As Long) As Long
2017/01/28(土) 08:41:05.20ID:fbuNIeJW
>>23
独自に定義した関数をオーバーロードする設計なら「全て」の同名関数にoverloadは付けるべき
複数のヘッダファイルに同名関数のオーバーロード宣言を書いた時
インクルード次第で多重定義のエラーになる可能性がある
更にその関数にはオーバーロードされた関数が別に存在することが分かる
>内容をコピーしただけのルーチン(何やっているのかわからなかった)がいくつか。
褒められたものじゃないなあ
最小公倍数のアルゴリズム位は理解しておこうよ
独自に定義した関数をオーバーロードする設計なら「全て」の同名関数にoverloadは付けるべき
複数のヘッダファイルに同名関数のオーバーロード宣言を書いた時
インクルード次第で多重定義のエラーになる可能性がある
更にその関数にはオーバーロードされた関数が別に存在することが分かる
>内容をコピーしただけのルーチン(何やっているのかわからなかった)がいくつか。
褒められたものじゃないなあ
最小公倍数のアルゴリズム位は理解しておこうよ
25デフォルトの名無しさん
2017/01/28(土) 10:58:26.28ID:8XnTGJGH >>24 最小公倍数、最大公約数を求めることはできるのだが
http://ameblo.jp/sakai-futabajuku/entry-12108035056.html
に示された方法が理解できない。
覚えている方法は、素数表と簡易除算
http://ameblo.jp/sakai-futabajuku/entry-12108035056.html
を覚えて、出題範囲の関係で 11,13,17,19 の2乗を覚えて
手計算でやる方法しか理解できない。こんな感じ
12 24
2 6 12
2 3 6
3 1 3
区切り線は略。
縦に 2*2*3 = 12 が最大公約数
さらに横をかけて、2*2*3*1*3 = 36 が最小公倍数
素数表がなくて、役数を積んでないので、わからない。
なお、自作した多倍精度ルーチンでは、約数と残りをもとめて、作ったけど
既約か可約かの判断に1000桁ぐらいの数で1回5秒ぐらいかかる。
高速化したいがこれもわからないでいる。
http://ameblo.jp/sakai-futabajuku/entry-12108035056.html
に示された方法が理解できない。
覚えている方法は、素数表と簡易除算
http://ameblo.jp/sakai-futabajuku/entry-12108035056.html
を覚えて、出題範囲の関係で 11,13,17,19 の2乗を覚えて
手計算でやる方法しか理解できない。こんな感じ
12 24
2 6 12
2 3 6
3 1 3
区切り線は略。
縦に 2*2*3 = 12 が最大公約数
さらに横をかけて、2*2*3*1*3 = 36 が最小公倍数
素数表がなくて、役数を積んでないので、わからない。
なお、自作した多倍精度ルーチンでは、約数と残りをもとめて、作ったけど
既約か可約かの判断に1000桁ぐらいの数で1回5秒ぐらいかかる。
高速化したいがこれもわからないでいる。
2017/01/28(土) 13:46:02.65ID:fbuNIeJW
2017/01/28(土) 13:49:00.02ID:fbuNIeJW
>>25
最大公約数は「ユークリッドの互除法」でもググってくれ
最大公約数は「ユークリッドの互除法」でもググってくれ
2017/01/28(土) 13:53:54.95ID:fbuNIeJW
29デフォルトの名無しさん
2017/01/28(土) 18:42:25.36ID:8XnTGJGH >>27 最大公約数は「ユークリッドの互除法」
なら、わからない理由が分かった。
「ユークリッドの互除法」を高校1年目にやったんだけど、何が何だかわからない。
んで、他の教科もわからなくなって、高校中退したんだわ。
高校中退の原因の一つが「ユークリッドの互除法」。今は昔。
整数問題がよくわからなくて、結局、公式を使わないで定理から力技で無理やり計算する日々。
なら、わからない理由が分かった。
「ユークリッドの互除法」を高校1年目にやったんだけど、何が何だかわからない。
んで、他の教科もわからなくなって、高校中退したんだわ。
高校中退の原因の一つが「ユークリッドの互除法」。今は昔。
整数問題がよくわからなくて、結局、公式を使わないで定理から力技で無理やり計算する日々。
2017/01/28(土) 20:03:50.77ID:fbuNIeJW
>>29
えっと、プログラマに求められるのは「何故そうするのか?」ではなく
「それをどのようにするのか?」であるわけよ
>>24でアルゴリズム位は理解しておこうよって言ったのは
数学的証明や理論の理解ではなく、方法論の話
つまり端的に言うなら、検索、実装、検証が出来ればコードは書けるのよ
勿論、そこに「何故そうするのか?」と考証が入るのが良いけれども
で、最小公倍数や最大公約数を実装するに辺り、目の前の便利な箱を使うわけだよ
そうしたらユークリッドの互除法なんて真っ先に辿り着く情報でしょ
その実装なんてちょっとした頭の体操程度の物で
悩むにしても再帰処理にするかループ処理にするか位でしょ
ユークリッドの互除法は単なる除算(剰余)の繰り返しだよ?
modとwhileか、modとifがあれば実装できるんだよ
複雑な公式を使うことなんて無いんだよ
プログラミングは、数学的証明をしているわけじゃないんだよ
実際に動作する組み合わせをするだけで、その大前提である検索をして実装方法を吟味しなさいよ
他人のコードをコピペしてるだけじゃプログラミングは上手くならんよ
学歴云々の前に、検索しない事に真剣にびっくりだわ
えっと、プログラマに求められるのは「何故そうするのか?」ではなく
「それをどのようにするのか?」であるわけよ
>>24でアルゴリズム位は理解しておこうよって言ったのは
数学的証明や理論の理解ではなく、方法論の話
つまり端的に言うなら、検索、実装、検証が出来ればコードは書けるのよ
勿論、そこに「何故そうするのか?」と考証が入るのが良いけれども
で、最小公倍数や最大公約数を実装するに辺り、目の前の便利な箱を使うわけだよ
そうしたらユークリッドの互除法なんて真っ先に辿り着く情報でしょ
その実装なんてちょっとした頭の体操程度の物で
悩むにしても再帰処理にするかループ処理にするか位でしょ
ユークリッドの互除法は単なる除算(剰余)の繰り返しだよ?
modとwhileか、modとifがあれば実装できるんだよ
複雑な公式を使うことなんて無いんだよ
プログラミングは、数学的証明をしているわけじゃないんだよ
実際に動作する組み合わせをするだけで、その大前提である検索をして実装方法を吟味しなさいよ
他人のコードをコピペしてるだけじゃプログラミングは上手くならんよ
学歴云々の前に、検索しない事に真剣にびっくりだわ
2017/01/28(土) 20:14:38.98ID:fbuNIeJW
>>26
>整数a, bの最大公約数と最大公倍数の積が整数a, bの積に等しいという定理から
いかんな、ここも記述間違えているわ
整数a, bの最大公約数と最小公倍数の積が整数a, bの積に等しいという定理から
こうね
>整数a, bの最大公約数と最大公倍数の積が整数a, bの積に等しいという定理から
いかんな、ここも記述間違えているわ
整数a, bの最大公約数と最小公倍数の積が整数a, bの積に等しいという定理から
こうね
2017/01/28(土) 20:17:41.00ID:dCwh8yHn
https://ja.wikipedia.org/wiki/%E3%83%A6%E3%83%BC%E3%82%AF%E3%83%AA%E3%83%83%E3%83%89%E3%81%AE%E4%BA%92%E9%99%A4%E6%B3%95
ユークリッドの互除法
このサイトの画面右側の絵の変化、なんとなくいい味だしてるよ。
ユークリッドの互除法
このサイトの画面右側の絵の変化、なんとなくいい味だしてるよ。
33デフォルトの名無しさん
2017/01/29(日) 06:11:32.73ID:ElqR2hUp >>23 つづき。
Declare Function IniFileRead OverLoad(FileString As String, SecNameString As String, KeyNameString As String, ByRef KeyValString As String) As Wata
(一致部分略), ByRef KeyValLong as Long) As Wata
, ByRef KeyValDouble As Double) As Wata
, ByRef KeyValShort As SHORT) As Wata
, ByRef KeyValSingle as Single) As Wata
, ByRef KeyValByte As Byte) As Wata
, ByRef KeyValInteger As Integer) As Wata
, ByRef KeyValLongint As Longint) As Wata
, ByRef KeyValLong as ULong) As Wata
, ByRef KeyValShort As USHORT) As Wata
, ByRef KeyValByte As UByte) As Wata
, ByRef KeyValInteger As UInteger) As Wata
, ByRef KeyValLongint As ULongint) As Wata
, ByRef KeyValString As ZString) As Wata
, ByRef KeyValString As WString) As Wata
Declare Function IniFileRead OverLoad(FileString As String, SecNameString As String, KeyNameString As String, ByRef KeyValBool As Boolean) As Wata
と宣言して、
BString =DataKeyName + str$(ICC)
TakaDammyReturnCode = IniFileRead(SoseFileListFile, DataEriaSecName, BString, CString)
TakaDammyReturnCode = IniFileRead(SoseFileListFile, DataEriaSecName, DataKeyName + str$(ICC), SoseFileList(ICC))
と参照したら
..\Kako02\Mod\Taka05.bas(3439) error 97: Ambiguous call to overloaded function, INIFILEREAD() in 'TakaDammyReturnCode = IniFileRead(SoseFileListFile, DataEriaSecName, BString, CString)'
..\Kako02\Mod\Taka05.bas(3440) error 97: Ambiguous call to overloaded function, INIFILEREAD() in 'TakaDammyReturnCode = IniFileRead(SoseFileListFile, DataEriaSecName, DataKeyName + str$(ICC), SoseFileList(ICC))'
とエラーになった。
内容を調べていない。
使わない(使い方がわからない)変数型を消してみてどうなるか、
面倒だと思ったらば、Overload化をやめて元の状態に戻す予定。
Declare Function IniFileRead OverLoad(FileString As String, SecNameString As String, KeyNameString As String, ByRef KeyValString As String) As Wata
(一致部分略), ByRef KeyValLong as Long) As Wata
, ByRef KeyValDouble As Double) As Wata
, ByRef KeyValShort As SHORT) As Wata
, ByRef KeyValSingle as Single) As Wata
, ByRef KeyValByte As Byte) As Wata
, ByRef KeyValInteger As Integer) As Wata
, ByRef KeyValLongint As Longint) As Wata
, ByRef KeyValLong as ULong) As Wata
, ByRef KeyValShort As USHORT) As Wata
, ByRef KeyValByte As UByte) As Wata
, ByRef KeyValInteger As UInteger) As Wata
, ByRef KeyValLongint As ULongint) As Wata
, ByRef KeyValString As ZString) As Wata
, ByRef KeyValString As WString) As Wata
Declare Function IniFileRead OverLoad(FileString As String, SecNameString As String, KeyNameString As String, ByRef KeyValBool As Boolean) As Wata
と宣言して、
BString =DataKeyName + str$(ICC)
TakaDammyReturnCode = IniFileRead(SoseFileListFile, DataEriaSecName, BString, CString)
TakaDammyReturnCode = IniFileRead(SoseFileListFile, DataEriaSecName, DataKeyName + str$(ICC), SoseFileList(ICC))
と参照したら
..\Kako02\Mod\Taka05.bas(3439) error 97: Ambiguous call to overloaded function, INIFILEREAD() in 'TakaDammyReturnCode = IniFileRead(SoseFileListFile, DataEriaSecName, BString, CString)'
..\Kako02\Mod\Taka05.bas(3440) error 97: Ambiguous call to overloaded function, INIFILEREAD() in 'TakaDammyReturnCode = IniFileRead(SoseFileListFile, DataEriaSecName, DataKeyName + str$(ICC), SoseFileList(ICC))'
とエラーになった。
内容を調べていない。
使わない(使い方がわからない)変数型を消してみてどうなるか、
面倒だと思ったらば、Overload化をやめて元の状態に戻す予定。
34デフォルトの名無しさん
2017/01/29(日) 06:19:51.52ID:ElqR2hUp35デフォルトの名無しさん
2017/01/29(日) 09:00:00.96ID:ElqR2hUp >>33 つづき
Function IniFileReadなんたら
と
Declare Function IniFileRead OverLoad(FileString As String, SecNameString As String, KeyNameString As String, , ByRef KeyValString As ZString) As Wata
を抜いて
IniFileRead OverLoad → IniFileRead14
に戻したらば、発生しなくなった。16個以下なのか、
As String と As ZString の混用が認められないのか
は、調べていない。
Function IniFileReadなんたら
と
Declare Function IniFileRead OverLoad(FileString As String, SecNameString As String, KeyNameString As String, , ByRef KeyValString As ZString) As Wata
を抜いて
IniFileRead OverLoad → IniFileRead14
に戻したらば、発生しなくなった。16個以下なのか、
As String と As ZString の混用が認められないのか
は、調べていない。
2017/01/29(日) 10:13:40.73ID:V71V/mQX
>>34
ああそう
クソみたいなコードを書いていても
古臭いながらもそれなりに知識を持っている人って
思ってたけど何だかな、独善なだけかよ
有益な情報になると思い、多少なりにも絡んできたけど
建設的に話ができないなら悪いけどこのスレには必要無いわ
過疎ったスレだし、誰も指摘しないし、自分もスルーしてきたけど
自分のブログか何かでやったら?
まだ過疎っている方のがマシだわ
ああそう
クソみたいなコードを書いていても
古臭いながらもそれなりに知識を持っている人って
思ってたけど何だかな、独善なだけかよ
有益な情報になると思い、多少なりにも絡んできたけど
建設的に話ができないなら悪いけどこのスレには必要無いわ
過疎ったスレだし、誰も指摘しないし、自分もスルーしてきたけど
自分のブログか何かでやったら?
まだ過疎っている方のがマシだわ
37デフォルトの名無しさん
2017/01/29(日) 12:00:40.54ID:ElqR2hUp >>36
おほめいただいて感謝します。
>自分のブログか何かでやったら?
やってます。
カウンターをつけていないので利用者がわかりませんけど
Lobot Off を指定しているので、利用者がいないはずです。
QB用ソース(現在いじっているV.B.用ライブの原型を含みます)付き実行形式ファイルで配布していますので、もし見かけたらばメールください。
ロボットメールしか受け取ったことがないのですけど。
地震以後ですと、ロボットメールすら来ません。
V.B.用ソースは公開しませんでした。
実行形式のみ公開していましたが、通信会社のサービス停止(+地震のよるHDD破損+MSのサポート停止)に伴い消失しました。
おほめいただいて感謝します。
>自分のブログか何かでやったら?
やってます。
カウンターをつけていないので利用者がわかりませんけど
Lobot Off を指定しているので、利用者がいないはずです。
QB用ソース(現在いじっているV.B.用ライブの原型を含みます)付き実行形式ファイルで配布していますので、もし見かけたらばメールください。
ロボットメールしか受け取ったことがないのですけど。
地震以後ですと、ロボットメールすら来ません。
V.B.用ソースは公開しませんでした。
実行形式のみ公開していましたが、通信会社のサービス停止(+地震のよるHDD破損+MSのサポート停止)に伴い消失しました。
38デフォルトの名無しさん
2017/01/29(日) 12:57:35.68ID:ElqR2hUp >>23 Type 命令文関係を見てみます。
のつづき。Type みてもわからなかったので、逃げの九素コードを
大域宣言は
'複素数(虚数)計算 '(2017.01.29 済)名称変更 Conplex → Complex
Type Complex
RealPart As Double
ImagPart As Double
End Type
で。ご指摘の通り、n → m への変更済み。
http://makoto-watanabe.main.jp/freebasic/PgFunction.html より、
関数は、Byref As return_type を指定して、参照を返すこともできます。
とあるので、破壊されない戻り値を保管する場所が必要。
局所ルーチンで参照され、破壊されない戻り値の保管場所は、九素コードとして、大域変数を使う。
Dim Shared ComComplexVal As Complex
関数としては単なるLET文を用意した。
Function TekiToComp(Aval As Complex) ByRef As Complex
ComComplexVal.RealPart = Aval.RealPart
ComComplexVal.ImagPart = Aval.ImagPart
TekiToComp = ComComplexVal
End Function
参照側で
ComComplexVal.RealPart = -5.0: ComComplexVal.ImagPart = -0.5
Complex1Val.RealPart = 1.0: Complex1Val.ImagPart = 0.1
Complex2Val.RealPart = 2.0: Complex2Val.ImagPart = 0.2
と定義して
Complex2Val = TekiToComp(Complex1Val)
関数を実行、3つの変数すべてが Complex1Val の値で一致する。
ここで、ComComplexValに適当な値を設定しても、Complex2Val の値が変化しなかった。
参照渡しと言っても、Complex2Valのアドレス(ポインター)をComComplexValのソレに書き換えるのではなかった。
3つの変数の保存領域は独立して存在する。
のつづき。Type みてもわからなかったので、逃げの九素コードを
大域宣言は
'複素数(虚数)計算 '(2017.01.29 済)名称変更 Conplex → Complex
Type Complex
RealPart As Double
ImagPart As Double
End Type
で。ご指摘の通り、n → m への変更済み。
http://makoto-watanabe.main.jp/freebasic/PgFunction.html より、
関数は、Byref As return_type を指定して、参照を返すこともできます。
とあるので、破壊されない戻り値を保管する場所が必要。
局所ルーチンで参照され、破壊されない戻り値の保管場所は、九素コードとして、大域変数を使う。
Dim Shared ComComplexVal As Complex
関数としては単なるLET文を用意した。
Function TekiToComp(Aval As Complex) ByRef As Complex
ComComplexVal.RealPart = Aval.RealPart
ComComplexVal.ImagPart = Aval.ImagPart
TekiToComp = ComComplexVal
End Function
参照側で
ComComplexVal.RealPart = -5.0: ComComplexVal.ImagPart = -0.5
Complex1Val.RealPart = 1.0: Complex1Val.ImagPart = 0.1
Complex2Val.RealPart = 2.0: Complex2Val.ImagPart = 0.2
と定義して
Complex2Val = TekiToComp(Complex1Val)
関数を実行、3つの変数すべてが Complex1Val の値で一致する。
ここで、ComComplexValに適当な値を設定しても、Complex2Val の値が変化しなかった。
参照渡しと言っても、Complex2Valのアドレス(ポインター)をComComplexValのソレに書き換えるのではなかった。
3つの変数の保存領域は独立して存在する。
39デフォルトの名無しさん
2017/01/29(日) 13:19:08.83ID:ElqR2hUp >>38 のつづき。動作試験用ソフトは以下の通り。
http://www.dotup.org/uploda/www.dotup.org1138726.zip.html
D:\bas\Projects\Kako02\Mod\TakaCom0.bi
が抜けているけど、Bak\TakaCom0(1).bi が使えると思う。
使える人がいたら使ってみて。
http://www.dotup.org/uploda/www.dotup.org1138726.zip.html
D:\bas\Projects\Kako02\Mod\TakaCom0.bi
が抜けているけど、Bak\TakaCom0(1).bi が使えると思う。
使える人がいたら使ってみて。
2017/01/29(日) 13:23:35.22ID:V71V/mQX
>>37
君の実情なんてどうでも良い
やっているなら、スレの私的専有を止めればよいでしょ
移植日記なら他所でやりなよ
>>38なんか見てもそうだけどマニュアル読めば分かることを
ダラダラと流されても何じゃそりゃなんだよ
せめて分からなかった所を質問形式でレスしなよ
全く整理もしていないオナニーレスを流すな
一応突っ込んでおくわ
>Complex2Val = TekiToComp(Complex1Val)
参照返しを値型の変数で受け取ったら、コピー代入になるのだから当たり前でしょ
右辺と左辺の間の=の意味は、let演算子
つまり、右辺の関数評価→左辺に代入評価が起こっているの
dim byref as Complex a = TekiToComp(Complex1Val)
なら、変数aは参照先Complex1Valの値を表示するだろうよ
FB独自の言語機能云々の前にプログラム言語としての前提知識が無さ過ぎるわ
君の実情なんてどうでも良い
やっているなら、スレの私的専有を止めればよいでしょ
移植日記なら他所でやりなよ
>>38なんか見てもそうだけどマニュアル読めば分かることを
ダラダラと流されても何じゃそりゃなんだよ
せめて分からなかった所を質問形式でレスしなよ
全く整理もしていないオナニーレスを流すな
一応突っ込んでおくわ
>Complex2Val = TekiToComp(Complex1Val)
参照返しを値型の変数で受け取ったら、コピー代入になるのだから当たり前でしょ
右辺と左辺の間の=の意味は、let演算子
つまり、右辺の関数評価→左辺に代入評価が起こっているの
dim byref as Complex a = TekiToComp(Complex1Val)
なら、変数aは参照先Complex1Valの値を表示するだろうよ
FB独自の言語機能云々の前にプログラム言語としての前提知識が無さ過ぎるわ
41デフォルトの名無しさん
2017/01/29(日) 20:02:51.85ID:ElqR2hUp >>40 >変数aは参照先Complex1Valの値を表示するだろうよ
高度な使い方。
この方法は、昨年5月ぐらいから探していた。結局見つからなくて、
主ルーチンから各ファイル(モジュール)へ関係値を配るという方法を取った。
なお、*.BI,*.Bas で検索したが
C:\FbEdit\ や C:\Tool\FreeBASIC\ 内に「dim byref」という文字を発見できなかった。
http://makoto-watanabe.main.jp/freebasic/PgDim.html 内にも ByRef の記載が見つからない。
高度な使い方。
この方法は、昨年5月ぐらいから探していた。結局見つからなくて、
主ルーチンから各ファイル(モジュール)へ関係値を配るという方法を取った。
なお、*.BI,*.Bas で検索したが
C:\FbEdit\ や C:\Tool\FreeBASIC\ 内に「dim byref」という文字を発見できなかった。
http://makoto-watanabe.main.jp/freebasic/PgDim.html 内にも ByRef の記載が見つからない。
2017/01/29(日) 20:29:05.86ID:V71V/mQX
>>41
ttp://www.freebasic.net/wiki/wikka.php?wakka=KeyPgByrefVariables
まず公式Wiki、次に公式フォーラム、次にGoogleなどで検索しなされ
>>41のリンク先は個人サイトで非公式サイト
こういうこと本気で言いたくないけど、もうキツイこと言っているから言わせてもらう
このスレッドを利用するに辺り下記を約束して欲しい
・ダラダラ日記を書かない
・分からないことがあれば、簡潔に明瞭に質問する
・ここはパブリックスペースであると認識する
・コードを書くなら該当する部分のみ、不必要なのは書かない
あと、向上心と好奇心、新しいものへの挑戦は忘れないで欲しい
ttp://www.freebasic.net/wiki/wikka.php?wakka=KeyPgByrefVariables
まず公式Wiki、次に公式フォーラム、次にGoogleなどで検索しなされ
>>41のリンク先は個人サイトで非公式サイト
こういうこと本気で言いたくないけど、もうキツイこと言っているから言わせてもらう
このスレッドを利用するに辺り下記を約束して欲しい
・ダラダラ日記を書かない
・分からないことがあれば、簡潔に明瞭に質問する
・ここはパブリックスペースであると認識する
・コードを書くなら該当する部分のみ、不必要なのは書かない
あと、向上心と好奇心、新しいものへの挑戦は忘れないで欲しい
2017/01/29(日) 21:00:37.92ID:V71V/mQX
>>41
ちょいと付け足し
君の実情なんてどうでも良いからそんなのも書かなくて良い
匿名掲示板では「誰が書いたか」よりも「何を書いたか」を重要視するべきだから
加えて、コテハン禁止、無断転載禁止
自治厨みたいなことしたくないが、これがこのスレのルール
異論ある人は言ってくだされ
ちょいと付け足し
君の実情なんてどうでも良いからそんなのも書かなくて良い
匿名掲示板では「誰が書いたか」よりも「何を書いたか」を重要視するべきだから
加えて、コテハン禁止、無断転載禁止
自治厨みたいなことしたくないが、これがこのスレのルール
異論ある人は言ってくだされ
レスを投稿する
ニュース
- 中国側が首相答弁の撤回要求、日本側拒否★4 [夜のけいちゃん★]
- 中国側が首相答弁の撤回要求、日本側拒否★3 [夜のけいちゃん★]
- 中国の局長は「両手をポケット」で対峙 宣伝戦で国民に示す ★4 [蚤の市★]
- 被爆者は「怒りが腹の底から湧いてくる」高市首相“非核三原則見直し報道”に被爆地で懸念や憤りの声《長崎》 [1ゲットロボ★]
- 解体ごみ約2.3トンを山に不法投棄か トルコ国籍解体工を逮捕 埼玉 [どどん★]
- 債券・円・株「トリプル安」に…長期金利1.755%まで上昇、円は対ユーロで史上最安値 ★2 [蚤の市★]
- ネトウヨたち「「「戦争に反対する奴はスパイ!」」」 こんな状況でスパイ防止法が成立させられようとしてるとかマジでヤバすぎるだろ… [314039747]
- 【悲報】高市「稼がなきゃだめよ!稼ぐのよ!あとはよろしく」農水大臣「...(これが総理の農林水産業への思い気持ち)」 [517459952]
- みっちゃん「南鳥島にレイアース資源が眠っているのは皆さんご存知のはずです。そのレイアースを中国が狙ってます」高市 [931948549]
- 精神する時の🏡
- ネトウヨ「中国のものは何もいらない!」 中国人「だったら漢字を使わないでください」 [314039747]
- 【速報】春節の飛行機も欠航ラッシュ 高市早苗終了か [695089791]
