【QBASIC互換!?】FreeBasic【GPL】 2 [無断転載禁止]©2ch.net (435レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

11
(1): 2017/01/18(水)20:22 ID:jwPQ/iiW(1/5) AAS
参照関係を調べる時に使うルーチン
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 ID:jwPQ/iiW(2/5) AAS
>>11 のつづき。
自己書き換えルーチンの場合に、目印とする行が即値で定義されている場合が多い。
即値を目印と勘違いするルーチンとなる場合があるので、即値を消す作業を行う。
13
(1): 2017/01/18(水)20:25 ID:jwPQ/iiW(3/5) AAS
ロボッチチェックに引っかかってちょっと分割する。
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
(1): 2017/01/18(水)20:26 ID:jwPQ/iiW(4/5) AAS
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
15: 2017/01/18(水)20:36 ID:jwPQ/iiW(5/5) AAS
>>13-14はコメント行を消す作業。コメント行か実行文か判断は面倒なので、
一括して消してしまう。
この2つのルーチンが主要なもので、他には、連続した空白の削除、TAB文字を空白に書き換える等の処理が必要。
こっちは比較的簡単なので、すぐ作れると思う。
Function 文で定義したルーチンの場合、
先頭が1文字目にある場合、戻り値を使わない場合の参照方法。
戻り値を使う場合には、先頭文字の直前(左側)が、演算子の場合が多い。
ということで、演算子であるかのチェックが必要。その他、()や空白、TAB文字等も演算子とみなして処理する。

なんとか、どのファイルの内容を参照しているか、を一覧表で表す見込みが立った。
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.030s