SQLCHAR 的类型 是 BYTE
SQLCHAR *  的类型 才是 PChar你去掉  var 试试SQLConnect: function(ConnectionHandle: SQLHDBC;
                        ServerName: SQLCHAR;
                        NameLength1: SQLSMALLINT;
                        UserName: SQLCHAR;
                        NameLength2: SQLSMALLINT;
                        Authentication: SQLCHAR;
                        NameLength3: SQLSMALLINT): SQLRETURN;

解决方案 »

  1.   

    type SQLCHAR PChar; 不用变
      

  2.   

    我是这样调用的
    var
      a, b, c: PChar;
      Rc: SQLRETURN;
    begin
      if OpenDialog1.Execute then
      begin
        A := PChar(OpenDialog1.FileName);
        B := '';
        C := '';
        Rc := SQLConnect(dbHandle, A, Length(A),
                         B, Length(B),
                         C, Length(C));
    结果执行时产生了非法访问错误???? 是我的参数不对吗?????
      

  3.   

    to gwbasic(笑笑) 
      我想var并不一定是主要的, 我也想把它翻译成Byte型, 关键是翻译成Byte型后参数应该如何输入.
      

  4.   

    Sorry, 翻译成PChar后函数返回结果为调用失败,我想问题应该出在对SQLCHAR的翻译上面。不知对是不对。
      

  5.   

    我不是说了 type SQLCHAR PChar; 不用变你加上 var 反成了指向  字符串指针的指针的
      

  6.   

    去掉var后返回结果没有发生改变. 为什么????????????????????
      

  7.   

    SQLCHAR *ServerName  应是  ServerName:PChar 
                          而不是 var ServerName:Pchar 
          
      

  8.   

    那你试试用采用一个变量A:string
    B:string
    C:stringA:= OpenDialog1.FileName
    B:=''
    C:=''
      

  9.   

    那你试试用采用一个变量A:string
    B:string
    C:stringA:= OpenDialog1.FileName
    B:=''
    C:=''
      

  10.   

    实际情况是这样的
      在这之前要执行一个函数,得到一个FirstHandle, 将第一个Handle作为一个输入参数执行第二个函数得到第二个SecondHandle, SqlConnect是第三个函数, 它的第一个参数就是前面的SecondHandle, 前两个函数均正常调用结束, 到这里除了问题, 我认为是翻译时出的问题,但不敢肯定, 因此拿上来向各位大侠们请教, 请不吝赐教吧..............
      

  11.   

    实际情况是这样的
      在这之前要执行一个函数,得到一个FirstHandle, 将第一个Handle作为一个输入参数执行第二个函数得到第二个SecondHandle, SqlConnect是第三个函数, 它的第一个参数就是前面的SecondHandle, 前两个函数均正常调用结束, 到这里除了问题, 我认为是翻译时出的问题,但不敢肯定, 因此拿上来向各位大侠们请教, 请不吝赐教吧.............. 
      

  12.   

    实际情况是这样的
      在这之前要执行一个函数,得到一个FirstHandle, 将第一个Handle作为一个输入参数执行第二个函数得到第二个SecondHandle, SqlConnect是第三个函数, 它的第一个参数就是前面的SecondHandle, 前两个函数均正常调用结束, 到这里除了问题, 我认为是翻译时出的问题,但不敢肯定, 因此拿上来向各位大侠们请教, 请不吝赐教吧.............. 
      

  13.   

    对不起,昨天我下网了.
     
    我看了一下MSDN中的帮助,这个函数的几个参数都是 输入的,没有输出
    只要你返回 SQL_SUCCESS 就应是正确的了,就可以用这个名柄继续下面的调用了.
    其中 SQLCHAR *ServerName 应翻译成 ServerName : Pchar
      

  14.   

    改用C++ Builder吧,和Delphi一样的方便
      

  15.   

    C++Builder我还没学呢,
    http://www.csdn.net/expert/topicview1.asp?id=238812
    这个帖子有详细介绍。
      

  16.   

    哎,delphi就这点不如c/c++了,得要自己做出头文件,到底不是标准啊。
    www.drbob42.com上有个工具专门辅助干这个的,你可以试试
      

  17.   

    好像留错帖子了
    应该是这个
    http://www.csdn.net/expert/topic/238/238312.shtm
      

  18.   

    如果SQL_CHAR 类似 string, 那你定义时应该这么写吧:
    type  SQL_CHAR = string; PSQL_CHAR = ^SQL_CHAR;
      

  19.   

    写函数时:
    s:SQL_CHAR;
    ps:PSQL_CHAR;s := 'abc';
    ps := @s;
    SQL_API SQLConnect( ConnectionHandle,@s,...)或
    SQL_API SQLConnect( ConnectionHandle,ps,...)有一年没用DELPHI了,如不对请谅解。
      

  20.   

    你看一看JEDI里面有没有现成的。