设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

返回列表 发新帖
查看: 2910|回复: 8
打印 上一主题 下一主题

[模块/函数] 【Access小品】卖糕的紫竹姑娘--空格的疑惑

[复制链接]
跳转到指定楼层
1#
发表于 2010-12-30 15:47:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 todaynew 于 2010-12-30 16:28 编辑

  紫竹姑娘今日上机考试完毕,翘着小辫唱着“哇哈哈”喊着“卖糕的”,奔向论坛报捷。

  考试的前夜,女孩紫竹在论坛发了一个关于在列表框中排列一个右对齐的三角形字符列表问题(如图所示)。我看了一下觉得这个问题很简单,便写了一个函数给她。函数如下:


Function strlist1() As String
Dim i As Long, j As Long
Dim str As String
str = ""
For i = 1 To 5
    For j = 1 To (i - 1) * 2 + 1
       str = str & "×"
    Next
    str = str & ";"
Next
strlist1 = str
End Function

  晚上看完《决战大西南》后,有想起这个问题来,觉得解法还是有点问题,因为这样的结果,将产生的是一个左对齐的排列。便认为用Format函数规定字符串长度,应该可以解决这个问题,便写了函数strlist2。

  奇怪的是排列没有变化,于是看了看属性值,似乎应该加引号。就在函数strlist2基础上给字符串加上引号,写成strlist3。

  有点鬼打架,strlist3的结果是排列为一个金字塔形。于是我想应该与半角全角有关,Format可能无法解决全角字符长度。便决定用Space函数前补空格,以此思路写了strlist4。可是排列依然是金字塔形,仍不能实现右对齐排列。百思不得其解中,不愿多想,便寻周公去了。

  今日看见“卖糕的”紫竹姑娘,突有想起此问题。于是写了函数strlist5,强行前置空格。倒是实现了右排列,但怎么想怎么觉得这个问题的解法有问题。于是发此贴求解疑惑。

点击下载此附件



--------------------------------------------------------------------------------------------------

紫竹姑娘三部曲:
1、《有个姑娘叫紫竹》
http://accessoft.com/blog/article-show.asp?userid=10802&Id=5153

2、《一份崇高两份伟大》
http://accessoft.com/blog/article-show.asp?userid=10802&Id=5154

3、《卖糕的紫竹姑娘》
http://accessoft.com/blog/article-show.asp?userid=10802&Id=5161

评分

参与人数 1经验 +10 收起 理由
5988143 + 10 原创内容

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
2#
发表于 2010-12-30 15:55:08 | 只看该作者
todaynew 老师真是高手!佩服
3#
发表于 2010-12-30 16:24:27 | 只看该作者
高手高招哦~
4#
发表于 2010-12-30 16:27:50 | 只看该作者
好久没来,原来论坛出了个高手, 贴子写得如此好玩
5#
发表于 2010-12-31 08:20:02 | 只看该作者
收藏了

点击这里给我发消息

6#
发表于 2010-12-31 12:10:21 | 只看该作者
我试了一下,原来两个空格的宽度相当于一个×的宽度, 因为空格和空格之间没有间距,而×之间是有间距的,所以...
例中可以用string函数使算法更简单一点:
Function strlist5() As String
    Dim i As Integer
    For i = 1 To 10 Step 2
        strlist5 = strlist5 & "'" & String((10 - i) * 2, " ") & String(i, "×") & "';"
    Next
End Function
7#
 楼主| 发表于 2010-12-31 13:52:57 | 只看该作者
本帖最后由 todaynew 于 2010-12-31 13:53 编辑
t小宝 发表于 2010-12-31 12:10
我试了一下,原来两个空格的宽度相当于一个×的宽度, 因为空格和空格之间没有间距,而×之间是有间距的,所以. ...


这个只是两个循环放在一个循环中处理,不是问题的关键。
我是想搞明白Format或者Space函数对这个问题该如何处理?或者它们为什么不能处理?
请t版再帮忙考虑一下。

点击这里给我发消息

8#
发表于 2011-1-11 15:39:19 | 只看该作者
回复 todaynew 的帖子

Format只是显示空格,并没有真正产生空格,而列表框似乎不能应用各种显示格式,更不可能每行有不同的格式,就是说它每行数据都需要有真实的空格来填充

Space函数是可以产生空格的,可能你没有考虑到两个空格的宽度相当于一个×的宽度
9#
 楼主| 发表于 2011-1-12 07:23:38 | 只看该作者
t小宝 发表于 2011-1-11 15:39
回复 todaynew 的帖子

Format只是显示空格,并没有真正产生空格,而列表框似乎不能应用各种显示格式,更不 ...

用Space翻倍的增加空格也不行,会使得金字塔右移,而不能右对齐。这个事情确实有些怪异。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-21 23:27 , Processed in 0.102511 second(s), 33 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表