◀マクロトップへ
  • 330 現在行のタグファイル文字列を作成
    • 331 Re:現在行のタグファイル文字列を作成
      • 332 Re2:現在行のタグファイル文字列を作成
      • 336 MRUから作成その1
        • 337 MRUから作成その2
          • 338 Re:MRUから作成その2
    • 333 Re:現在行のタグファイル文字列を作成
      • 334 Re2:現在行のタグファイル文字列を作成
        • 335 Re3:現在行のタグファイル文字列を作成
  • [330] 現在行のタグファイル文字列を作成 まくろ初心者 2006年12月04日 23:46

    現在行のタグファイル文字列(こんなの→C:\sakura\Macro\test.vbs(30,19) [SJIS]:Call Editor.TraceOut( msg , 2))を作成します。
    あんまり用途ないですが…笑

    ' createTagString.vbs
    ret = GetCharCode
    select case ret
    case 0:
    sCharCode = "SJIS"
    case 1:
    sCharCode = "JIS"
    case 2:
    sCharCode = "EUC"
    case 3:
    sCharCode = "UNICODE"
    case 4:
    sCharCode = "UTF-8"
    case 5:
    sCharCode = "UTF-7"
    case 6:
    sCharCode = "UNICODE-BE"
    end select

    iCurLine = GetLineCount(0)
    FilePath = ExpandParameter("$F")
    Right_Sel
    iCol = GetSelectColmFrom
    Left_Sel
    sLine = GetLineStr(0)

    msg = FilePath & "(" & iCurLine & "," & iCol & ") [" & sCharCode & "]:" & sLine

    Call Editor.TraceOut( msg , 2)
    • [331] Re:現在行のタグファイル文字列を作成 じゅうじ 2006年12月05日 14:11

      ▼ まくろ初心者さん
      > 現在行のタグファイル文字列を作成します。
      > あんまり用途ないですが…笑

      文字コードは、先頭に持って来ても、(ダイレクトタグジャンプで)大丈夫のようです。
      現在行番号を取って来るようにしました。

      ' iCurLine = GetLineCount(0)
      ' Right_Sel
      Right_Sel
      iCurLine = GetSelectLineFrom

      msg = "[" & sCharCode & "] " & FilePath & "(" & iCurLine & "," & iCol & "): " & sLine

      手動操作と自動操作の中間で、
      sakura.ini のMRU(bookmark)タグに入っている形式からの取り出しも欲しくなります。
      では、また。
      • [332] Re2:現在行のタグファイル文字列を作成 まくろ初心者 2006年12月05日 18:25

        ▼ じゅうじさん
        > ▼ まくろ初心者さん
        > > 現在行のタグファイル文字列を作成します。
        > > あんまり用途ないですが…笑
        >
        > 文字コードは、先頭に持って来ても、(ダイレクトタグジャンプで)大丈夫のようです。
        > 現在行番号を取って来るようにしました。
        >
        > ' iCurLine = GetLineCount(0)
        > ' Right_Sel
        > Right_Sel
        > iCurLine = GetSelectLineFrom
        >
        > msg = "[" & sCharCode & "] " & FilePath & "(" & iCurLine & "," & iCol & "): " & sLine
        >
        > 手動操作と自動操作の中間で、
        > sakura.ini のMRU(bookmark)タグに入っている形式からの取り出しも欲しくなります。
        > では、また。

        間違いの指摘ありがとうございした。
        MRUを取得するやつも作ってみましたが…遅い…(--;)


        投稿しようとしたらサイズオーバー
        う~ん、でかすぎかな。ファイルが…汗
      • [336] MRUから作成その1 まくろ初心者 2006年12月06日 01:05

        ' createTagByMru
        Call Main()

        Sub Main()
        Const MRU_SECTION_NAME = "MRU"
        Const MRU_ENTRY_NAME = "MRU"
        Const MRU_ENTRY_PATH = ".szPath"
        Const MRU_ENTRY_X = ".nX"
        Const MRU_ENTRY_Y = ".nY"
        Const MRU_ENTRY_CHARCODE = ".nCharCode"
        Const MRU_ENTRY_MAX = "_MRU_Counts"
        Const MRU_FR = 0

        Dim iniCtl

        Set iniCtl = New clsSakuraIni

        Dim sNum
        Dim mruTo
        mruTo = iniCtl.GetProfileString(MRU_SECTION_NAME ,MRU_ENTRY_MAX )
        Dim sCharCode, iCol, iCurLine, FilePath, sLine
        Dim sTag

        for i = MRU_FR to mruTo - 1
        if i < 10 then
        sNum = "0" & i
        Else
        sNum = i
        End If
        sCharCode = getCharCodeStr( iniCtl.GetProfileString(MRU_SECTION_NAME ,MRU_ENTRY_NAME & "[" & sNum & "]" & MRU_ENTRY_CHARCODE ) )
        iCol = iniCtl.GetProfileString(MRU_SECTION_NAME ,MRU_ENTRY_NAME & "[" & sNum & "]" & MRU_ENTRY_X)
        iCurLine = iniCtl.GetProfileString(MRU_SECTION_NAME ,MRU_ENTRY_NAME & "[" & sNum & "]" & MRU_ENTRY_Y )
        FilePath = iniCtl.GetProfileString(MRU_SECTION_NAME ,MRU_ENTRY_NAME & "[" & sNum & "]" & MRU_ENTRY_PATH )
        sLine = "" 'GetLineStr(0)
        sTag = FilePath & "(" & iCurLine & "," & iCol & ") [" & sCharCode & "]:" & sLine
        TraceOut(sTag)
        Next

        Set iniCtl = Nothing ' インスタンスを破棄します。
        End Sub
        • [337] MRUから作成その2 まくろ初心者 2006年12月06日 01:05


          Function getCharCodeStr( charCode )
          if Not isNumeric(charCode) then Exit Function
          aryChar = Array("SJIS", "JIS", "EUC", "UNICODE", "UTF-8", "UTF-7", "UNICODE-BE")
          getCharCodeStr = aryChar( charCode )
          End Function

          ' Class 定義
          Class clsSakuraIni
          Dim aryLine
          Private Sub Class_Initialize ' Initialize イベントを設定します。
          Dim objFso
          Dim iniFileName
          Dim objFs

          Set objFso = CreateObject("Scripting.FileSystemObject")
          iniFileName = getSakuraIniFileName

          Set objFs = objFso.OpenTextFile( iniFileName, 1 )
          aryLine = Split( objFs.ReadAll, vbCrLf )
          objFs.Close
          Set objFs = Nothing
          Set objFso = Nothing
          End Sub

          Private Sub Class_Terminate ' Terminate イベントを設定します。
          ' Do Nothing
          End Sub

          ' ini ファイル名生成
          Private Function getSakuraIniFileName()
          Dim sakuraPath, pos, sRet
          sakuraPath = ExpandParameter("$S")
          pos = instrrev(sakuraPath, ".")
          if pos <= 0 then
          sRet = ""
          Else
          sRet = Mid(sakuraPath, 1, pos ) & "ini"
          End If
          getSakuraIniFileName = sRet
          End Function

          ' ini ファイルの読み込み
          Function getProfileString( strSection, strEntry)
          Dim i, sRet

          if UBound( aryLine ) > 0 then
          ' ini ファイルの解析
          Dim bFound,sLine,aryEntity

          sRet = "" 'Empty
          bFound = False
          For i = 0 to Ubound( aryLine )-1
          if bFound then
          if Left( aryLine( i ), 1 ) = "[" then Exit For

          sLine = LTrim( aryLine( i ) )
          if Left( sLine, Len(strEntry)) = strEntry then
          aryEntity = Split( sLine, "=" )
          if Trim(aryEntity(0)) = strEntry then
          if Ubound( aryEntity ) = 1 then
          sRet = Trim( aryEntity( 1 ) )
          Exit For
          end if
          end if
          end if
          End if
          if aryLine(i) = "[" & strSection & "]" then
          bFound = True
          end if
          Next
          Else
          sRet = ""
          End If
          getProfileString = sRet
          End Function

          End Class


          • [338] Re:MRUから作成その2 まくろ初心者 2006年12月06日 01:08

            説明があとになっちゃいました…汗

            その1、その2を連結するとMRUからタグ文を作成します。
            (ただしファイル内容は取得しないです。)

            若干動作が遅いのと、INIのパーサが自前なので微妙かもです。
    • [333] Re:現在行のタグファイル文字列を作成 maru 2006年12月06日 00:13

      ▼ まくろ初心者さん
      GetSelectColmFromは折り返しモードの時に折り返し単位での桁位置を示しますので
      こういう処理は素直にExpandParameterに任せた方がいいかも。

      ' createTagString.vbs
      vArr = Array("SJIS", "JIS", "EUC", "UNICODE", "UTF-8", "UTF-7", "UNICODE-BE")
      Call TraceOut("$F($y,$x) [" & vArr(GetCharCode) & "]: " & GetLineStr(0), 3)
      • [334] Re2:現在行のタグファイル文字列を作成 maru 2006年12月06日 00:21

        GetLineStr(0)の中に特殊展開文字列があるかもしれないので
        さっきのはだめですね。

        ' createTagString.vbs
        vArr = Array("SJIS", "JIS", "EUC", "UNICODE", _
        "UTF-8", "UTF-7", "UNICODE-BE")
        Call TraceOut("$F($y,$x) [" & vArr(GetCharCode) & "]: ", 3)
        Call TraceOut(GetLineStr(0), 2)
        • [335] Re3:現在行のタグファイル文字列を作成 まくろ初心者 2006年12月06日 01:03


          いろいろと返信ありがとございます。
          結局2行で書けてしまいますね…笑

          ' createTagString.vbs
          aryChar = Array("SJIS", "JIS", "EUC", "UNICODE", "UTF-8", _
          "UTF-7", "UNICODE-BE")
          Call Editor.TraceOut( ExpandParameter("$F($y,$x) [") & aryChar( GetCharCode ) & "]:" & GetLineStr(0) , 2)