您的位置:程序门 -> vb ->



type类型和数组相加(请大家帮忙解答)


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


type类型和数组相加(请大家帮忙解答)[已结贴,结贴人:vbmake]
发表于:2007-07-21 00:32:39 楼主
private   type   me
                                    width       as   long
                                    height       as   long
                                    x       as   long
                                    y       as   long
    end   type

dim   dat()   as   byte
dim   add()   as   byte
dim   my   as   me

dat(1)=54
dat(2)=34
dat(3)=54
dat(4)=38
dat(5)=63
dat(6)=45
dat(7)=63
dat(8)=83
        .
        .
        .
dat(...)=...

上面是我的程序,下面是错误的语句。希望有人能帮我解决这个问题。

add=dat()   &   my     '提示错误


发表于:2007-07-21 00:38:481楼 得分:0

错误多多啊  
动态数组又没初始化
数据和结构想连接我晕晕~~
我看楼主还是先把基础打好吧。
发表于:2007-07-21 00:44:232楼 得分:0
add=dat()   &   my    
楼主写这句话本意是什么?希望实现什么样子的效果呢?
发表于:2007-07-21 01:00:493楼 得分:0
~~
数组和结构体   作为字符串连接  

无语
发表于:2007-07-21 11:35:084楼 得分:0
其实我的意思很简单,就是   type   me   转换成   数组。

先在这里感谢chenhui530(陈辉),他的意见很好。
发表于:2007-07-21 11:49:225楼 得分:0
---type   me   转换成   数组

结构体数组?

你还是描述下想要实现什么吧.

发表于:2007-07-21 13:05:146楼 得分:0
option   explicit
private   type   mme
                mwidth       as   long
                mheight       as   long
                x       as   long
                y       as   long
end   type
dim   dat(1   to   8)   as   byte,   tmpscr()   as   byte,   my   as   mme

private   sub   form_load()
with   my
            .mwidth   =   1000
            .mheight   =   2000
            .x   =   800
            .y   =   60
end   with
dat(1)   =   54
dat(2)   =   34
dat(3)   =   54
dat(4)   =   38
dat(5)   =   63
dat(6)   =   45
dat(7)   =   63
dat(8)   =   83

        open   app.path   &   "\a.hh "   for   binary   as   #1
              put   #1,   1,   my
              put   #1,   ,   dat
        close   #1

        open   app.path   &   "\a.hh "   for   binary   as   #2
                redim   tmpscr(1   to   lof(2))   as   byte
              get   #2,   ,   tmpscr
        close   #2
end   sub

我把所有代码写来了,可以先运行一下,应该能看明白了吧,我要的结果就是tmpscr这个数组。看谁有更好什么方法来实现!
发表于:2007-07-21 13:27:387楼 得分:0
倒不如把byte数组也定义在结构体中好了
发表于:2007-07-21 13:30:438楼 得分:0
'给你参考:
option   base   1
private   type   t1
    mwidth   as   long
    mheight   as   long
    x   as   long
    y   as   long
    dat()   as   byte
end   type
private   sub   form_load()
    dim   a   as   t1,tmpscr()   as   byte
    redim   a.dat(8)
   
end   sub
发表于:2007-07-21 13:30:579楼 得分:0
如果可以那样就不用找人帮忙了,dat()是个未知大小的数组,上面的dat()是为了让你看明白我的意思,才设定8个的。
发表于:2007-07-21 15:48:0610楼 得分:4
变长数组   本来就可以随时改变大小
private   sub   form_load()
    dim   a   as   t1,tmpscr()   as   byte
    redim   a.dat(8)
    a.dat(8)=111
    redim   preserve   a.dat(10)
    a.dat(10)=222
    debug.print   a.dat(8),a.dat(10)
end   sub
发表于:2007-07-21 20:01:5011楼 得分:0
楼上的朋友,很感谢你回答我的问题,你回答的答案还没有符合我的要求。我是想不通过open读取   而直接使   tmpscr等于   使用open   的效果!
也就是说。

原来的程序

……
        open   app.path   &   "\a.hh "   for   binary   as   #1
              put   #1,   1,   my
              put   #1,   ,   dat
        close   #1

        open   app.path   &   "\a.hh "   for   binary   as   #2
                redim   tmpscr(1   to   lof(2))   as   byte
              get   #2,   ,   tmpscr
        close   #2
'-------------------------------------------


想要的程序
tmpscr()=某合并函数或方法(my,dat)
发表于:2007-07-21 23:32:3312楼 得分:0
你就不能把tmpscr   也定义成   和   my   一样的结构体吗?
发表于:2007-07-22 22:44:2713楼 得分:0
不能,我就是不能用这种方法。能用就不用那么麻烦了
发表于:2007-07-22 22:46:0114楼 得分:0
我主要是想让   my变成数组,不是要把数组变成结构体,明白没
发表于:2007-07-22 23:32:4515楼 得分:0
那用api函数吧   copymemory
发表于:2007-07-23 00:25:0616楼 得分:16
private   declare   sub   copymemory   lib   "kernel32 "   alias   "rtlmovememory "   (destination   as   any,   source   as   any,   byval   length   as   long)
private   type   t1
    c1   as   long
    c2   as   long
    str1()   as   byte
end   type

private   sub   form_click()
    dim   a   as   t1,   b(100)   as   byte
    redim   a.str1(6)
    a.c1   =   11
    a.str1(0)   =   100
    copymemory   b(0),   a,   8
    copymemory   b(9),   a.str1(0),   6
    debug.print   b(0);   b(1);   b(2);   b(3);   b(4);   b(5);   b(6);   b(7);   b(8);   b(9);   b(10);   b(11);   b(12);   b(13);   b(14)
end   sub
输出结果是
  11     0     0     0     0     0     0     0     0     100     0     0     0     0     0  
注意变量对齐就行了
发表于:2007-07-23 04:18:2417楼 得分:0
应该是楼上的答案吧,结贴
发表于:2007-07-23 11:53:4818楼 得分:0
最终还是直接操作内存呀,呵呵
发表于:2007-07-23 13:48:2719楼 得分:0
myjian(嗷嗷叫的老马--你睡着时,就是半夜...................)
知道,又没见你说!
发表于:2007-07-24 18:34:2620楼 得分:0
mark!


快速检索

最新资讯
热门点击