登录 注册 找回密码 开启辅助访问 商业用户中心 购物车有0件商品 切换到宽版
搜索
查看: 6828|回复: 5
打印 上一主题 下一主题

[PureBasic] 祝贺大鸟论坛开张,发个purebasic源码,mini正则调试小工具

  [复制链接]
跳转到指定楼层
楼主
发表于 2010-10-7 22:01:33 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 grooveli 于 2010-10-7 22:53 编辑

  1. ; 迷你正则表达式小助手1.0  copyright grooveli  [url=http://www.8do8.com]http://www.8do8.com[/url]
  2. Declare BalloonTip(WindowID, Gadget, Text$ , Title$, Icon)
  3. Declare Open_Window_0()
  4. Declare ReadCatalog(Filename$)
  5. Declare StrProc_0(hWnd, uMsg, wParam, lParam)
  6. Declare StrProc_1(hWnd, uMsg, wParam, lParam)
  7. ;- Window Constants
  8. ;
  9. Enumeration
  10.       #Window_0
  11. EndEnumeration
  12. ;- Gadget Constants
  13. ;
  14. Enumeration
  15.       #Combo_0
  16.       #Frame3D_0
  17.       #Frame3D_1
  18.       #String_0
  19.       #Text_0
  20.       #String_1
  21.       #Text_3
  22.       #String_2
  23.       #Frame3D_2
  24.       #Text_4
  25.       #String_3
  26.       #String_4
  27.       #Frame3D_3
  28.       #Text_5
  29.       #String_5
  30.       #String_6
  31.       #Button_0
  32.       #Button_1
  33.       #Link_0
  34. EndEnumeration
  35. Global  FontID1 = LoadFont(1, "Tahoma", 8)
  36. Global Dim Language$(11)
  37. Global StrProc_0,StrProc_1

  38. Procedure BalloonTip(WindowID, Gadget, Text$ , Title$, Icon)
  39.       ToolTip=CreateWindowEx_(0,"ToolTips_Class32","",#WS_POPUP | #TTS_NOPREFIX | #TTS_BALLOON,0,0,0,0,WindowID,0,GetModuleHandle_(0),0)
  40.       SendMessage_(ToolTip,#TTM_SETTIPTEXTCOLOR,GetSysColor_(#COLOR_INFOTEXT),0)
  41.       SendMessage_(ToolTip,#TTM_SETTIPBKCOLOR,GetSysColor_(#COLOR_INFOBK),0)
  42.       SendMessage_(ToolTip,#TTM_SETMAXTIPWIDTH,0,180)
  43.       Balloon.TOOLINFO\cbSize=SizeOf(TOOLINFO)
  44.       Balloon\uFlags=#TTF_IDISHWND | #TTF_SUBCLASS
  45.       Balloon\hWnd=GadgetID(Gadget)
  46.       Balloon\uId=GadgetID(Gadget)
  47.       Balloon\lpszText=@Text$
  48.       SendMessage_(ToolTip, #TTM_ADDTOOL, 0, Balloon)
  49.       If Title$ > ""
  50.             SendMessage_(ToolTip, #TTM_SETTITLE, Icon, @Title$)
  51.       EndIf
  52. EndProcedure
  53. Procedure Open_Window_0()
  54.       If OpenWindow(#Window_0, 780, 243, 393, 465, "Mini RegularEXP Tools1.00",  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered )
  55.             If CreateGadgetList(WindowID(#Window_0))
  56.                   ComboBoxGadget(#Combo_0, 18, 141, 313, 150, #PB_ComboBox_Editable)
  57.                   BalloonTip(GadgetID(#Combo_0), #Combo_0, Language$(0), "", #TOOLTIP_NO_ICON)
  58.                   Frame3DGadget(#Frame3D_0, 8, 123, 378, 50, Language$(1))
  59.                   Frame3DGadget(#Frame3D_1, 8, -2, 378, 124, Language$(2))
  60.                   StringGadget(#String_0, 18, 12, 358, 100, "",#ES_MULTILINE|#WS_VSCROLL|#WS_HSCROLL)
  61.                   StrProc_0 = SetWindowLong_(GadgetID(#String_0), #GWL_WNDPROC, @StrProc_0())
  62.                   BalloonTip(GadgetID(#String_0), #String_0, Language$(3), "", #TOOLTIP_NO_ICON)
  63.                   TextGadget(#Text_0, 14, 187, 66, 16, Language$(4))
  64.                   StringGadget(#String_1, 80, 185, 66, 18, "", #PB_String_ReadOnly)
  65.                   TextGadget(#Text_3, 153, 187, 63, 16, Language$(5))
  66.                   StringGadget(#String_2, 218, 185, 66, 18, "", #PB_String_ReadOnly)
  67.                   Frame3DGadget(#Frame3D_2, 8, 174, 378, 134, "")
  68.                   TextGadget(#Text_4, 289, 187, 39, 16, Language$(6))
  69.                   StringGadget(#String_3, 330, 185, 46, 18, "", #PB_String_ReadOnly)
  70.                   ListViewGadget(#String_4, 18, 207, 358, 92)
  71.                   SetGadgetColor(#String_4,#PB_Gadget_FrontColor,$8B321E)
  72.                   Frame3DGadget(#Frame3D_3, 8, 309, 378, 134, Language$(7))
  73.                   TextGadget(#Text_5, 18, 324, 99, 16, Language$(8))
  74.                   StringGadget(#String_5, 123, 321, 202, 21, "")
  75.                   SetGadgetColor(#String_5,#PB_Gadget_FrontColor,$1E6CC1)
  76.                   StringGadget(#String_6, 18, 347, 358, 89, "",#ES_MULTILINE|#WS_VSCROLL|#WS_HSCROLL)
  77.                   StrProc_1 = SetWindowLong_(GadgetID(#String_6), #GWL_WNDPROC, @StrProc_1())
  78.                   BalloonTip(GadgetID(#String_6), #String_6, Language$(9), "", #TOOLTIP_NO_ICON)
  79.                   ButtonGadget(#Button_0, 336, 141, 39, 21, Language$(10),#BS_FLAT)
  80.                   ButtonGadget(#Button_1, 337, 321, 39, 21, Language$(11),#BS_FLAT)
  81.                   HyperLinkGadget(#Link_0,38,446,320,18,"Copyright LOADSTONE grooveli 2008.7             [url=http://www.8do8.com]www.8do8.com",$AB4019[/url])
  82.             EndIf
  83.             For i=0 To #Link_0
  84.                   SetGadgetFont(i, FontID1)
  85.             Next
  86.       EndIf
  87. EndProcedure
  88. Procedure ReadCatalog(Filename$)
  89.       If ReadFile(0, Filename$)
  90.             If ReadString(0) = "Catalog"
  91.                   For k=0 To 11
  92.                         Language$(k) = ReadString(0)
  93.                   Next
  94.             EndIf
  95.             CloseFile(0)
  96.       EndIf
  97. EndProcedure
  98. Procedure StrProc_0(hWnd, uMsg, wParam, lParam)
  99.       Protected result
  100.       result = CallWindowProc_(StrProc_0, hWnd, uMsg, wParam, lParam)
  101.       Select uMsg
  102.             Case #WM_LBUTTONDBLCLK
  103.                   Pattern$ = "Text (*.txt)|*.txt;*.bat|All files (*.*)|*.*"
  104.                   PatternPS = 0
  105.                   File$ = OpenFileRequester("Please choose file to open", "", Pattern$, PatternPS)
  106.                   If File$
  107.                         ;MessageRequester("Information", "You have selected following file:" + Chr(10) + File$, 0)
  108.                         If ReadFile(0,File$)
  109.                               length = Lof(0)
  110.                               *MemoryID = AllocateMemory(length)
  111.                               If *MemoryID
  112.                                     ReadData(0, *MemoryID, length)
  113.                               EndIf
  114.                               CloseFile(0)
  115.                               SetGadgetText(#String_0,PeekS(*MemoryID,length,#PB_Ascii))
  116.                         EndIf
  117.                   EndIf
  118.       EndSelect
  119.       ProcedureReturn result

  120. EndProcedure


复制代码

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

沙发
 楼主| 发表于 2010-10-7 22:02:30 | 只看该作者


  1. Procedure StrProc_1(hWnd, uMsg, wParam, lParam)

  2.       Protected result
  3.       result = CallWindowProc_(StrProc_1, hWnd, uMsg, wParam, lParam)
  4.       Select uMsg
  5.             Case #WM_LBUTTONDBLCLK
  6.                   Pattern$ = "Text (*.txt)|*.txt;*.bat|All files (*.*)|*.*"
  7.                   PatternPS = 0
  8.                   File$ = SaveFileRequester("Please choose file to save", "", Pattern$, PatternPS)
  9.                   If File$
  10.                         ;MessageRequester("Information", "You have selected following file:" + Chr(10) + File$, 0)
  11.                         If OpenFile(0,File$)
  12.                               Temp.s = GetGadgetText(#String_6)
  13.                               WriteString(0,Temp)
  14.                               CloseFile(0)
  15.                         EndIf
  16.                   EndIf
  17.       EndSelect
  18.       ProcedureReturn result
  19. EndProcedure

  20. Procedure GoMatch()
  21.       Flag=0
  22.       RegTxt.s=GetGadgetText(#Combo_0)
  23.       If RegTxt<>""
  24.             For i =0 To CountGadgetItems(#Combo_0)-1
  25.                   If RegTxt=GetGadgetItemText(#Combo_0,i)
  26.                         Flag=1
  27.                         Break
  28.                   EndIf
  29.             Next
  30.             If Flag=0
  31.                   AddGadgetItem(#Combo_0,-1,RegTxt)
  32.                   File$=GetCurrentDirectory()+"Reg.ini"
  33.                   If FileSize(File$)<>0
  34.                         If OpenFile(0,File$)
  35.                               FileSeek(0,Lof(0))
  36.                               WriteStringN(0,RegTxt)
  37.                               CloseFile(0)
  38.                         EndIf
  39.                   Else
  40.                         If CreateFile(0,File$)
  41.                               WriteStringN(0,RegTxt)
  42.                               CloseFile(0)
  43.                         EndIf
  44.                   EndIf
  45.             EndIf

  46.             If CreateRegularExpression(0,RegTxt)
  47.                   Match=MatchRegularExpression(0,GetGadgetText(#String_0))
  48.                   Debug Match
  49.                   If  Match
  50.                         Dim Result$(0)
  51.                         No=ExtractRegularExpression(0,GetGadgetText(#String_0),Result$())
  52.                         SetGadgetText(#String_1,"Ture")
  53.                         SetGadgetText(#string_2,Str(No))
  54.                         ClearGadgetItemList(#string_4)
  55.                         For i=0 To No-1
  56.                               AddGadgetItem(#String_4,-1,Result$(i)) ;#string_4 is a listviewgadget!
  57.                         Next
  58.                         SetGadgetText(#string_4,OutPut$)
  59.                   Else
  60.                         SetGadgetText(#String_1,"False")
  61.                         SetGadgetText(#string_2,Str(0))
  62.                         ClearGadgetItemList(#string_4)
  63.                   EndIf
  64.                   FreeRegularExpression(0)
  65.             Else
  66.                   MessageRequester("Error!",RegularExpressionError())
  67.             EndIf
  68.       Else
  69.             MessageRequester("error!","Please input a RegularExpression first :)")
  70.             SetActiveGadget(#Combo_0)
  71.       EndIf


  72. EndProcedure

  73. Procedure GoReplace()
  74.       RegTxt.s=GetGadgetText(#Combo_0)
  75.       If RegTxt<>""
  76.             If CreateRegularExpression(0,RegTxt)
  77.                   Match=MatchRegularExpression(0,GetGadgetText(#String_0))
  78.                   Debug Match
  79.                   If  Match
  80.                         Result$=ReplaceRegularExpression(0,GetGadgetText(#String_0),GetGadgetText(#String_5))
  81.                         SetGadgetText(#String_6,Result$)
  82.                   EndIf
  83.                   FreeRegularExpression(0)
  84.             Else
  85.                   MessageRequester("Error!",RegularExpressionError())
  86.             EndIf
  87.       Else
  88.             MessageRequester("error!","Please input a RegularExpression first :)")
  89.             SetActiveGadget(#Combo_0)
  90.       EndIf
  91. EndProcedure

  92. ;{ini()
  93. ; Procedure Ini()
  94. ;       File$=GetCurrentDirectory()+"Reg.ini"
  95. ;       If FileSize(File$)<>0
  96. ;             If ReadFile(0,File$)
  97. ;                   ClearGadgetItemList(#Combo_0)
  98. ;                   While Eof(0)=0
  99. ;                         AddGadgetItem(#Combo_0,-1,ReadString(0))
  100. ;                   Wend
  101. ;                   CloseFile(0)
  102. ;             EndIf
  103. ;       EndIf
  104. ; EndProcedure
  105. ;}

  106. Restore BaseLanguage
  107. For k=0 To 11
  108.       Read.s Language$(k)
  109. Next

  110. ; DataSection
  111. ;       BaseLanguage:
  112. ;       Data$ "Input a RegularExpression:)"
  113. ;       Data$ "RegularExpression"
  114. ;       Data$ "Text"
  115. ;       Data$ "Double click to open a text file :)"
  116. ;       Data$ "Match result:"
  117. ;       Data$ "Match total:"
  118. ;       Data$ "Length:"
  119. ;       Data$ "Replace"
  120. ;       Data$ "Input replace string:"
  121. ;       Data$ "Double click to save file :)"
  122. ;       Data$ "Go"
  123. ;       Data$ "Go"
  124. ;   EndDataSection
  125.   
  126. DataSection
  127.       BaseLanguage:
  128.       Data$ "输入正则表达式:)"
  129.       Data$ "正则表达式"
  130.       Data$ "文本"
  131.       Data$ "双击打开一个文本文件 :)"
  132.       Data$ "匹配结果:"
  133.       Data$ "匹配总数:"
  134.       Data$ "长度:"
  135.       Data$ "替换"
  136.       Data$ "输入替换字符串:"
  137.       Data$ "双击保存到文件 :)"
  138.       Data$ "Go"
  139.       Data$ "Go"
  140. EndDataSection

  141. Open_Window_0()
  142. ;Ini()


  143. Repeat ; Start of the event loop

  144.       Event = WaitWindowEvent() ; This line waits until an event is received from Windows

  145.       WindowID = EventWindow() ; The Window where the event is generated, can be used in the gadget procedures

  146.       GadgetID = EventGadget() ; Is it a gadget event?

  147.       EventType = EventType() ; The event type

  148.       ;You can place code here, and use the result as parameters for the procedures

  149.       If Event = #PB_Event_Gadget

  150.             If GadgetID = #Combo_0

  151.             ElseIf GadgetID = #String_4
  152.                   Temp.s=GetGadgetItemText(#String_4,GetGadgetState(#string_4))
  153.                   SetGadgetText(#String_3,Str(Len(Temp)))

  154.             ElseIf GadgetID = #Button_0
  155.                   GoMatch()

  156.             ElseIf GadgetID = #Button_1
  157.                   GoReplace()
  158.             ElseIf GadgetID = #Link_0
  159.                   ShellExecute_(#Null,"open","Http://www.8do8.com/",#NULL$,#NULL$,#SW_SHOWMAXIMIZED)
  160.             EndIf

  161.       EndIf

  162. Until Event = #PB_Event_CloseWindow ; End of the event loop

  163. End
复制代码
回复 支持 反对

使用道具 举报

板凳
发表于 2010-10-7 22:58:59 | 只看该作者
这个论坛还有行号功能?
回复 支持 反对

使用道具 举报

地板
 楼主| 发表于 2010-10-7 23:00:49 | 只看该作者
admin 发表于 2010-10-7 22:58
这个论坛还有行号功能?

有啊,呵呵
  1. 代码
复制代码
就出来了
回复 支持 反对

使用道具 举报

5#
发表于 2010-10-14 14:44:47 | 只看该作者
我看我 ID是多少
回复 支持 反对

使用道具 举报

6#
发表于 2010-10-19 01:05:08 | 只看该作者
貌似不错
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表