char far * 是什么,是c里的么?

解决方案 »

  1.   

    char far * 当然是DELPHI里的!
      

  2.   

    s:^char见过
    但char far *我也没见过!不知有何区别!如何使用?
    恭听教诲!
      

  3.   

    pchar 是不存在结束符的字符串
    char  是字节
    一维数组是string
      

  4.   

    肯定没人能说清楚啦~~~
    Pascal里根本就没有char far * 
    far在Delphi里根本就是16bit的遗留物
    pchar应该算TP/BP/OP中的一个特殊处理的类型。
      

  5.   

    回复人: NotDo(无为) (2002-2-4 18:44:10)  得0分 
    pchar 是不存在结束符的字符串
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~不对吧,正好相反,它是指向null结尾字符串的指针
    char  是字节
    一维数组是string 
      

  6.   

    去c/c++自然有人愿意回答。这个不是object pascal/pascal的东西喔
      

  7.   

    char far * 是c语言里的 远指针哦!是早期dos下小内存时的。大于64k内存地址时的远程指针。32位操作系统已经不用了!
    pchar是指向null结束的char字符串的指针。类似于c的 char * 或lpstr
    一维数组是字符串。但是第一个x[0]中是字符串的长度。并且最后以0作为结束标志!
      

  8.   

    同意chw74(晴阳)
    如果Delphi中有char far *可能意思差不多,但是我认为没有,Delphi中指针不是使用^符号吗
      

  9.   

    字符串,实际上就是一个1维字符数组,只不过Pascal对字符串类型作了特殊的准许,你可以把它看作一个整体。字符串类型本质上等同于下列类型:
    type  StringType:array[0..255] of char;
    但是,虽然你可以把一个字符串看待,但它仍然保持其数组的特性。例如在定义一个字符串类型变量时,你可以说明字符串的大小,就像你定义字符数组的大小一样。下面是几个字符串类型定义:
    type  MyString:string[15];
    BigString:string;
    LittleString:string[1];
    上面语句定义MyString类型包含15个字符,LittleString包含1个字符,BigString没有说明大小,就取字符串包含字符的最大个数255。然后你可以定义这些类型的变量,就像使用其它类型一样:
      Var    MyName:MyString; 
      Letter,Digit:LittleString;
    你可以对字符串变量进行赋值:
       MyName:='Frank.P.Land';
    因为MyName长度为15,因此只能容纳15个字符。如果执行下面语句:  
     MyName:='Frank.P.Borland'
    则MyName变量中只存有FranK.P.Borlan
    为了取得字符串中的一个字符,可以按如下方法进行:
    AChar:=MyName[2];
    但是,如果索引大于字符串变量的长度,则结果不可知。
    例如:   AChar:=MyName[16];
    则AChar将被设置为某个不确定的字符,换句话说,就是废字符。在字符串类型的数组中,字符串的第一个位置[0]包含有字符串的长度,因此数组的实际长度比该字符串长度大1个字节。你可以使用Length函数或下面的代码来得到一个字符串的长度:
    L:=Ord(String[0]);
      

  10.   

    • AnsiString 这是P a s c a l缺省的字符串类型,它由AnsiChar 字符组成,其长度没有限制,同时与
    n u l l结束的字符串相兼容。
    • ShortString 保留该类型是为了向后兼容Delphi 1.0,它的长度限制在2 5 5个字符内。
    • WideString 功能上类似于A n s i S t r i n g,但它是由Wi d e C h a r字符组成的。
    • PChar 指向n u l l结束的C h a r字符串的指针,类似于C的char * 或l p s t r类型。
    • PAnsiChar 指向n u l l结束的A n s i C h a r字符串的指针。
    • PWideChar 指向n u l l结束的Wi d e C h a r字符串的指针。
    缺省情况下,如果用如下的代码来定义字符串,编译器认为是AnsiString 字符串:
    v a r
    S:string; //编译器认为S的类型是A n s i S t r i n g
    当然,能用编译开关$ H来将s t r i n g类型定义为S h o r t S t r i n g,当$ H编译开关的值为负时, s t r i n g变量
    是S h o r t S t r i n g类型;当$ H编译开关的值为正时(缺省情况),字符串变量是A n s i S t r i n g类型。下面的代码
    演示了这种情况:
    v a r
    { $ H - }
    S1:string; //S1是S h o r t S t r i n g类型
    { $ H + }
    S2:string; //S2是A n s i S t r i n g类型
    使用$ H规则的一个例外是,如果在定义时特地指定了长度(最大在2 5 5个字符内),那么总是
    S h o r t S t r i n g:
    v a r
    S: string[63]; //63个字符的S h o r t S t r i n g字符串
      

  11.   

    Pchar 是Api中的用法, 这个字符串有他自己的定义方法,就是第一个表示他有多长,没有结束抚,那么就是说他的长度改为255
    string一位数组应该是通用的 他就是windows的标准字符,有一个结束符,呵呵他的长度你说是多少呢
    所以你在使用api时你会看到Pchar 打Messagebox 看看,呵呵如果你用一个字符变量放在第2个位子那里你看看系统会报错,这就是原因了,所以你要用pchar 行的
    var 
     dd:string;
    messagebox(form1.handle,dd,'asf',mb_ok);  //报错
    messagebox(form1.handle,'asdf','asf',Mb_ok) //通过
    messagebox(form1.handle,pchar(dd),'asf',Mb_oK);//你说结果怎么样呢
    那么我们所以猜测delphi里变量类型名可以干什么拉巴,我也是自己猜得,所错啦不要笑我,告诉我,就是可以强制转化类型那个什么 char far * 我还不知道
      

  12.   

    我回答得还算清楚吧! char far * 可能是为了向下兼容,没用过。
    good luck
      

  13.   

    晴阳的答复在delphi5开发人员指南24页---ISBN7-111-08040-8