标题:[求助]斑主和各位高手请进!急!
只看楼主
headbegger
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2004-4-30
 问题点数:0 回复次数:5 
[求助]斑主和各位高手请进!急!

初来乍到,请教斑主和各位高手:

我想在程序运行时向组合框添加项目,思路是这样的:先打开(创建)一随机文件,通过For循环用Get语句读取全部记录,并把每条记录的part元素值(自定义数据类型)与组合框现有项目比较,如果与其中一个项目相同则不添加,否则把该记录的part元素值添加到组合框下拉列表中。可是我用 If Ucase(Trim(tempbrake.Part)) = Ucase(Trim(combrake.Part)) Then 比较字符串时,不论是否完全相同,比较的结果都是False,即then后的语句根本不执行,结果下拉项目就成了:张三\张三\李四\张三\李四\王五\张三\李四\王五\李四.....这是为什么?如果象这样不能实现向组合框添加项目,我该怎么做? 可是我曾看到过这样比较字符串的例子,不过不是自定义数据类型,是控件的TEXT属性值 ,我怎么也不明白是怎么回事,请高手不吝赐教!

下面是添加项目的通用子程序

Option Explicit Type brakeAtt '自定义数据类型 Name As String * 20 Part As String * 10 Position As String * 10 Entrance As String * 10 End Type

Public Sub Showcurrentpart() '通用过程将记录的part元素值添加到组合框下拉列表 Dim tempbrake As brakeAtt '存取记录的变量 Dim combrake As brakeAtt '将组合框现有项目赋给combrake的part元素,为的是与记录的part元素值类型、长度一致 Dim i As Long Dim flag As Boolean, j As Integer flag = False '赋初值,flag为False时可以添加项目 For i = 1 To lastbrake 'lastbrake为保存最后一条记录号的变量 Get #brakefilenum, i, tempbrake For j = 0 To Frmaddbrake.Cobpart.ListCount - 1 combrake.Part = Frmaddbrake.Cobpart.List(j) '将组合框现有项目赋给combrake的part元素,这个我曾试过用动态数组A(),比较测试时以为是因为字符串长度不一致就改了 If Ucase(Trim(tempbrake.Part)) = Ucase(Trim(combrake.Part)) Then '判断 flag = True Exit For End If Next j If flag = False Then Frmaddbrake.Cobpart.AddItem tempbrake.Part '添加项目 Frmmain.Cobpart.AddItem tempbrake.Part End If Next i End Sub

我的小程序还没做好,才刚开头,传上来,请大家帮帮我,我急了一个星期了,无法解决。

[attach]82[/attach]

2004-04-30 21:24
firechun
Rank: 1
等 级:新手上路
帖 子:135
专家分:0
注 册:2004-4-13
得分:0 

代码不规范,看得累,没看完。

为什么要把结构的元素声明为定长字符串?对定长字符串,Trim函数不起作用。

把结构的定义改成这样试试

Type brakeAtt '自定义数据类型 Name As String Part As String Position As String Entrance As String End Type


本人在编程中国发表的所有文章,除特别说明外均属原创,转载时请注明作者编程中国
2004-05-03 16:51
tvrc200379
Rank: 1
等 级:新手上路
帖 子:351
专家分:0
注 册:2004-3-30
得分:0 

我是灌水天堂的新版主,请新老用户来报道啊 (欢迎来灌水。。。) 哈哈哈。。。。 http://websx.home./bbs/list.asp?boardid=35
2004-05-04 09:00
headbegger
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2004-4-30
得分:0 
以下是引用firechun在2004-05-03 16:51:40的发言:

代码不规范,看得累,没看完。

为什么要把结构的元素声明为定长字符串?对定长字符串,Trim函数不起作用。

自定义字符为定长值是随机文件的要求呀,这有错吗?不解

2004-05-04 15:24
griefforyou
Rank: 6Rank: 6
等 级:贵宾
威 望:27
帖 子:3336
专家分:0
注 册:2004-4-15
得分:0 
你的小程序好像还挺复杂,没看出什么头绪。。。

天津网站建设 http://www./
2004-05-06 13:52
headbegger
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2004-4-30
得分:0 

通过多次调试,我发现对于数字及英文字符均添加运行正常,对于汉字我用下面语句调试,虽然字符完全一样,但字符长度不一样,这是为什么?

Debug.Print "第"; j; "条LIST"; UCase(Trim(Combrake.Part)); "长度为"; Len(UCase(Trim(Combrake.Part))) Debug.Print "LIST原长"; Len(Combrake.Part) Debug.Print "第"; i; "条记录"; UCase(Trim(Tempbrake.Part)); "长度为"; Len(UCase(Trim(Tempbrake.Part))) Debug.Print "记录原长"; Len(Tempbrake.Part)

Debug.Print "flag="; flag

flag=False 第 0 条LIST总干渠长度为 3 LIST原长 10 第 1 条记录总干渠 长度为 10 记录原长 10 flag=False 第 0 条LIST总干渠长度为 3 LIST原长 10 第 2 条记录太怀干渠 长度为 10 记录原长 10 第 1 条LIST总干渠长度为 3 LIST原长 10 第 2 条记录太怀干渠 长度为 10 记录原长 10 flag=False 第 0 条LIST总干渠长度为 3 LIST原长 10 第 1 条记录总干渠 长度为 10 记录原长 10 第 1 条LIST总干渠长度为 3 LIST原长 10 第 1 条记录总干渠 长度为 10 记录原长 10 第 2 条LIST太怀干渠长度为 4 LIST原长 10 第 1 条记录总干渠 长度为 10 记录原长 10 flag=False 第 0 条LIST总干渠长度为 3 LIST原长 10 第 2 条记录太怀干渠 长度为 10 flag=False 第 0 条LIST总干渠长度为 3 LIST原长 10 第 1 条记录总干渠 长度为 10 记录原长 10 flag=False 第 0 条LIST总干渠长度为 3 LIST原长 10 第 2 条记录太怀干渠 长度为 10 记录原长 10 第 1 条LIST总干渠长度为 3 LIST原长 10 第 2 条记录太怀干渠 长度为 10 记录原长 10 flag=False

记录原长 10 第 1 条LIST总干渠长度为 3 LIST原长 10 第 2 条记录太怀干渠 长度为 10 记录原长 10 第 2 条LIST太怀干渠长度为 4 LIST原长 10 第 2 条记录太怀干渠 长度为 10 记录原长 10 第 3 条LIST总干渠长度为 3 LIST原长 10 第 2 条记录太怀干渠 长度为 10 记录原长 10 flag=False 第 0 条LIST总干渠长度为 3 LIST原长 10 第 3 条记录总干渠 长度为 10 记录原长 10 第 1 条LIST总干渠长度为 3 LIST原长 10 第 3 条记录总干渠 长度为 10 记录原长 10 第 2 条LIST太怀干渠长度为 4 LIST原长 10 第 3 条记录总干渠 长度为 10 记录原长 10 第 3 条LIST总干渠长度为 3 LIST原长 10 第 3 条记录总干渠 长度为 10 记录原长 10 第 4 条LIST太怀干渠长度为 4 LIST原长 10 第 3 条记录总干渠 长度为 10 记录原长 10 flag=False

2004-05-07 11:15



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-985-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.380634 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved