祝贺大鸟论坛开张,发个purebasic源码,mini正则调试小工具
本帖最后由 grooveli 于 2010-10-7 22:53 编辑; 迷你正则表达式小助手1.0copyright groovelihttp://www.8do8.com
Declare BalloonTip(WindowID, Gadget, Text$ , Title$, Icon)
Declare Open_Window_0()
Declare ReadCatalog(Filename$)
Declare StrProc_0(hWnd, uMsg, wParam, lParam)
Declare StrProc_1(hWnd, uMsg, wParam, lParam)
;- Window Constants
;
Enumeration
#Window_0
EndEnumeration
;- Gadget Constants
;
Enumeration
#Combo_0
#Frame3D_0
#Frame3D_1
#String_0
#Text_0
#String_1
#Text_3
#String_2
#Frame3D_2
#Text_4
#String_3
#String_4
#Frame3D_3
#Text_5
#String_5
#String_6
#Button_0
#Button_1
#Link_0
EndEnumeration
GlobalFontID1 = LoadFont(1, "Tahoma", 8)
Global Dim Language$(11)
Global StrProc_0,StrProc_1
Procedure BalloonTip(WindowID, Gadget, Text$ , Title$, Icon)
ToolTip=CreateWindowEx_(0,"ToolTips_Class32","",#WS_POPUP | #TTS_NOPREFIX | #TTS_BALLOON,0,0,0,0,WindowID,0,GetModuleHandle_(0),0)
SendMessage_(ToolTip,#TTM_SETTIPTEXTCOLOR,GetSysColor_(#COLOR_INFOTEXT),0)
SendMessage_(ToolTip,#TTM_SETTIPBKCOLOR,GetSysColor_(#COLOR_INFOBK),0)
SendMessage_(ToolTip,#TTM_SETMAXTIPWIDTH,0,180)
Balloon.TOOLINFO\cbSize=SizeOf(TOOLINFO)
Balloon\uFlags=#TTF_IDISHWND | #TTF_SUBCLASS
Balloon\hWnd=GadgetID(Gadget)
Balloon\uId=GadgetID(Gadget)
Balloon\lpszText=@Text$
SendMessage_(ToolTip, #TTM_ADDTOOL, 0, Balloon)
If Title$ > ""
SendMessage_(ToolTip, #TTM_SETTITLE, Icon, @Title$)
EndIf
EndProcedure
Procedure Open_Window_0()
If OpenWindow(#Window_0, 780, 243, 393, 465, "Mini RegularEXP Tools1.00",#PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered )
If CreateGadgetList(WindowID(#Window_0))
ComboBoxGadget(#Combo_0, 18, 141, 313, 150, #PB_ComboBox_Editable)
BalloonTip(GadgetID(#Combo_0), #Combo_0, Language$(0), "", #TOOLTIP_NO_ICON)
Frame3DGadget(#Frame3D_0, 8, 123, 378, 50, Language$(1))
Frame3DGadget(#Frame3D_1, 8, -2, 378, 124, Language$(2))
StringGadget(#String_0, 18, 12, 358, 100, "",#ES_MULTILINE|#WS_VSCROLL|#WS_HSCROLL)
StrProc_0 = SetWindowLong_(GadgetID(#String_0), #GWL_WNDPROC, @StrProc_0())
BalloonTip(GadgetID(#String_0), #String_0, Language$(3), "", #TOOLTIP_NO_ICON)
TextGadget(#Text_0, 14, 187, 66, 16, Language$(4))
StringGadget(#String_1, 80, 185, 66, 18, "", #PB_String_ReadOnly)
TextGadget(#Text_3, 153, 187, 63, 16, Language$(5))
StringGadget(#String_2, 218, 185, 66, 18, "", #PB_String_ReadOnly)
Frame3DGadget(#Frame3D_2, 8, 174, 378, 134, "")
TextGadget(#Text_4, 289, 187, 39, 16, Language$(6))
StringGadget(#String_3, 330, 185, 46, 18, "", #PB_String_ReadOnly)
ListViewGadget(#String_4, 18, 207, 358, 92)
SetGadgetColor(#String_4,#PB_Gadget_FrontColor,$8B321E)
Frame3DGadget(#Frame3D_3, 8, 309, 378, 134, Language$(7))
TextGadget(#Text_5, 18, 324, 99, 16, Language$(8))
StringGadget(#String_5, 123, 321, 202, 21, "")
SetGadgetColor(#String_5,#PB_Gadget_FrontColor,$1E6CC1)
StringGadget(#String_6, 18, 347, 358, 89, "",#ES_MULTILINE|#WS_VSCROLL|#WS_HSCROLL)
StrProc_1 = SetWindowLong_(GadgetID(#String_6), #GWL_WNDPROC, @StrProc_1())
BalloonTip(GadgetID(#String_6), #String_6, Language$(9), "", #TOOLTIP_NO_ICON)
ButtonGadget(#Button_0, 336, 141, 39, 21, Language$(10),#BS_FLAT)
ButtonGadget(#Button_1, 337, 321, 39, 21, Language$(11),#BS_FLAT)
HyperLinkGadget(#Link_0,38,446,320,18,"Copyright LOADSTONE grooveli 2008.7 www.8do8.com",$AB4019)
EndIf
For i=0 To #Link_0
SetGadgetFont(i, FontID1)
Next
EndIf
EndProcedure
Procedure ReadCatalog(Filename$)
If ReadFile(0, Filename$)
If ReadString(0) = "Catalog"
For k=0 To 11
Language$(k) = ReadString(0)
Next
EndIf
CloseFile(0)
EndIf
EndProcedure
Procedure StrProc_0(hWnd, uMsg, wParam, lParam)
Protected result
result = CallWindowProc_(StrProc_0, hWnd, uMsg, wParam, lParam)
Select uMsg
Case #WM_LBUTTONDBLCLK
Pattern$ = "Text (*.txt)|*.txt;*.bat|All files (*.*)|*.*"
PatternPS = 0
File$ = OpenFileRequester("Please choose file to open", "", Pattern$, PatternPS)
If File$
;MessageRequester("Information", "You have selected following file:" + Chr(10) + File$, 0)
If ReadFile(0,File$)
length = Lof(0)
*MemoryID = AllocateMemory(length)
If *MemoryID
ReadData(0, *MemoryID, length)
EndIf
CloseFile(0)
SetGadgetText(#String_0,PeekS(*MemoryID,length,#PB_Ascii))
EndIf
EndIf
EndSelect
ProcedureReturn result
EndProcedure
Procedure StrProc_1(hWnd, uMsg, wParam, lParam)
Protected result
result = CallWindowProc_(StrProc_1, hWnd, uMsg, wParam, lParam)
Select uMsg
Case #WM_LBUTTONDBLCLK
Pattern$ = "Text (*.txt)|*.txt;*.bat|All files (*.*)|*.*"
PatternPS = 0
File$ = SaveFileRequester("Please choose file to save", "", Pattern$, PatternPS)
If File$
;MessageRequester("Information", "You have selected following file:" + Chr(10) + File$, 0)
If OpenFile(0,File$)
Temp.s = GetGadgetText(#String_6)
WriteString(0,Temp)
CloseFile(0)
EndIf
EndIf
EndSelect
ProcedureReturn result
EndProcedure
Procedure GoMatch()
Flag=0
RegTxt.s=GetGadgetText(#Combo_0)
If RegTxt<>""
For i =0 To CountGadgetItems(#Combo_0)-1
If RegTxt=GetGadgetItemText(#Combo_0,i)
Flag=1
Break
EndIf
Next
If Flag=0
AddGadgetItem(#Combo_0,-1,RegTxt)
File$=GetCurrentDirectory()+"Reg.ini"
If FileSize(File$)<>0
If OpenFile(0,File$)
FileSeek(0,Lof(0))
WriteStringN(0,RegTxt)
CloseFile(0)
EndIf
Else
If CreateFile(0,File$)
WriteStringN(0,RegTxt)
CloseFile(0)
EndIf
EndIf
EndIf
If CreateRegularExpression(0,RegTxt)
Match=MatchRegularExpression(0,GetGadgetText(#String_0))
Debug Match
IfMatch
Dim Result$(0)
No=ExtractRegularExpression(0,GetGadgetText(#String_0),Result$())
SetGadgetText(#String_1,"Ture")
SetGadgetText(#string_2,Str(No))
ClearGadgetItemList(#string_4)
For i=0 To No-1
AddGadgetItem(#String_4,-1,Result$(i)) ;#string_4 is a listviewgadget!
Next
SetGadgetText(#string_4,OutPut$)
Else
SetGadgetText(#String_1,"False")
SetGadgetText(#string_2,Str(0))
ClearGadgetItemList(#string_4)
EndIf
FreeRegularExpression(0)
Else
MessageRequester("Error!",RegularExpressionError())
EndIf
Else
MessageRequester("error!","Please input a RegularExpression first :)")
SetActiveGadget(#Combo_0)
EndIf
EndProcedure
Procedure GoReplace()
RegTxt.s=GetGadgetText(#Combo_0)
If RegTxt<>""
If CreateRegularExpression(0,RegTxt)
Match=MatchRegularExpression(0,GetGadgetText(#String_0))
Debug Match
IfMatch
Result$=ReplaceRegularExpression(0,GetGadgetText(#String_0),GetGadgetText(#String_5))
SetGadgetText(#String_6,Result$)
EndIf
FreeRegularExpression(0)
Else
MessageRequester("Error!",RegularExpressionError())
EndIf
Else
MessageRequester("error!","Please input a RegularExpression first :)")
SetActiveGadget(#Combo_0)
EndIf
EndProcedure
;{ini()
; Procedure Ini()
; File$=GetCurrentDirectory()+"Reg.ini"
; If FileSize(File$)<>0
; If ReadFile(0,File$)
; ClearGadgetItemList(#Combo_0)
; While Eof(0)=0
; AddGadgetItem(#Combo_0,-1,ReadString(0))
; Wend
; CloseFile(0)
; EndIf
; EndIf
; EndProcedure
;}
Restore BaseLanguage
For k=0 To 11
Read.s Language$(k)
Next
; DataSection
; BaseLanguage:
; Data$ "Input a RegularExpression:)"
; Data$ "RegularExpression"
; Data$ "Text"
; Data$ "Double click to open a text file :)"
; Data$ "Match result:"
; Data$ "Match total:"
; Data$ "Length:"
; Data$ "Replace"
; Data$ "Input replace string:"
; Data$ "Double click to save file :)"
; Data$ "Go"
; Data$ "Go"
; EndDataSection
DataSection
BaseLanguage:
Data$ "输入正则表达式:)"
Data$ "正则表达式"
Data$ "文本"
Data$ "双击打开一个文本文件 :)"
Data$ "匹配结果:"
Data$ "匹配总数:"
Data$ "长度:"
Data$ "替换"
Data$ "输入替换字符串:"
Data$ "双击保存到文件 :)"
Data$ "Go"
Data$ "Go"
EndDataSection
Open_Window_0()
;Ini()
Repeat ; Start of the event loop
Event = WaitWindowEvent() ; This line waits until an event is received from Windows
WindowID = EventWindow() ; The Window where the event is generated, can be used in the gadget procedures
GadgetID = EventGadget() ; Is it a gadget event?
EventType = EventType() ; The event type
;You can place code here, and use the result as parameters for the procedures
If Event = #PB_Event_Gadget
If GadgetID = #Combo_0
ElseIf GadgetID = #String_4
Temp.s=GetGadgetItemText(#String_4,GetGadgetState(#string_4))
SetGadgetText(#String_3,Str(Len(Temp)))
ElseIf GadgetID = #Button_0
GoMatch()
ElseIf GadgetID = #Button_1
GoReplace()
ElseIf GadgetID = #Link_0
ShellExecute_(#Null,"open","Http://www.8do8.com/",#NULL$,#NULL$,#SW_SHOWMAXIMIZED)
EndIf
EndIf
Until Event = #PB_Event_CloseWindow ; End of the event loop
End
这个论坛还有行号功能? admin 发表于 2010-10-7 22:58 static/image/common/back.gif
这个论坛还有行号功能?
有啊,呵呵
用 代码就出来了 我看我 ID是多少 :(貌似不错
页:
[1]