【QBASIC互換!?】FreeBasic【GPL】at TECH
【QBASIC互換!?】FreeBasic【GPL】 - 暇つぶし2ch1063:デフォルトの名無しさん
16/12/15 21:14:46.37 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:デフォルトの名無しさん
16/12/15 21:15:32.70 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:デフォルトの名無しさん
16/12/15 21:25:32.19 9nAvfrOI.net
GH領域の半角空白、&hA0は、GL領域の半角空白と等値であるとして処理している。

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

1066:sage
16/12/15 21:30:42.16 VRbOmxa/.net
URLリンク(www.youtube.com)

URLリンク(www.youtube.com)

URLリンク(www.youtube.com)

1067:デフォルトの名無しさん
16/12/16 21:56:34.17 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:デフォルトの名無しさん
16/12/16 22:21:02.16 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:デフォルトの名無しさん
16/12/16 22:36:53.84 rZ3nkbqi.net
V.B.と同じだと思っていた Byte 型変数。
比較ルーチンを使っている場合に、FreeBasic での違いに泣くので要注意。

URLリンク(makoto-watanabe.main.jp)
-128~127 の範囲の値を保持できます。
V.B.では
URLリンク(makoto-watanabe.main.jp)
0~255の範囲の値を保持できます。
と同じなので、
移植作業の時には、As Byte 宣言を一律 As UByte 宣言に書き換えても良いかもしれない。

V.B.のころは
値返しのFunction 文で、名称の末尾1文字を
I;単精度整数, L;倍精度整数, S;単精度実数, D;倍精度実数で、
末尾に Bool が付いた場合には論理変数で
あたいを返す用にしていた。入力引数のほうもほぼ同様な扱いにしていた。
ところが、整数型がFreeBasicではやたら増えて、合計15種類もある。
>>962 のように番号で区別するように、変更中。

1071:デフォルトの名無しさん
16/12/18 12:29:50.18 1/CaK5B1.net
URLリンク(makoto-watanabe.main.jp)
の見本ファイルが構文障害で動作せず。
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:デフォルトの名無しさん
16/12/18 12:31:31.87 1/CaK5B1.net
>>983 つづき。
コンパイラーが通っただけだから。圧縮・解凍するかは試してない。

1073:デフォルトの名無しさん
16/12/18 21:17:31.69 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 ファイルを探すことになるのだが
URLリンク(search.yahoo.co.jp)
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
どうもソースコード配布らしい。
URLリンク(makoto-watanabe.main.jp) の
URLリンク(nih.at)

URLリンク(nih.at)
も、ソースコードらしきものがあったが、*.A, *.DLL は発見で゜傷。
Win10用のgz系圧縮ファイルの解凍ソフトは
URLリンク(www.vector.co.jp)


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



1075:デフォルトの名無しさん
16/12/18 21:40:48.13 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
URLリンク(hatenachips.blog34.fc2.com)
相当ルーチンを作ろうとしたのが、今日の一連の作業。

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

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

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

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


1078:クリック。 「色の設定」枠が表示されるので、適当に選んで「OK」をクリック。 こんな調子で使えるようになった。



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

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

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

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

1082:デフォルトの名無しさん
16/12/22 21:36:10.43 Vulz5JgX.net
>>975 にあるように
'*-* ASC半角カタカナを全角平仮名・全角片仮名に書き換える
と怪しげなコメント行がある。「'*-* 」が各サブルーチンに1行だけ存在し、ルーチンの概要を示している。
これをかき集めて、先頭に書き並べると、ライブファイル内のルーチンの一覧表が完成する。
Visual Basic では、ワードを使ってドキュメントがどうのこうのと書いてあったが、理解できなかった。
それで、Wterm URLリンク(www.vector.co.jp)
という通信ソフトの取扱説明書のどこかに、ソースから引き抜いして説明書を作ったのでおかしな日本語がある。旨の記載があった。
これをまねして作ったのが、怪しげなコメント行。'* * の4文字が固定、*と*の間の1文字に特殊な意味を持たせている。
ここにUcase$()で一律大文字にしてInstr(???, "'*-* ")=1等で行の意味を特定していた。
Ucase$() が使えないので、先頭5文字だけ切り出して比較するという処理に変えた。

FreeBasic で&hA0を使っているとヤバイのだが、
文字定数を意味する ""内処理と""外処理では意味が変わってくる。
自動書き換えルーチンで書き換えの対象となる後者と、書き換えてはマンマシンテンターフェース上問題になってしまうであろう前者の違いである。
MS-DOSの頃は&h00を使っていたのだが、FreeBasicでは文字変数の末尾という意味で使っているので使えない。
かわりに&hA0を使って""内を塗りつぶしてInstr()文で検索している。

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


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch