高分求问,VB工程和编译EXE不同?自认高手请进!

各位大虾好,我有以下问题:
我做了一个通讯程序,关于数据同步的,程序直接运行程序时数据可以正常的同步到手持机设备,并且可以正常显示,但是将工程编译成EXE文件后,同步后汉字不能显示,我比较了一下同步后的备份文件,工程和EXE同步后的文件是不同的,后者就跟本没有汉字信息,也就说同步了部分数据。
以上的操作均在同一台计算机上进行的,配置如下:
Win2000 professional,cpu 奔四 2.4GB ,内存256 DDR 和其他专业软件,各位大哥给分析一下到底是哪出的问题?

回答: 高分求问,VB工程和编译EXE不同?自认高手请进!

  1. 自己解决:
    汉字转换ASCII问题

    '***************************************************************************
    '
    '   函数名称:subStrToVar
    '
    '   函数描述:将字符串转换为ASCII存放在二进制数组中
    '
    '   参数:strFildList 每条记录信息,字段间以"*"间隔
    '         vData带回参数,存放转换后的数据
    '
    '****************************************************************************

    Public Sub subStrTOVar(strFildList As String, vData As Variant)
        Dim m As Integer
        Dim i As Integer
        Dim j As Integer
        Dim n As Integer
        Dim vLData() As Byte
        Dim intLength As Integer
        Dim intDataLen As Integer
        Dim strChr As String
        Dim HexChr As String
        
        '默认状态下字符串为汉字
        j = 0
        intLength = Len(strFildList)
            
        ReDim vLData(0 To 2 * intLength + 1)
        
        For i = 1 To intLength
            strChr = Mid(strFildList, i, 1)
            If strChr = "*" Then
                '字段的间隔
                vLData(j) = 0
                j = j + 1
            Else
                '处理同一个字段值
                If Asc(strChr) < 0 Then
                '汉字字符
                    vLData(j) = CInt("&H" + Mid(Hex(Asc(strChr)), 1, 2))
                    j = j + 1
                    vLData(j) = CInt("&H" + Mid(Hex(Asc(strChr)), 3, 2))
                    j = j + 1
                Else
                '127内的字符
                    vLData(j) = Asc(strChr)
                    j = j + 1
                    
                End If
            End If

        Next i
        
        ReDim vData(0 To j + 5)
        
        vData(0) = 0
        vData(1) = 0
        vData(2) = 0
        vData(3) = 0
        
        For i = 4 To j + 4
        
            vData(i) = vLData(i - 4)

        Next i
        
    End Sub


    问题:问什么CDK4.02中基于Com的管道编程中的 
    Public pUtil As New PDUtility

    putil.BSTRToByteArray RecordID, 0, strFiled 
    这个函数在编译后exe中不能正常执行?

高分求救:关于db2的函数只十问题,高手请进!!!急急急

  1. Q
    在db2的函数生成过程中有三个选项:
    1,外部スカラー(外部scale)
    2,外部テーブル(外部table)
    3,ソース(source)
    请问:
    三种类型生成的函数在函数的DDL文中有什么区别?
    我指的是DDL文的形式上(文字上)。
    如果那位大虾能够解决该问题,分不是问题!!
    谢谢!!
  2. A
    external scalar:

    create function FUNC ( parm type, ... )
    returns type
    external name 'dll!func'
    language {c|java}
    parameter style {db2general|java|sql} ;

    external table:

    create function FUNC ( parm type, ... )
    returns table ( col type, ... )
    external name 'dll!func'
    language {c|java}
    parameter style {db2general|sql} ;


    source udf:

    create function FUNC ( parm type, ... )
    returns type
    source FUNC2 ( parm, ... ) ;

急,求问VB调用VC的DLL传递字符串的问题?

  1. Q
    我用VC编了个DLL。要用VB调用,其中参数是传递字符串,大家看看为什么总是提示找不到dll啊
    VC代码:
    #include "stdafx.h"
    #include "CreatePGP.h"

    #include "TxtFile.h"

    DLLIMPEXP_PGP BSTR __stdcall Createfile(LPCTSTR strFileName, LPCTSTR strContent)
    {
    CTxtFile f(strFileName);
    f.OpenFileForWrite();
    int nLen = strlen(strContent);
    CString strLine;
    for(int i = 0; i < nLen; i++)
    {
    strLine.AppendFormat(_T("0x%02X,"), (UINT8)strContent[i]);
    if(strLine.GetLength() > 39 || i == nLen-1)
    {
    f.WriteString(strLine);
    f.WriteString(_T("\n"));

    strLine = _T("");
    }
    }
    f.CloseFile();

    CString str;
    str.Format(_T("VB input = %s"), strContent);
    return SysAllocString((BSTR)(LPCTSTR)str);
    }


    Private Declare Function CreateFile Lib "d:\VB-VC\PGP.dll" (ByVal p As String, ByVal p As String) As String

    Dim s As String

        s = "d:\VB-VC\aa.txt"
        Dim k As String
        Dim result As String
        result = CreateIni(s, k)
        Debug.Print result

    提示总是找不到"d:\VB-VC\PGP.dll" 。DLL文件在目录下,这个是什么原因,大家帮忙看看,谢谢啊
  2. A
    编译之前DLL需要放到System32目录下;
    要放在VB工程目录中也可以,但这样的话在调用前需要设置当前路径。

    编译后放在EXE目录下就可以了。

高分求问sql语句

  1. Q
    干了N年旁门,今日重新搞数据库,求问大侠!
    高分求问sql语句

    人员的数据库
    高分求问sql语句

    文章的数据库
    文章的数据库中,有按部门和按人员的文章数量是不一样的,这里我要按照部门的文章数量显示

    现在我想把人员的文章数量和部门的文章数量显示出来,没有文章的也要显示为0

    select admin.yourname,iif(IsNull(count(admin.yourname)),0,count(admin.yourname)) AS count1 

    from(SELECT admin.username AS admin_username, admin.yourname, admin.department, 

    daoyou.username AS daoyou_username
    FROM admin left outer JOIN daoyou ON admin.username = daoyou.username)  group by admin.yourname 

    order by count(admin.yourname) DESC

    这个是人员的,但是显示不了数量为0!
    整个显示都有问题,
  2. A
    用户那边是显示yourname:


    SELECT a.yourname,sum(iif(b.id is null,0,1))
      
     FROM admin a left outer JOIN daoyou b ON a.username = b.username
     group by a.yourname

高分求问,使用FFT算法计算一组正弦数据的周期值,急~~~

  1. Q
    现在又一组摆动数据,需要使用FFT算法,主要目的是计算出小球摆动的周期值,将这组数据输入FFT计算后,一直不太懂FFT输出的是什么,怎么利用这个来求周期值,忘高手不吝赐教啊!! 
  2. A
    把计算出的各个频率的绝对值,算出来,最大的频率的倒数就是周期,绝对值就是实部和虚部平方和再开平方。

