发信人: SuperSS (SS), 信区: ANSI
标 题: 特殊qmd的制作-4:彩色发信人等
发信站: 日月光华 (2003年09月15日15:44:36 星期一), 站内信件
每篇文章开头都会有些特定的信息:
发信人: 用户id (昵称), 信区: xxxx
标 题: xxxx
发信站: 日月光华 (xxxx年xx月xx日xx:xx:xx 星期□), 站内信件
(直接投条时头上几行略有不同)
想要"修改"这部分的内容的话也是有办法的,主要原理是利用光标定位*[H用新的内
容覆盖掉原先的内容
例如用户id是从第一行第九个字符处开始的, 于是可以用*[1;9H将光标定位到那里
然后用自己想要的内容覆盖掉原先的,如用加了色彩代码的彩色id代替原来的纯白色id,
其他内容也可以用同样的方法覆盖
这里会有几个常见问题:
一是后面内容随同上移问题,所以不能简单的用"*[1;9Hxxxx"了事,应该在覆盖完
了之后将光标恢复到定位前的位置,这就要用到光标位置的存储与恢复了(*[s与*[u),
也就是说,应该写为"*[s*[1;9Hxxxx*[u"
二是长度不一致问题,覆盖上去的内容比原先的内容短,就会留下一点没被覆盖掉,
如果恰巧留下半个汉字则有可能造成乱码; 覆盖的内容比原先的长,则会影响到其后面
的文字(如果有的话)。所以一般应该算好长度。还有用空格补齐或者用*[K删除行中光标
之后的内容等方法来消除影响
三是长文中的错误覆盖问题,这是没有办法的,一屏只显示23行内容, 如果覆盖语
句不在23行之内(包括本来发信人那几行也要计算在内),那么无法覆盖掉原先内容。 这
还是小事,关键是滚动屏幕,解释到这行代码时,屏幕上面第1行已经不是发信人,但是
代码*[1;9H依旧会起作用,照样会覆盖那里的内容,这就有可能覆盖掉正文中的某些字,
给别人阅读带来麻烦,所以发长文时不要用这种qmd
四是当别人带qmd引用你的文章时,照样会覆盖,可能会因为看到的发信人是你的id
而造成麻烦。这个没有办法,好在默认是不引用qmd的
另外,Web下没有光标控制,所以无法照顾到Web用户
注:Unix下不支持*[s和*[u控制符,而是使用*7和*8,因此这类qmd在Unix系统下的用户
来看会有问题。有建议用*7*[s和*8*[u来存储和恢复光标位置,使通用性更好。 我不用
Unix,无法测试
这种qmd毕竟问题太多,慎用
--
※ 来源:·日月光华 bbs.fudan.edu.cn·[FROM: 6张J]
Sender: SuperSS SS, Area: ANSI
Title: Production of special qmd 4 color sender, etc.
Sending site: Sun and Moon Guanghua Monday, September 15, 2003 15:44:36, site mail
Each article begins with some specific information
Sender: user id nickname, message area: xxxx
Title: xxxx
Sending station: Sun and Moon Guanghua xxxx year xx month xx day xx:xx:xx week, site letter
The first few lines are slightly different when investing directly.
If you want to "modify" the content of this part, there is a way. The main principle is to use the cursor to position *[H and use the new content
overwrite the original content
For example, the user ID starts from the ninth character on the first line, so you can use *[1;9H to position the cursor there.
Then overwrite the original one with the content you want. For example, replace the original pure white ID with a color coded color ID.
Other content can also be covered in the same way
Here are some frequently asked questions
First, the following content is moved up, so you cannot simply use "*[1;9Hxxxx" to solve the problem. It should be done after the coverage is completed.
After that, the cursor is restored to the position before positioning. This requires the storage and restoration of the cursor position *[s and *[u
In other words, it should be written as "*[s*[1;9Hxxxx*[u"
The second is the problem of length inconsistency. The overwritten content is shorter than the original content, leaving a little bit uncovered.
If you happen to leave half a Chinese character, it may cause garbled characters. The covered content is longer than the original, which will affect the following.
If there is any text, you should generally calculate the length and fill it with spaces or use *[K to delete the cursor in the line.
Later content and other methods to eliminate the impact
The third is the problem of error coverage in long articles. There is no way to do this. Only 23 lines of content are displayed on one screen. If the language is covered,
The sentence is not within the 23 lines, including the original sender's lines, so the original content cannot be overwritten.
It’s still a small matter. The key is to scroll the screen. When this line of code is explained, the first line on the screen is no longer the sender, but
The code *[1;9H will still work and will still cover the content there. This may cover some words in the text.
It will cause trouble for others to read, so don’t use this kind of qmd when posting long articles.
Fourth, when someone else uses qmd to quote your article, it will still be overwritten, possibly because the sender they see is your id.
There is no way to cause trouble. Fortunately, qmd is not quoted by default.
In addition, there is no cursor control under the Web, so Web users cannot be taken care of.
Note: *[s and *[u control characters are not supported under Unix. Instead, *7 and *8 are used. Therefore, users of this type of qmd under Unix systems
It seems that there will be problems. Some people suggest using *7*[s and *8*[u to store and restore the cursor position to make the versatility better. I don’t use it.
Unix cannot test
After all, this kind of qmd has too many problems. Use it with caution.
Source: Sun and Moon Guanghua bbs.fudan.edu.cn [FROM: 6 Zhang J]