simple testing..
Code: Select all
#SingleInstance, Force
#WinActivateForce
SetBatchLines, -1
myVar =
(
TX07 - 52411
CA07 - 52412
WA07 - 52413
)
Gui, 메인창: New,, % " testing... "
Gui, 메인창: Add, Text, y+15 , % myVar
Gui, 메인창: Add, Text, y+15 , your Input :
Gui, 메인창: Add, Edit, x+7 yp-3 w400 v입력, CA
Gui, 메인창: Add, Button, w400 -Tabstop Default g단추 , Go (Click/Enter)
Gui, 메인창: Add, Text, x10 v표시부 , % " "
Gui, 메인창: Show
GuiControl, 메인창: Focus, 타겟
Send, {End}
Return
메인창GuiClose:
메인창GuiEscape:
Soundbeep, 100, 200
ExitApp
단추:
Gui, 메인창: Submit, NoHide
myFound := False
Loop, Parse, myVar, `n, `r
If(A_LoopField == 입력)
myFound := True, Break
If(myFound)
{
Loop, 7
Soundbeep, A_Index * 1111, 44
myShow := "Good ! " 입력
}
Else
{
Soundbeep, 333, 55
Soundbeep, 333, 55
myMax =
Loop, Parse, myVar, `n, `r
{
myPercent := RegExReplace((1 - 편집거리(입력, A_LoopField)) * 100, "\..*$")
If(myPercent > myMax)
{
myMax := myPercent
myShow := "How about ? " A_LoopField
}
}
}
GuiControl, 메인창: , 표시부, % myShow
Return
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
편집거리(string1, string2, maxOffset := 1)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; By Toralf:
; Super Fast and Accurate string distance algorithm: Sift4
; https://siderite.blogspot.com/2014/11/super-fast-and-accurate-string-distance.html
; basic idea for SIFT3 code by Siderite Zackwehdex
; http://siderite.blogspot.com/2007/04/super-fast-and-accurate-string-distance.html
; took idea to normalize it to longest string from Brad Wood
; http://www.bradwood.com/string_compare/
; Own work:
; - when character only differ in case, LSC is a 0.8 match for this character
; - modified code for speed, might lead to different results compared to original code
; - optimized for speed (30% faster then original SIFT3 and 13.3 times faster than basic Levenshtein distance)
; http://www.autohotkey.com/forum/topic59407.html
{
If (string1 = string2)
Return (string1 == string2 ? 0 / 1 : 0.2 / StrLen(string1)) ; either identical or (assumption:) "only one" char with different case
If (string1 = "" OR string2 = "")
Return (string1 = string2 ? 0/1 : 1/1)
StringSplit, n, string1
StringSplit, m, string2
ni := 1
mi := 1
lcs := 0
While((ni <= n0 ) AND (mi <= m0))
{
If (n%ni% == m%mi%)
EnvAdd, lcs, 1
Else If (n%ni% = m%mi%)
EnvAdd, lcs, 0.8
Else
{
Loop, % maxOffset
{
oi := ni + A_Index
pi := mi + A_Index
If ((n%oi% = m%mi%) AND (oi <= n0))
{
ni := oi
lcs += (n%oi% == m%mi% ? 1 : 0.8)
Break
}
If ((n%ni% = m%pi%) AND (pi <= m0))
{
mi := pi
lcs += (n%ni% == m%pi% ? 1 : 0.8)
Break
}
}
}
EnvAdd, ni, 1
EnvAdd, mi, 1
}
Return ((n0 + m0)/2 - lcs) / (n0 > m0 ? n0 : m0)
}