高分求教一VB和MAPINFO的问题。

  1. Q
    已知一个GPS经纬度数据,如何用VB编写一个程序,能够根据经纬度数据读取出与这个经纬度最接近的地图道路图层名呢?
    能有源程序更好。分数不够可以再加的!急。
  2. A
    其实用set findresult=map.layers.find.searchex(X,Y)好像更好,在findresult里的都是于这个坐标最接近的对象,这是一个找州和城市的例子,应该很有用
    Public Sub SearchEx(txtCity As String, txtState As String)
    Dim lyrCity As Layer
    Dim dsCity As Dataset
    Dim dsState As Dataset
    Dim objFindResult As FindResult
    Dim intNumCols As Integer
    Dim intNumRows As Integer
    Dim counter As Integer
    Dim firstcounter As Integer

    ' This file ships as sample data with MapX.
    Set lyrCity = Map1.Layers("US Minor Cities")  
    Set lyrState = Map1.Layers("USA")
    '    Add the datasets
    Set dsCity = Map1.Datasets.Add(miDataSetLayer, lyrCity)

    Set dsState = Map1.Datasets.Add(miDataSetLayer, lyrState)
    '    Set the city dataset to be the find dataset
    Set lyrCity.Find.FindDataset = dsCity
    Set lyrCity.Find.FindField = dsCity.Fields("city")
    '    Set the state dataset to be the refining dataset
    Set lyrCity.Find.RefineLayer = lyrState
    Set lyrCity.Find.RefineDataset = dsState
    Set lyrCity.Find.RefineField = dsState.Fields("state")

    Set objFindResult = lyrCity.Find.SearchEx(txtCity, txtState)

    If objFindResult.MultipleMatches = True Then

     For Each objMatchCandidate In objFindResult.Matches
      firstcounter = firstcounter + 1
      List1.AddItem objMatchCandidate.Name

      intNumRows = objFindResult.Matches.Count
      intNumCols = dsCity.Fields.Count
      CityGrid.Cols = intNumCols
      CityGrid.Rows = intNumRows
      For counter = 1 To intNumCols
       CityGrid.Row = firstcounter - 1
       CityGrid.Col = counter - 1
       CityGrid.Text = dsCity.Value(objMatchCandidate.FeatureID,
       counter)
      Next
     Next
    Else
     List1.AddItem objFindResult.MatchedFeature.Name

     intNumCols = dsCity.Fields.Count
     CityGrid.Cols = intNumCols

     For counter = 1 To intNumCols
      CityGrid.Col = counter - 1
      CityGrid.Text = dsCity.Value(
      objFindResult.MatchedFeature.FeatureID, counter)
     Next
    End If

    End Sub

高分求问关于WindowsCE和PocketPC的问题!

  1. Q
    我想在今年五一节时购买掌上电脑。现在对WindowsCE和PocketPC还没有什么了解!请问哪位大虾熟悉,给我介绍一下。WindowsCE和PocketPC哪个更有生命力,就掌上电脑来说,哪个更稳定,网上公布的免费软件、驱动更多,对外部的配件更兼容?
      谢谢!!!
  2. A
    呵呵,WindowsCE和PocketPC确实没有可比性。现在基本都是PocketPC了。不过还是推荐Palm。软件很多。使用也很方便。稳定性比PocketPC好多了

求问这是什么编译错误= =

  1. Q
    求问这是什么编译错误= =
  2. A
    可以把这个源代码另存一次,然后再试

