血泪相求万分火急:跪求各位高手,救小弟一命,解答者来拉萨兄弟吃喝玩乐全程全包!

zd304 2007-06-20 12:49:03
先介绍下,本人西藏大学03计本一学生,湖南人,现在情况如下,检察院已经考上了,万事皆备,就差毕设了,如果不过的话一切皆东流水了,如果那位兄弟解决的话你不仅将认识一个非常好的朋友,而且来西藏任何一个地方都将不再陌生,资料如下!
藏文版式规则
藏文和其他文种一样,在排版和编辑的时候有一定的格式要求,或者说是格式规范,我们在排版时千万不能忽视,现就几点重要规范作如下说明,在说明版式规则之前,我们有必要先来认识一下藏文组成:
1.藏文属于拼音文字,她由4个元音字母、30个辅音字母以及因素符组成,因素符相当于汉语中的标点符号,常见的因素符有:︶︹﹀﹀ ︽ ﹀﹀ ﹀ ﹀﹀﹀﹀ ;
2.藏文以音节为单位,藏文的每一个音节几乎都由两个以上的音缀,甚至7个以上的音缀构成,音节之间用一个因素符——“ ︽ ”分开,我们称之为“音节点”,她在藏文中是不可缺少的元素,没有此符号就无法表达所述内容,因此,音节点“ ︽ ”在藏文中是重中之重,被称为“文字生命”。
下面这段是老师给我提供的在WEB里实现藏文断行的的资料,但是代码执行老是有错误,请各位高手给我帮忙下,因为这个星期6就要答辩了,在下没齿难忘!
WEB页面藏文移行规则的解决方案

行首不能出现 FE3D(︽) FE40(﹀) FE41(﹀ ﹀)
行尾只能出现 FE3D(︽) FE40(﹀) FE41(﹀ ﹀)

拟解决办法:
1.寻找Html的接口函数,即:移行规则程序与Html的连接。有两种连接方式:
(1)在藏文输入页面中建一个[藏文规则]按钮调用移行规则程序,点击[藏文规则]项,完成藏文移行规则;
(2)将移行规则程序生成*.js文件、或*.vbs文件[既JavaScript或VbScript脚本]格式,并在页面Html头描述中嵌入<SCRIPT language=JavaScript src="*.js"></SCRIPT>(或<SCRIPT language=VbScript src="*.vbs"></SCRIPT>)语言中一并加载,在藏文调入过程中,随时控制完成排版。
2.移行规则程序以读行和判断行首尾的方式,控制整个文档。
(1)首先Web页面中藏文文档所在的<td></td>的width(宽度),并检测<td></td>中单个藏文字符宽度。
(2)其次用(<td></td>的width÷单个藏文字符宽度)-2,得出<td></td>中每一行所能显示的字符个数。
(3)再次判断行首,如果行首出现FE3D FE40 FE41字符,则无条件删除。
(4)最后判断行尾字符是否为:FE3D FE40 FE41,如果不是其中的字符,判断该行是否包含空格,若找到空格在空格处添加chr(32)[空格],该行字符随着后移,直到行尾出现FE3D FE40 FE41字符,如果找不到空格,则向前寻找第一个FE3D字符,找到后用FE3D字符填满该行。


Sub 藏文排版()

Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim step As Integer
Dim d As Integer
Dim n As Integer
Dim filehandle As String
Dim WinPath As String
Dim Char As String
Dim found As Boolean

found = False
With Selection
d = .Move(wdStory, -1) '光标到行首
If (.Range. Characters(1) = "︽") Then '如果光标后的字是︽
found = True
End If
d = .MoveRight(wdCharacter, 1) '光标右移的字符数
While d = 1
If (.Range. Characters(1) = "︽") Then
If (found = False) Then
found = True
d = .Move(wdCharacter, 1)
Else
n = .Range.Delete(wdCharacter, 1) '删除光标后的一个字符
End If
ElseIf (.Range.Characters(1) = Chr$(11)) Then '光标后是否为换行符
n = .Range.Delete(wdCharacter, 1) '删除光标后的一个字符
found = False
Else
found = False
d = .Move(wdCharacter, 1)
End If
Wend
End With

WinPath = Space$(200)
d = Len(WinPath)
n = GetWindowsDirectoryA(WinPath, d)

