#=================================================================
if waku_br.to_f < 0.5 or waku_br.to_f > 2.0
puts "he 番号枠半径補正値設定エラー。"; exit
end
msg0 = "区画の三斜データをClipboardにコピーしました。"
datas,hens,all,lcs,lts,msg = [],[],[],[],[],""
while ARGF.gets
datas << $_
end
(datas.reverse).each{|data|
if data =~ /^h#/
msg = data
elsif data =~ /^\s[0-9-]/
hens << data
else
break
end
}
datas -= hens
datas.each{|data|
all << data
if data =~ /^ci/
en = data.split; en[3] = waku_br.to_f*en[3].to_f
if en.size == 8
if waku_lc == "0"
puts lcs[-1]
else
puts "lc"+waku_lc
end
if waku_lt == "0"
puts lts[-1]
else
puts "lt"+waku_lt
end
if waku_en == "1"
puts en[0,4].join("\s")
elsif waku_en == "0"
puts en.join("\s")
elsif waku_en == "2"
else
puts "he 枠種類設定エラー"; exit
end
else
if apex_lc == "0"
puts lcs[-1]
else
puts "lc"+apex_lc
end
if apex_lt == "0"
puts lts[-1]
else
puts "lt"+apex_lt
end
puts data
end
elsif data =~ /^pt/
if apex_pn != "0"
puts "pn"+apex_pn
end
puts data
elsif data =~ /^\s[0-9-]/
if all[-2] =~ /^z3/
if line_lc == "0"
puts lcs[-1]
else
puts "lc"+line_lc
end
if line_lt == "0"
puts lts[-1]
else
puts "lt"+line_lt
end
else
if hyou_lc == "0"
puts lcs[-1]
else
puts "lc"+hyou_lc
end
if hyou_lt == "0"
puts lts[-1]
else
puts "lt"+hyou_lt
end
end
puts data
elsif data =~ /^lc/
puts data
lcs << data
elsif data =~ /^lt/
puts data
lts << data
else
puts data
end
}
if hens.size >= 3
if shen_lc != "0"
puts "lc"+shen_lc
end
if shen_lt != "0"
puts "lt"+shen_lt
end
hens.each{|hen|
puts hen
}
end
henms = []; ii,ll = 0,datas.size-1
for idx in ii .. ll
if datas[idx] =~ /^cs/
iidx = idx + 1
ele = []
while datas[iidx] =~ /^ch/
no = datas[iidx].index(/\"/)
ele << datas[iidx][no+1..-1].strip
iidx += 1
end
if ele.size == 5
henms << ele.join("\t")
end
ii = iidx
end
end
setValue(henms.join("\n"))
puts "h# #{henms.size} #{msg0}#{msg}\n"
end
def setValue(string)
require 'Win32API'
openClipboard = Win32API.new('user32','OpenClipboard',['I'],'I')
emptyClipboard = Win32API.new('user32','EmptyClipboard',[],'I')
setClipboardData = Win32API.new('user32','SetClipboardData',['I','I'],'I')
closeClipboard = Win32API.new('user32','CloseClipboard',[],'I')
globalAlloc = Win32API.new('kernel32','GlobalAlloc',['I','I'],'I')
globalLock = Win32API.new('kernel32','GlobalLock',['I'],'I')
globalUnlock = Win32API.new('kernel32','GlobalUnlock',['I'],'I')
lstrlen = Win32API.new('kernel32','lstrlenA',['P'],'I')
lstrcpy = Win32API.new('kernel32','lstrcpyA',['I','P'],'P')
if openClipboard.Call(0) != 0
emptyClipboard.Call()
ll = lstrlen.Call(string)
gMEM = globalAlloc.Call(0x2000, ll+1)
pMEM = globalLock.Call(gMEM)
lstrcpy.Call(pMEM, string)
setClipboardData.Call(1, gMEM)
globalUnlock.Call(gMEM)
closeClipboard.Call
end
end
main()
__END__
:END