◎~◎ (高手请进)谁用VB编写过动态链接库, 题意:用VB写一个动态链接库,要实现的功能如下: ◎~◎

  1. Q
    用VB写一个动态链接库,要实现的功能如下:

       设有两个一维数组. a[i]和b[i]. 数组里面的值在0~256之间  (数组里面的值不能为

    256)两数组里面的值是任意的已知数.两数组里面的值不能相同.
     
      0<i<256     '我们假设i为10吧   ...可以为任意。

    假设。我们在坐标上,设点,a[i]为点的Y轴坐标,b[i]为点的X轴坐标。(X,Y轴最大为255);

    我们就可以在这个坐标上等到i个点。每两个相邻的点相连形成一道曲线。注意:是曲线;

    把这道曲线上的所有点的坐标(取整数)乘以4,(X,Y轴最大为1023)形成一个大曲线。

    把这个曲线上点的Y坐标(取整数)放到一个数组里面,对应的数是这个点的X坐标
              
    例如:  array(10) = 30   ' 有个点的Y坐标为10,X坐标为30
           array(20) = 40   ' 有个点的Y坐标为20,X坐标为40

    动态链接库的目的:知道一个整数(Y坐标)的值。查询array数组,可得到(X坐标)对应的值。
  2. A
    '算法出来了?????????
    '我昨天想了一晚上写出来了??????
    '我今天编Activex Dll工程?????
    '大家也一起试。,。。。
    ''相互学习学习。..,.......

    Public a(9) As Integer
    Public b(9) As Integer
    Dim var(11)
    Dim i As Integer
    Dim k As Integer
    Dim Q As Integer
    Dim MyArray()
    Dim VarArray() As Integer


    k = 0
    ' var=b/a
    ' 当a=1,2,3,4,5,
    'b=var*a
    Public Function geta() As Integer
    var(0) = b(0) / a(0)
    ReDim Preserve MyArray(a(0) - 1)
    For i = 0 To a(0) - 1
        MyArray(k) = var(0) * i

    '  Text1.Text = Text1.Text & ",  " & MyArray(k)
    ' textbox 是为了看第一阶段里面数组
        k = k + 1
    Next i


     ReDim Preserve MyArray(a(9))

    For Q = 1 To 9
      var(Q) = Abs(b(Q) - b(Q - 1)) / Abs(a(Q) - a(Q - 1))
      For i = a(Q - 1) To a(Q) - 1
      
               MyArray(k) = var(Q) * (i - a(Q - 1)) + b(Q - 1)
          '      Text2.Text = Text2.Text & ", " & MyArray(k)
          '       text2box是为了看第二阶段的数组
             k = k + 1
       Next i
    Next Q


    ReDim Preserve MyArray(256)

    var(10) = 256 - b(9) / 256 - a(9)
    For i = a(9) To 256
        
         MyArray(k) = var(10) * (i - a(9)) + b(9)
        '     Text3.Text = Text3.Text & ", " & MyArray(k)
        '     text3box是为了看第三阶段的数组
           k = k + 1
             
        Next i

    '根据a与b的比例,同a=0  to 256 求相应b的256个数
    '***************************************************************

    'MyArray(k)这个数组里面有  256个数。。。

    '现传进一个值X

    '让X与这个MyArray(k)数组里面的数逐个比较。。与相等。。则,求出这个k的值。。传出。。。。。
    '算法如下:
           For i = 0 To 256
               If MyArray(i) = X Then
                   '传出这个 i ..
                   geta = i
                  Exit Function
                 End If
             Next i
           MsgBox "sorry ,您所传的数,不在数组中。", vbCritical, "sorry"
    End Function


    '大家把这个复制到VB中,就可以了。但是不要忘记了。在公共类中申明。

    Public MyArray()
    Public VarArray() As Integer


    Public Sub inter()
    '***************************************************************
    '根据a与b的比例,同a=0  to 256 求相应b的256个数
    a(0) = 10
    a(1) = 20
    a(2) = 50
    a(3) = 80
    a(4) = 100
    a(5) = 120
    a(6) = 150
    a(7) = 160
    a(8) = 200
    a(9) = 250

    b(0) = 30
    b(1) = 40
    b(2) = 50
    b(3) = 60
    b(4) = 80
    b(5) = 100
    b(6) = 120
    b(7) = 150
    b(8) = 180
    b(9) = 200
    End Sub

    是不是这个意思

VB的高手和COM+的高手请进

  1. Q
    我现在正在用VB为Rational Rose开发一个插件,在实现右键菜单的时候碰到了严重问题。定义函数OnActivate时总是不能编译通过,因为我只找到了VC的相关帮助,说添加右键菜单需要定义函数void OnActivate(LPDISPATCH pRoseApp),但是在VB中我不知道怎么办。我试着用Sub OnActivate(pRoseApp As LPDISPATCH),结果没有LPDISPATCH类型定义。还请指教。
  2. A
    lpDispatch从变量名称上看应该是一个IDispatch类型的指针,你可以直接声明为byval pRoseApp As Object试试(注意是byval,按值传递引用)

    更底层一点的方案是直接把pRoseApp声明为long型,然后copymemory把参数的值复制给一个方法内部声明的对象引用obj1,并把赋值后的引用obj1再次赋值给另一个引用obj2(这样做是为了避免弱引用导致不可预期的非法指针错误),这样你就可以使用obj2了,它就是传入的指针指向的IDispatch对象

    另外我有一点疑问,形如Sub Method(Parm1 as variant)这样的vb过程声明,将会被映射为IDL中的HRESULT Method([ref]VARIANT Parm1)。这个声明与C++的void Method(VARIANT Parm1)等价吗?