WinPath = Left$(WinPath, n)
If Right$(WinPath, 1) <> "\" Then
WinPath = (WinPath + "\")
End If

filehandle = FreeFile
Open WinPath + "NoEndChars.dat" For Input As #filehandle '

For i = 1 To CodeNum Step 1
Line Input #filehandle, NoEndChars(i)
Next i

step = -1

With Selection

While step = -1
step = .Move(wdParagraph, -1)
Wend

.Expand wdParagraph
.Collapse wdCollapseStart

step = 1

While step = 1
d = .MoveEnd(wdLine, 1) ' 从光标位置到行尾选中
n = .Range.Characters.Count '所选范围内的字符数
Char = ""
found = False
For j = n To 1 Step -1
found = False
If .Range.Characters(j) <> " " And .Range.Characters(j) <> Chr$(13) Then '光标后不是空格和回车
If (.Range.Characters(j) = "罢") Then
If (j < n) Then
If (.Range.Characters(j + 1) = " " Or .Range.Characters(j + 1) = Chr$(13)) Then
Char = .Range.Characters(j)
.Collapse wdCollapseStart
found = True
Exit For
End If
End If
End If
If IsEndChar(.Range.Characters(j)) = True Then
Char = .Range.Characters(j)
.Collapse wdCollapseStart
found = True
Exit For
End If
End If
Next j
If (j < n) Then
d = .Move(wdCharacter, j)
If (.Range.Characters(1) = " ") Then
d = .Range.Delete(wdCharacter, 1)
End If
End If
If j < n And j > 0 Then
If j > 1 Then
If Char = "︽" Then '如果是分词符号
d = 0
While d <> 1 '循环加分词符
.Range.InsertAfter ("︽")
n = .Move(wdCharacter, 1)
n = .HomeKey(wdLine, wdExtend)
d = .Range.Characters.Count
.Collapse wdCollapseEnd
Wend
If (.Range.Characters(1) = Chr$(13)) Then '如果光标后的字符为回车,则删除左边的字符
n = .Move(wdCharacter, -1)
n = .Range.Delete(wdCharacter, 1)
Else
n = .Move(wdCharacter, -1) '如果光标后不是回车,则光标左移一个字符
End If
Else '如果不是分词符号
'.Range.InsertAfter (Chr$(11)) '光标后插入换行符
'.Range.InsertAfter (" ") '加 空格
d = 0
While d <> 1 '循环加分词符
'.Range.InsertAfter ("︽")
.Range.InsertAfter Chr$(6)
n = .Move(wdCharacter, 1)
n = .HomeKey(wdLine, wdExtend)
d = .Range.Characters.Count
n = .Range.Delete(wdCharacter, 1)
'.Collapse wdCollapseEnd

Wend
End If
End If
End If

n = .HomeKey(wdLine, wdExtend)
d = .Range.Characters.Count
If n <= 0 Or found = False Then
step = .Move(wdLine, 1)
End If

If (.Range.Characters(1) <> Chr$(13)) Then
step = 1
Else
d = .MoveEnd(wdStory, 1)
If .Range.Characters.Count < 10 Then
step = 0
End If
End If
.Collapse wdCollapseStart
Wend
End With
End Sub

我的QQ:240665271  电话:13628905641
...全文
340 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
meiZiNick 2008-04-30
  • 打赏
  • 举报
回复
好像没那么简单,呵呵.
goodmrning 2008-01-09
  • 打赏
  • 举报
回复
帮顶
_码农一个_ 2008-01-03
  • 打赏
  • 举报
回复
你贴的这段是在Word中运行的VBA宏代码吧
东方之珠 2008-01-03
  • 打赏
  • 举报
回复
哇,藏文排版,真不错~~~~~~
zhizlm 2008-01-03
  • 打赏
  • 举报
回复
你有请客那精神 也学会了。
Sandrer 2008-01-03
  • 打赏
  • 举报
回复
哇,去拉萨这么远~~~~
shulei521 2007-12-29
  • 打赏
  • 举报
回复
顶呀顶呀顶呀顶
junki 2007-12-29
  • 打赏
  • 举报
回复
设计不错,现在还有什么问题
knight_ice 2007-06-20
  • 打赏
  • 举报
回复
好长哦,懒得看,我只是个高中生
如果你说的是字节处理的话,那我可以告诉你,vb的这个有点毛病,我都是用vc设计一个模块,然后给vb调用的....
CathySun118 2007-06-20
  • 打赏
  • 举报
回复
mark

1,486

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