ph53543

  • 0个提问
  • 94个回答
  • 0个收藏
  • 0个赞成
简介: 该用户没有自我介绍
  • asp net为什么只能取得代理服务的名字 

    0
    0

    asp.net 穿过代理服务器取远程用户真实IP地址

     




     

      if(Request.ServerVariables["HTTP_VIA"]!=null){

      string  user_IP=Request.ServerVariables["HTTP_X_FORWARDED_FOR"].ToString();

      }else{

      string  user_IP=Request.ServerVariables["REMOTE_ADDR"].ToString();

      }

    2回答
  • web mail和net mail有什么区别啊 

    0
    0

     

    1.1和2.0版本中命名空间的不同

    2.0对相关功能做了优化和重写,如果新开发程序应该使用System.Net.Mail;
    保留System.Web.Mail是保存对以前程序的兼容,建议不要再使用。

    2008-12-12 互联网 匿名
    1回答
  • 如何遍历完全二叉树到第k层第i个结点 

    0
    0
    下面是关于二叉树的遍历、查找、删除、更新数据的代码(递归算法):
      [code]
      #include <iostream>
      using namespace std;
      typedef int T;
      class bst{
      struct Node{
      T data;
      Node* L;
      Node* R;
      Node(const T& d, Node* lp=NULL, Node* rp=NULL):data(d),L(lp),R(rp){}
      };
      Node* root;
      int num;
      public:
      bst():root(NULL),num(0){}
      void clear(Node* t){
      if(t==NULL) return;
      clear(t->L);
      clear(t->R);
      delete t;
      }
      ~bst(){clear(root);}
      void clear(){
      clear(root);
      num = 0;
      root = NULL;
      }
      bool empty(){return root==NULL;}
      int size(){return num;}
      T getRoot(){
      if(empty()) throw "empty tree";
      return root->data;
      }
      void travel(Node* tree){
      if(tree==NULL) return;
      travel(tree->L);
      cout << tree->data << ' ';
      travel(tree->R);
      }
      void travel(){
      travel(root);
      cout << endl;
      }
      int height(Node* tree){
      if(tree==NULL) return 0;
      int lh = height(tree->L);
      int rh = height(tree->R);
      return 1+(lh>rh?lh:rh);
      }
      int height(){
      return height(root);
      }
      void insert(Node*& tree, const T& d){
      if(tree==NULL)
      tree = new Node(d);
      else if(d[tr]data)
      insert(tree->L, d);
      else
      insert(tree->R, d);
      }
      void insert(const T& d){
      insert(root, d);
      num++;
      }
      Node*& find(Node*& tree, const T& d){
      if(tree==NULL) return tree;
      if(tree->data==d) return tree;
      if(d[tr]data)
      return find(tree->L, d);
      else
      return find(tree->R, d);
      }
      bool find(const T& d){
      return find(root, d)!=NULL;
      }
      bool erase(const T& d){
      Node*& pt = find(root, d);
      if(pt==NULL) return false;
      combine(pt->L, pt->R);
      Node* p = pt;
      pt = pt->R;
      delete p;
      num--;
      return true;
      }
      void combine(Node* lc, Node*& rc){
      if(lc==NULL) return;
      if(rc==NULL) rc = lc;
      else combine(lc, rc->L);
      }
      bool update(const T& od, const T& nd){
      Node* p = find(root, od);
      if(p==NULL) return false;
      erase(od);
      insert(nd);
      return true;
      }
      };
      int main()
      {
      bst b;
      cout << "input some integers:";
      for(;;){
      int n;
      cin >> n;
      b.insert(n);
      if(cin.peek()=='\n') break;
      }
      b.travel();
      for(;;){
      cout << "input data pair:";
      int od, nd;
      cin >> od >> nd;
      if(od==-1&&nd==-1) break;
      b.update(od, nd);
      b.travel();
      }
      }
    2008-12-12 编程 匿名
    2回答
  • c++编程解决趣味问题 

    0
    0

    C++经典实用趣味编程百例精解(98)-八皇后问题

    在一个8×8国际象棋盘上,有8个皇后,每个皇后占一格;要求皇后间不会出现相互“攻击”的现象,即不能有两个皇后处在同一行、同一列或同一对角线上。问共有多少种不同的方法。

    *问题分析与算法设计
    这是一个古老的具有代表性的问题,用计算机求解时的算法也很多,这里仅介绍一种。
    采用一维数组来进行处理。数组的下标i表示棋盘上的第i列,a[i]的值表示皇后在第i列所放的位置。如:a[1]=5,表示在棋盘的第一例的第五行放一个皇后。
    程序中首先假定a[1]=1,表示第一个皇后放在棋盘的第一列的第一行的位置上,然后试探第二列中皇后可能的位置,找到合适的位置后,再处理后续的各列,这样通过各列的反复试探,可以最终找出皇后的全部摆放方法。
    程序采用回溯法,算法的细节参看程序。

    *程序说明与注释
    #include<stdio.h>
    #define NUM 8 /*定义数组的大小*/
    int a[NUM+1];
    int main()
    {
    int i,k,flag,not_finish=1,count=0;
    i=1; /*正在处理的元素下标,表示前i-1个元素已符合要求,正在处理第i个元素*/
    a[1]=1; /*为数组的第一个元素赋初值*/
    printf("The possible configuration of 8 queens are:\n");
    while(not_finish) /*not_finish=1:处理尚未结束*/
    {
    while(not_finish&&i<=NUM) /*处理尚未结束且还没处理到第NUM个元素*/
    {
    for(flag=1,k=1;flag&&k<i;k++) /*判断是否有多个皇后在同一行*/
    if(a[k]==a[i])flag=0;
    for(k=1;flag&&k<i;k++) /*判断是否有多个皇后在同一对角线*/
    if((a[i]==a[k]-(k-i))||(a[i]==a[k]+(k-i))) flag=0;
    if(!flag) /*若存在矛盾不满足要求,需要重新设置第i个元素*/
    {
    if(a[i]==a[i-1]) /*若a[i]的值已经经过一圈追上a[i-1]的值*/
    {
    i--; /*退回一步,重新试探处理前一个元素*/
    if(i>1&&a[i]==NUM)
    a[i]=1; /*当a[i]为NUM时将a[i]的值置1*/
    else if(i==1&&a[i]==NUM)
    not_finish=0; /*当第一位的值达到NUM时结束*/
    else a[i]++; /*将a[i]的值取下一个值*/
    }
    else if(a[i]==NUM) a[i]=1;
    else a[i]++; /*将a[i]的值取下一个值*/
    }
    else if(++i<=NUM)
    if(a[i-1]==NUM) a[i]=1; /*若前一个元素的值为NUM则a[i]=1*/
    else a[i]=a[i-1]+1; /*否则元素的值为前一个元素的下一个值*/
    }
    if(not_finish)
    {
    ++count;
    printf((count-1)%3?" [%2d]: ":" \n[%2d]: ",count);
    for(k=1;k<=NUM;k++) /*输出结果*/
    printf(" %d",a[k]);
    if(a[NUM-1]<NUM) a[NUM-1]++; /*修改倒数第二位的值*/
    else a[NUM-1]=1;
    i=NUM-1; /*开始寻找下一个足条件的解*/
    }
    }
    }

    *思考题
    一个8×8的国际象棋盘,共有64个格子。最多将五个皇后放入棋盘中,就可以控制整个的盘面,不论对方的棋子放哪一格中都会被吃掉。请编程找出这样的五个“皇后”可能的布局

    2008-12-12 互联网 匿名
    2回答
  • delphi如何检测当前程序所占内存的字节数 

    0
    0
    delphi获取内存信息


    实例说明
    有些delphi程序运行时需要一定大小的内存配置,如果用户计算机的内存低于这个值,程序启动前轻则弹出警告对话框,重则中止当前程序的运行,以避免不必要的系统崩溃。本例比较简单,下面就介绍这方面的技巧。


    编程思路
        delphi可通过调用API函数GlobalMemoryStatus来达到目的,该delphi函数可以直接获取有关内存状考的信息。


    编程步骤
    本例主要源代码如下:
    //处理点击“获得内存信息”后的事件
    procedure TForm1.Button1Click(Sender: TObject);
    var
      Memlnfo:MemoryStaus;
    begin
    //用sizeof(MemoryStatus)填充dwLength成员
    Memlnfo.dwLength:=sizeof(MemoryStatus);
    //获取内存信息
    GlobalMemoryStatus(MemInfo);
    //内存使用百分比
    Edit1.Text:=IntToStr(Memlnfo.dwMemoryLoad)+'%';
    //总物理内存(字节)
    Edit2.Text:=IntToStr(MemInfo dwTotalPhys);
    //未使用物理内存(字节)
    Edit3.Text:=IntToStr(MemInfo.dwAvailPhys);
    //交换文件大小(字节)
    Edit4.Text:=IntToStr(Memlnfo.dwTotalPageFile);
    //未使用交换文件大小(字节)
    Edit5.Text:=IntToStr(MemInfo dwAvailPageFile);
    //虚拟内存空间大小(字节)
    Edit6.Text:=IntToStr(MemInfo.dwTotalVirtual);
    //未使用虚拟内存大小(字节)
    Edit7.Text:=IntToStr(Memlnfo.dwAvailVirtual);
    end;
    编程总结
    本例中内存大小都是以字节为单位的,实际应用中为了简单直观,一般应以兆字节为单位,你只需要以字节为单位的结果除以(1024×1024)即可。
    2008-12-11 Delphi 匿名
    1回答
  • matlab中如何显示出已知二元函数的图像?  

    0
    0
    举个例子吧

    x=0:0.01:2*pi;
    y=sin(x);
    plot(x,y)
    axis([0 2*pi -1.2 1.2])
    [minY,I]=min(y)
    hold on
    plot(x(I),minY,'*r')
    text(x(I),minY+0.1,num2str([x(I),minY]))
    2008-12-11 编程 百科
    1回答
  • 应用程序未初始化怎么解决 

    0
    0
    是什么程序啊 也不说一下怎么解决!!11
    2008-12-11 互联网 匿名
    1回答
  • oracle数据库测试版到期了怎么办 

    0
    0
    去迅雷上下一个啊
    2008-12-11 编程 匿名
    1回答
  • 谁帮我推荐一本关于matlab/simulink的书  

    0
    0
    现代控制系统分析与设计:应用MATLAB和Simulink
    1回答
  • delphi中如何在查询条件中使用字符串函数 

    0
    0
    Delphi字符串函数大全 

    abort 函数 引起放弃的意外处理 

    abs 函数 绝对值函数 

    addexitproc 函数 将一过程添加到运行时库的结束过程表中 

    addr 函数 返回指定对象的地址 

    adjustlinebreaks 函数 将给定字符串的行分隔符调整为cr/lf序列 

    align 属性 使控件位于窗口某部分 

    alignment 属性 控件标签的文字位置 

    allocmem 函数 在堆栈上分配给定大小的块 

    allowgrayed 属性 允许一个灰度选择 

    ansicomparestr 函数 比较字符串(区分大小写) 

    ansicomparetext 函数 比较字符串(不区分大小写) 

    ansilowercase 函数 将字符转换为小写 

    ansiuppercase 函数 将字符转换为大写 

    append 函数 以附加的方式打开已有的文件 

    arctan 函数 余切函数 

    assignfile 函数 给文件变量赋一外部文件名 

    assigned 函数 测试函数或过程变量是否为空 

    autosize 属性 自动控制标签的大小 

    backgrounddi2001.jpg 属性 背景色 

    beginthread 函数 以适当的方式建立用于内存管理的线程 

    bevelinner 属性 控件方框的内框方式 字串3 

    bevelouter 属性 控件方框的外框方式 

    bevelwidth 属性 控件方框的外框宽度 

    blockread 函数 读一个或多个记录到变量中 

    blockwrite 函数 从变量中写一个或多个记录 

    borderstyle 属性 边界类型 

    borderwidth 属性 边界宽度 

    break 命令 终止for、while、repeat循环语句 

    brush 属性 画刷 

    caption 属性 标签文字的内容 

    changefileext 函数 改变文件的后缀 

    chdir 函数 改变当前目录 

    checked 属性 确定复选框选中状态 

    chr 函数 返回指定序数的字符 

    closefile 命令 关闭打开的文件 

    color 属性 标签的颜色 

    columns 属性 显示的列数 

    comparestr 函数 比较字符串(区分大小写) 

    concat 函数 合并字符串 

    continue 命令 继续for、while、repeat的下一个循环 

    copy 函数 返回一字符串的子串 

    cos 函数 余弦函数 

    ctl3d 属性 是否具有3d效果 

    cursor 属性 鼠标指针移入后的形状 

    date 函数 返回当前的日期 

    datetimetofiledate 函数 将delphi的日期格式转换为dos的日期格式 字串5 

    datetimetostr 函数 将日期时间格式转换为字符串 

    datetimetostring 函数 将日期时间格式转换为字符串 

    datetostr 函数 将日期格式转换为字符串 

    dayofweek 函数 返回星期的数值 

    dec 函数 递减变量值 

    decodedate 函数 将日期格式分解为年月日 

    decodetime 函数 将时间格式分解为时、分、秒、毫秒 

    delete 函数 从字符串中删除子串 

    deletefile 命令 删除文件 

    diskfree 函数 返回剩余磁盘空间的大小 

    disksize 函数 返回指定磁盘的容量 

    dispose 函数 释放动态变量所占的空间 

    disposestr 函数 释放字符串在堆栈中的内存空间 

    ditherbackgrounddi2001.jpg?使背景色的色彩加重或减少50% 

    dragcursor 属性 当鼠标按下时光标的形状 

    dragmode 属性 按动的作用方式 

    dropdowncount 属性 容许的显示数据项的数目 

    editmask 属性 编辑模式 

    enabled 属性 是否使标签呈现打开状态 

    encodedate 函数 将年月日合成为日期格式 

    encodetime 函数 将时、分、秒、毫秒合成为时间格式 

    字串2



    endmargin 属性 末尾边缘 

    eof 函数 对有类型或无类型文件测试是否到文件尾 

    eoln 函数 返回文本文件的行结束状态 

    erase 命令 删除外部文件 

    exceptaddr 函数 返回引起当前意外的地址 

    exclude 函数 从集合中删除一些元素 

    exceptobject 函数 返回当前意外的索引 

    exit 命令 立即从当前的语句块中退出 

    exp 函数 指数函数 

    expandfilename 函数 返回包含绝对路径的字符串 

    extendedselect 属性 是否允许存在选择模式,true时,multiselect才有意义 

    extractfiledir 函数 返回驱动器和路径 

    extractfileext 函数 返回文件的后缀 

    extractfilename 函数 返回文件名 

    extractfilepath 函数 返回指定文件的路径 

    fileage 函数 返回文件已存在的时间 

    fileclose 命令 关闭指定的文件 

    filecreate 命令 用指定的文件名建立新文件 

    filedatetodatetime 函数 将dos的日期格式转换为delphi的日期格式 

    fileexists 函数 检查文件是否存在 

    filegatattr 函数 返回文件的属性 字串6 

    filegetdate 函数 返回文件的dos日期时间标记 

    fileopen 命令 用指定的存取模式打开指定的文件 

    filepos 函数 返回文件的当前指针位置 

    fileread 命令 从指定的文件读取 

    filesearch 命令 在目录中搜索指定的文件 

    fileseek 函数 改变文件的指针 

    filesetattr 函数 设置文件属性 

    filesetdate 函数 设置文件的dos日期时间标记 

    filesize 函数 返回当前文件的大小 

    filewrite 函数 对指定的文件做写操作 

    fillchar 函数 用指定的值填充连续字节的数 

    findclose 命令 终止findfirst/findnext序列 

    findfirst 命令 对指定的文件名及属性搜索目录 

    findnext 命令 返回与文件名及属性匹配的下一入口 

    floattodecimal 函数 将浮点数转换为十进制数 

    floattostrf 函数 将浮点数转换为字符串 

    floattostr 函数 将浮点数转换为字符串 

    floattotext 函数 将给定的浮点数转换为十进制数 

    floattotextfmt 函数 将给定的浮点数转换为十进制数 

    flush 函数 将缓冲区的内容刷新到输出的文本文件中 
    字串7


    fmtloadstr 函数 从程序的资源字符串表中装载字符串 

    fmtstr 函数 格式化一系列的参数,其结果以参数result返回 

    font 属性 设置字体 

    format 函数 格式化一系列的参数并返回pascal字符串 

    formatbuf 函数 格式化一系列的参数 

    formatdatetime 函数 用指定的格式来格式化日期和时间 

    formatfloat 函数 指定浮点数格式 

    frac 函数 返回参数的小数部分 

    freemem 函数 按给定大小释放动态变量所占的空间 

    getdir 返回指定驱动器的当前目录 

    getheapstatus 返回内存管理器的当前状态 

    getmem 建立一指定大小的动态变量,并将指针指向该处 

    getmemorymanager 返回内存管理器的入口点 

    glyph 函数 按钮上的图象 

    halt 停止程序的执行并返回到操作系统 

    hi 返回参数的高地址位 

    high 返回参数的上限值 

    hint 属性 提示信息 

    int 返回参数的整数部分 

    include 添加元素到集合中 

    insert 在字符串中插入子串 

    inttohex 将整型数转换为十六进制数 
    字串8 
    inttostr 将整型数转换为字符串 

    ioresult 返回最新的i/o操作完成状态 

    isvalidident 测试字符串是否为有效的标识符 

    items 属性 默认显示的节点 

    kind 属性 摆放样式 

    largechange 属性 最大改变值 

    layout 属性 图象布局 

    length 函数 返回字符串的动态长度 

    lines 属性 缺省显示内容 

    ln 函数 自然对数函数 

    lo 函数 返回参数的低地址位 

    loadstr 函数 从应用程序的可执行文件中装载字符资源 

    lowercase 函数 将给定的字符串变为小写 

    low 函数 返回参数的下限值 

    max 属性 最大值 

    maxlength 属性 最大长度 

    min 属性 最小值 

    mkdir 命令 建立一子目录 

    move 函数 从源到目标复制字节 

    multiselect 属性 允许同时选择几个数据项 

    name 属性 控件的名字 

    new 函数 建立新的动态变量并设置一指针变量指向他 

    newstr 函数 在堆栈上分配新的字符串 

    now 函数 返回当前的日期和时间 

    odd 测试参数是否为奇数 
    字串2 
    onactivate 事件 焦点移到窗体上时触发 

    onclick 事件 单击窗体空白区域触发 

    ondblclick 事件 双击窗体空白区域触发 

    onclosequery 事件 使用者试图关闭窗体触发 

    onclose 事件 窗体关闭后才触发 

    oncreate 事件 窗体第一次创建时触发 

    ondeactivate 事件 用户切换到另一应用程序触发 

    ondragdrop 事件 鼠标拖放操作结束时触发 

    ondragover 事件 有其他控件从他上面移过触发 

    onmousedown 事件 按下鼠标键时触发 

    onmouseup 事件 释放鼠标键时触发 

    onmousemove 事件 移动鼠标时触发 

    onhide 事件 隐藏窗体时触发 

    onkeydown 事件 按下键盘某键时触发 

    onkeypress 事件 按下键盘上的单个字符键时触发 

    onkeyup 事件 释放键盘上的某键时触发 

    onpaint 事件 窗体上有新部分暴露出来触发 

    onresize 事件 重新调整窗体大小触发 

    onshow 事件 在窗体实际显示之前瞬间触发 

    ord 返回序数类的序数 

    outlinestyle 属性 类型 

    outofmemoryerror 引起outofmemory意外 
    字串1



    pageindex 属性 页索引 

    pages 属性 页 

    paramcount 函数 返回在命令行上传递给程序的参数数量 

    paramstr 函数 返回指定的命令行参数 

    pen 属性 画刷设置 

    pi 函数 返回圆周率pi 

    picture 属性 显示图象 

    pictureclosed 属性 设置closed位图 

    pictureleaf 属性 设置leaf位图 

    pictureminus 属性 设置minus位图 

    pictureopen 属性 设置open位图 

    pictureplus 属性 设置plus位图 

    pos 函数 在字符串中搜索子串 

    pred 函数 返回先前的参数 

    random 函数 返回一随机函数 

    randomize 函数 用一随机数初始化内置的随机数生成器 

    read 函数 对有格式的文件,读一文件组件到变量中; 

    对文本文件,读一个或多个值到一个或多个变量中 

    readln 函数 执行read过程,然后跳到文件下一行 

    readonly 属性 只读属性 

    reallocmem 函数 分配一动态变量 

    rename 函数 重命名外部文件 

    renamefile 函数 对文件重命名 

    reset 函数 打开已有的文件 字串4 

    rewrite 函数 建立并打开一新的文件 

    rmdir 函数 删除空的子目录 

    round 函数 将实数值舍入为整型值 

    runerror 函数 停止程序的执行 

    scrollbars 属性 滚动条状态 

    seek 函数 将文件的当前指针移动到指定的组件上 

    seekeof 函数 返回文件的文件结束状态 

    seekeoln 函数 返回文件的行结束状态 

    selectedcolor 属性 选中颜色 

    setmemorymanager 函数 设置内存管理器的入口点 

    settextbuf 函数 给文本文件指定i/o缓冲区 

    shape 属性 显示的形状 

    showexception 函数 显示意外消息与地址 

    sin 函数 正弦函数 

    sizeof 函数 返回参数所占的字节数 

    smallchange 属性 最小改变值 

    sorted 属性 是否允许排序 

    sqr 函数 平方函数 

    sqrt 函数 平方根函数 

    startmargin 属性 开始边缘 

    state 属性 控件当前状态 

    str 函数 将数值转换为字符串 

    stralloc 函数 给以null结束的字符串分配最大长度-1的缓冲区 

    strbufsize 函数 返回存储在由stralloc分配的字符缓冲区的最大字符数 字串5 

    strcat 函数 将一字符串附加到另一字符串尾并返回合并的字符串 

    strcomp 函数 比较两个字符串 

    strcopy 函数 将一个字符串复制到另一个字符串中 

    strdispose 函数 释放堆栈上的字符串 

    strecopy 函数 将一字符串复制到另一个字符串并返回结果字符串尾部的指针 

    strend 函数 返回指向字符串尾部的指针 

    stretch 属性 自动适应控件的大小 

    strfmt 函数 格式化一系列的参数 

    stricomp 函数 比较两个字符串(不区分大小写) 

    stringtowidechar 函数 将ansi字符串转换为unicode字符串 

    strlcat 函数 将一字符串中的字符附加到另一字符串尾并返回合并的字符串 

    strlcomp 函数 以最大长度比较两个字符串 

    strlcopy 函数 将一个字符串中的字符复制到另一个字符串中 

    strlen 函数 返回字符串中的字符数 

    strlfmt 函数 格式化一系列的参数,其结果中包含有指向目标缓冲区的指针 

    strlicomp 函数 以最大长度比较两个字符串(不区分大小写) 

    strlower 函数 将字符串中的字符转换为小写 

    strmove 函数 将一个字符串中的字符复制到另一个字符串中 字串4 

    strnew 函数 在堆栈上分配一个字符串 

    strpas 函数 将以null结束的字符串转换为pascal类的字符串 

    strpcopy 函数 将pascal类的字符串复制为以null结束的字符串 

    strplcopy 函数 从pascal类的最大长度字符串复制为以null结束的字符串 

    strpos 函数 返回一个字符串在另一个字符串中首次出现指针 

    strrscan 函数 返回字符串中最后出现字符的指针 

    strscan 函数 返回字符串中出现首字符的指针 

    strtodate 函数 将字符串转换为日期格式 

    strtodatetime 函数 将字符串转换为日期/时间格式 

    strtofloat 函数 将给定的字符串转换为浮点数 

    strtoint 函数 将字符串转换为整型 

    strtointdef 函数 将字符串转换为整型或默认值 

    strtotime 函数 将字符串转换为时间格式 

    strupper 函数 将字符串中的字符转换为大写 

    style 属性 类型选择 

    suce 函数 返回后继的参数 

    swap 函数 交换参数的高低地址位 

    tabs 属性 标记每一项的内容 

    tabindex 属性 标记索引 

    text 属性 显示的文本 字串2 

    texttofloat 函数 将字符串(以null结束的格式)转换为浮点数 

    time 函数 返回当前的时间 

    timetostr 函数 将时间格式转换为字符串 

    trim 函数 从给定的字符串中删除前导和尾部的空格及控制字符 

    trimleft 函数 从给定的字符串中删除首部的空格及控制字符 

    trimright 函数 从给定的字符串中删除尾部的空格及控制字符 

    trunc 函数 将实型值截取为整型值 

    truncate 函数 截去当前文件位置后的内容 

    unselectedcolor 属性 未选中颜色 

    upcase 将字符转换为大写 

    uppercase 将给定的字符串变为大写 

    val 函数 将字符串转换为整型值 

    vararraycreate 函数 以给定的界限和维数建立变体数组 

    vararraydimcount 函数 返回给定变体的维数 

    vararrayhighbound 函数 返回给定变体数组维数的上界 

    vararraylock 函数 锁定给定的变体数组 

    vararraylowbound 函数 返回给定变体数组维数的下界 

    vararrayof 函数 返回指定变体的数组元素 

    vararrayredim 函数 通过改变上限来调整变体的大小 
    字串3 
    vararrayunlock 函数 解锁指定的变体数组 

    varastype 函数 将变体转换为指定的类型 

    varcase 函数 将变体转换为指定的类型并保存他 

    varclear 函数 清除指定的变体 

    varcopy 函数 将指定的变体复制为指定的变体 

    varformdatetime 函数 返回包含日期时间的变体 

    varisarray 函数 测试变体是否为数组 

    varisempty 函数 测试变体是否为unassigned 

    varisnull 函数 测试变体是否为null 

    vartodatetime 函数 将给定的变体转换为日期时间 

    vartype 函数 将变体转换为指定的类型并保存他 

    visible 属性 控件的可见性 

    wantreturns 属性 为true时,按回车键产生一个回车符; 

    为false时,按下ctrl+enter才产生回车符 

    write 命令 对有格式的文件,写一变量到文件组件中; 

    对文本文件,写一个或多个值到文件中 

    writeln 命令 执行write过程,然后输出一行结束标志 

    widecharlentostring 函数 将ansi字符串转换为unicode字符串 

    widecharlentostrwar 函数 将unicode字符串转换为ansi字符串变量 字串5 

    widechartostring 函数 将unicode字符串转换为ansi字符串 

    widechartostrvar 函数 将unicode字符串转换为ansi字符串变量 
      点击: 856 次,评论: 1 次 提交日期: 2007-9-27  
      评论: daluren 提交日期: 2007-9-27 13:47:14  
     
    uses StrUtils; 【字符串函数大全】 
          首部 function 
    AnsiResemblesText(const AText, AOther: string): Boolean; 
          $[StrUtils.pas
          功能 返回两个字符串是否相似
          说明 ANSI(American National Standards Institute)美国国家标准协会;不区分大小写
          参考 function StrUtils.SoundexProc; var StrUtils.AnsiResemblesProc
          例子 CheckBox1.Checked := AnsiResemblesText(Edit1.Text, Edit2.Text);
          ━━━━━━━━━━━━━━━━━━━━━
          首部 function AnsiContainsText(const AText, ASubText: string): Boolean; 
          $[StrUtils.pas
          功能 返回字符串AText是否包含子串ASubText
          说明 不区分大小写
          参考 function StrUtils.AnsiUppercase; function StrUtils.AnsiPos
          例子 CheckBox1.Checked := AnsiContainsText(Edit1.Text, Edit2.Text);
          ━━━━━━━━━━━━━━━━━━━━━ 
          首部 function AnsiStartsText(const ASubText, AText: string): Boolean; 
          $[StrUtils.pas
          功能 返回字符串AText是否以子串ASubText开头
          说明 不区分大小写
          参考 function Windows.CompareString
          例子 CheckBox1.Checked := AnsiStartsText(Edit1.Text, Edit2.Text);
          ━━━━━━━━━━━━━━━━━━━━━ 
          首部 function AnsiEndsText(const ASubText, AText: string): Boolean; 
          $[StrUtils.pas
          功能 返回字符串AText是否以子串ASubText结尾
          说明 不区分大小写
          参考 function Windows.CompareString
          例子 CheckBox1.Checked := AnsiEndsText(Edit1.Text, Edit2.Text);
          ━━━━━━━━━━━━━━━━━━━━━ 
          首部 function AnsiReplaceText(const AText, AFromText, AToText: string): 
          string; $[StrUtils.pas
          功能 返回字符串AText中用子串AFromText替换成子串AToText的结果
          说明 不区分大小写
          参考 function SysUtils.StringReplace; type SysUtils.TReplaceFlags
          例子 Edit4.Text := AnsiReplaceText(Edit1.Text, Edit2.Text, Edit3.Text);
          ━━━━━━━━━━━━━━━━━━━━━ 
          首部 function AnsiMatchText(const AText: string; const AValues: array of 
          string): Boolean; $[StrUtils.pas
          功能 返回字符串数组AValues中是否包含字符串AText
          说明 不区分大小写
          参考 function StrUtils.AnsiIndexText
          例子 CheckBox1.Checked := AnsiMatchText(Edit1.Text, ['a1', 'a2', 'a3', 
          'a4']);
          ━━━━━━━━━━━━━━━━━━━━━ 
          首部 function AnsiIndexText(const AText: string; const AValues: array of 
          string): Integer; $[StrUtils.pas
          功能 返回字符串AText在字符串数组AValues中的位置
          说明 不区分大小写;如果不包含则返回-1
          参考 function SysUtils.AnsiSameText
          例子 SpinEdit1.Value := AnsiIndexText(Edit1.Text, ['a1', 'a2', 'a3', 'a4']);
          ━━━━━━━━━━━━━━━━━━━━━ 
          首部 function AnsiContainsStr(const AText, ASubText: string): Boolean; 
          $[StrUtils.pas
          功能 返回字符串AText是否包含子串ASubText
          说明 区分大小写
          参考 function StrUtils.AnsiPos
          例子 CheckBox1.Checked := AnsiContainsStr(Edit1.Text, Edit2.Text);
          ━━━━━━━━━━━━━━━━━━━━━
          首部 function AnsiStartsStr(const ASubText, AText: string): Boolean; 
          $[StrUtils.pas
          功能 返回字符串AText是否以子串ASubText开头
          说明 区分大小写
          参考 function SysUtils.AnsiSameStr
          例子 CheckBox1.Checked := AnsiStartsStr(Edit1.Text, Edit2.Text);
          ━━━━━━━━━━━━━━━━━━━━━ 
          首部 function AnsiEndsStr(const ASubText, AText: string): Boolean; 
          $[StrUtils.pas
          功能 返回字符串AText是否以子串ASubText结尾
          说明 区分大小写
          参考 function SysUtils.AnsiSameStr
          例子 CheckBox1.Checked := AnsiEndsStr(Edit1.Text, Edit2.Text);
          ━━━━━━━━━━━━━━━━━━━━━ 
          首部 function AnsiReplaceStr(const AText, AFromText, AToText: string): 
          string; $[StrUtils.pas
          功能 返回字符串AText中用子串AFromText替换成子串AToText的结果
          说明 区分大小写
          参考 function SysUtils.StringReplace; type SysUtils.TReplaceFlags
          例子 Edit4.Text := AnsiReplaceStr(Edit1.Text, Edit2.Text, Edit3.Text);
          ━━━━━━━━━━━━━━━━━━━━━ 
          首部 function AnsiMatchStr(const AText: string; const AValues: array of 
          string): Boolean; $[StrUtils.pas
          功能 返回字符串数组AValues中是否包含字符串AText
          说明 区分大小写
          参考 function StrUtils.AnsiIndexStr
          例子 CheckBox1.Checked := AnsiMatchStr(Edit1.Text, ['a1', 'a2', 'a3', 'a4']);
          ━━━━━━━━━━━━━━━━━━━━━ 
          首部 function AnsiIndexStr(const AText: string; const AValues: array of 
          string): Integer; $[StrUtils.pas
          功能 返回字符串AText在字符串数组AValues中的位置
          说明 区分大小写
          参考 function SysUtils.AnsiSameStr
          例子 SpinEdit1.Value := AnsiIndexStr(Edit1.Text, ['a1', 'a2', 'a3', 'a4']);
          ━━━━━━━━━━━━━━━━━━━━━ 
          首部 function DupeString(const AText: string; ACount: Integer): string; 
          $[StrUtils.pas
          功能 返回字符串AText的ACount个复本
          说明 当ACount为0时返回''
          参考 function System.SetLength
          例子 Edit3.Text := DupeString(Edit1.Text, SpinEdit1.Value);
          ━━━━━━━━━━━━━━━━━━━━━ 
          首部 function ReverseString(const AText: string): string; $[StrUtils.pas
          功能 返回字符串AText的反序
          说明 ReverseString('1234') = '4321'
          参考 function System.SetLength
          例子 Edit3.Text := ReverseString(Edit1.Text);
          ━━━━━━━━━━━━━━━━━━━━━
          首部 function StuffString(const AText: string; AStart, ALength: Cardinal; 
          const ASubText: string): string; $[StrUtils.pas
          功能 返回嵌套字符串
          说明 AStart:嵌套开始位置;ALength:嵌套长度;StuffString('abcd', 2, 0, '12') = 'a12bcd'
          参考 function System.Copy
          例子 Edit3.Text := StuffString(Edit1.Text, SpinEdit1.Value, SpinEdit2.Value, 
          Edit2.Text);
          ━━━━━━━━━━━━━━━━━━━━━ 
          首部 function RandomFrom(const AValues: array of string): string; overload; 
          $[StrUtils.pas
          功能 随机返回字符串数组AValues中的一个元素
          说明 之前建议执行Randomize
          参考 function System.Random
          例子 Randomize; Edit3.Text := RandomFrom(['a1', 'a2', 'a3', 'a4']);
          ━━━━━━━━━━━━━━━━━━━━━ 
          首部 function IfThen(AValue: Boolean; const ATrue: string; AFalse: string = 
          ''): string; overload; $[StrUtils.pas
          功能 返回指定的逻辑字符串
          说明 IfThen(True, '是', '否') = '是';IfThen(False, '是', '否') = '否'
          参考 <NULL>
          例子 Edit3.Text := IfThen(CheckBox1.Checked, Edit1.Text, Edit2.Text);
          ━━━━━━━━━━━━━━━━━━━━━ 
          首部 function LeftStr(const AText: string; const ACount: Integer): string; 
          $[StrUtils.pas
          功能 返回字符串AText左边的ACount个字符
          说明 LeftStr('123456', 3) = '123'
          参考 function System.Copy
          例子 Edit3.Text := LeftStr(Edit1.Text, SpinEdit1.Value);
          ━━━━━━━━━━━━━━━━━━━━━ 
          首部 function RightStr(const AText: string; const ACount: Integer): string; 
          $[StrUtils.pas
          功能 返回字符串AText右边的ACount个字符
          说明 RightStr('123456', 3) = '456'
      参考 function System.Copy
          例子 Edit3.Text := RightStr(Edit1.Text, SpinEdit1.Value);
          ━━━━━━━━━━━━━━━━━━━━━ 
          首部 function MidStr(const AText: string; const AStart, ACount: Integer): 
          string; $[StrUtils.pas
          功能 返回字符串AText从AStart开始的ACount个字符
          说明 其实就是Copy
          参考 function System.Copy
          例子 Edit3.Text := MidStr(Edit1.Text, SpinEdit1.Value, SpinEdit2.Value);
          ━━━━━━━━━━━━━━━━━━━━━ 
          首部 function SearchBuf(Buf: PChar; BufLen: Integer; SelStart, SelLength: 
          Integer; SearchString: String; Options: TStringSearchOptions = [soDown]): 
          PChar; $[StrUtils.pas
          功能 返回第一个搜索到的指针位置
          说明 这函数常用于文本中搜索字符串
          参考 <NULL>
          例子 
          ///////Begin SearchBuf
          function SearchEdit(EditControl: TCustomEdit; const SearchString: String;
          SearchOptions: TStringSearchOptions; FindFirst: Boolean = False): Boolean;
          var
          Buffer, P: PChar;
          Size: Word;
          begin
          Result := False;
          if (Length(SearchString) = 0) then Exit;
          Size := EditControl.GetTextLen;
          if (Size = 0) then Exit;
          Buffer := StrAlloc(Size + 1);
          try
          EditControl.GetTextBuf(Buffer, Size + 1);
          P := SearchBuf(Buffer, Size, EditControl.SelStart, EditControl.SelLength,
          SearchString, SearchOptions);
          if P <> nil then begin
          EditControl.SelStart := P - Buffer;
          EditControl.SelLength := Length(SearchString);
          Result := True;
          end;
          finally
          StrDispose(Buffer);
          end;
          end; 
          procedure TForm1.Button1Click(Sender: TObject);
          var
          SearchOptions: TStringSearchOptions;
          begin
          SearchOptions := [];
          if CheckBox1.Checked then
          Include(SearchOptions, soDown);
          if CheckBox2.Checked then
          Include(SearchOptions, soMatchCase);
          if CheckBox3.Checked then
          Include(SearchOptions, soWholeWord);
          SearchEdit(Memo1, Edit1.Text, SearchOptions);
          Memo1.SetFocus;
          end;
          ///////End SearchBuf
          ━━━━━━━━━━━━━━━━━━━━━ 
          首部 function Soundex(const AText: string; ALength: TSoundexLength = 4): 
          string; $[StrUtils.pas
          功能 返回探测字符串
          说明 根据探测法(Soundex)可以找到相进的字符串;
          参考 <NULL>
          例子 Edit2.Text := Soundex(Edit1.Text, SpinEdit1.Value);
          ━━━━━━━━━━━━━━━━━━━━━
          首部 function SoundexInt(const AText: string; ALength: TSoundexIntLength = 
          4): Integer; $[StrUtils.pas
          功能 返回探测整数
          说明 ALength的值越大解码准确率越高
          参考 <NULL>
          例子 SpinEdit2.Value := SoundexInt(Edit1.Text, SpinEdit1.Value);
          ━━━━━━━━━━━━━━━━━━━━━ 
          首部 function DecodeSoundexInt(AValue: Integer): string; $[StrUtils.pas
          功能 返回探测整数的解码
          说明 DecodeSoundexInt(SoundexInt('hello')) 相当于 Soundex('hello')
          参考 <NULL>
          例子 Edit2.Text := DecodeSoundexInt(SpinEdit2.Value);
          ━━━━━━━━━━━━━━━━━━━━━ 
          首部 function SoundexWord(const AText: string): Word; $[StrUtils.pas
          功能 返回探测文字数值
          说明 没有参数ALength已经固定为4
          参考 <NULL>
          例子 SpinEdit2.Value := SoundexWord(Edit1.Text);
          ━━━━━━━━━━━━━━━━━━━━━ 
          首部 function DecodeSoundexWord(AValue: Word): string; $[StrUtils.pas
          功能 返回探测文字数值的解码
          说明 DecodeSoundexWord(SoundexWord('hello')) 相当于 Soundex('hello')
          参考 <NULL>
          例子 Edit2.Text := DecodeSoundexWord(SpinEdit2.Value);
          ━━━━━━━━━━━━━━━━━━━━━ 
          首部 function SoundexSimilar(const AText, AOther: string; ALength: 
          TSoundexLength = 4): Boolean; $[StrUtils.pas
          功能 返回两个字符串的探测字符串是否相同
          说明 Result := Soundex(AText, ALength) = Soundex(AOther, ALength)
          参考 <NULL>
          例子 CheckBox1.Checked := SoundexSimilar(Edit1.Text, Edit2.Text, 
          SpinEdit1.Value);
          ━━━━━━━━━━━━━━━━━━━━━ 
          首部 function SoundexCompare(const AText, AOther: string; ALength: 
          TSoundexLength = 4): Integer; $[StrUtils.pas
          功能 返回比较两个字符串的探测字符串的结果
          说明 Result := AnsiCompareStr(Soundex(AText, ALength), Soundex(AOther, 
          ALength))
          参考 function SysUtils.AnsiCompareStr
          例子 SpinEdit2.Value := SoundexCompare(Edit1.Text, Edit2.Text, 
          SpinEdit1.Value);
          ━━━━━━━━━━━━━━━━━━━━━ 
          首部 function SoundexProc(const AText, AOther: string): Boolean; 
          $[StrUtils.pas
          功能 调用SoundexSimilar返回两个字符串的探测字符串是否相同
          说明 系统变量AnsiResemblesProc的默认值
          参考 function StrUtils.AnsiResemblesText
          例子 [var AnsiResemblesProc: TCompareTextProc = SoundexProc;]
          ━━━━━━━━━━━━━━━━━━━━━
          首部 function NewStr(const S: string): PString; deprecated; $[SysUtils.pas
          功能 返回一个新的字符串指针地址
          说明 字符串S为空时返回NullStr
          参考 procedure System.New
          例子 
          ////////Begin NewStr,DisposeStr
          procedure TForm1.Button1Click(Sender: TObject);
          var
          P: PString;
          begin
          P := NewStr(Edit1.Text);
          Edit2.Text := P^;
          DisposeStr(P);
          end;
          ////////End NewStr,DisposeStr
          ━━━━━━━━━━━━━━━━━━━━━ 
          首部 procedure DisposeStr(P: PString); deprecated; $[SysUtils.pas
          功能 释放字符串指针P资源
          说明 配合函数NewStr使用
          参考 procedure System.Dispose
          例子 <如上参见,如下参见>
          ━━━━━━━━━━━━━━━━━━━━━ 
          首部 procedure AssignStr(var P: PString; const S: string); deprecated; 
          $[SysUtils.pas
          功能 将字符串S更新给字符串指针P
          说明 更新值时会释放以前字符串指针的资源
          参考 function SysUtils.NewStr;function SysUtils.DisposeStr
          例子 
          ////////Begin AssignStr
          procedure TForm1.Button1Click(Sender: TObject);
          var
          P: PString;
          begin
          P := nil;
          AssignStr(P, Edit1.Text);
          Edit2.Text := P^;
          DisposeStr(P);
          end;
          ////////End AssignStr
          ━━━━━━━━━━━━━━━━━━━━━ 
          首部 procedure AppendStr(var Dest: string; const S: string); deprecated; 
          $[SysUtils.pas
          功能 在字符串Dest后追加字符串S
          说明 相当于Dest := Dest + S;Delphi6已经不建议使用
          参考 <NULL>
          例子 
          ////////Begin AppendStr
          procedure TForm1.Button1Click(Sender: TObject);
          var
          S: string;
          begin
          S := Edit2.Text;
          AppendStr(S, Edit1.Text);
          Edit2.Text := S;
          end;
          ////////End AppendStr
          ━━━━━━━━━━━━━━━━━━━━━ 
          首部 function UpperCase(const S: string): string; $[SysUtils.pas
          功能 返回字符串S的大写形式
          说明 非小写字符不处理
          参考 procedure System.SetLength
          例子 Edit2.Text := UpperCase(Edit1.Text);
          ━━━━━━━━━━━━━━━━━━━━━ 
          首部 function LowerCase(const S: string): string; $[SysUtils.pas
          功能 返回字符串S的小写形式
          说明 非大写字符不处理
          参考 procedure System.SetLength
          例子 Edit2.Text := LowerCase(Edit1.Text);
          ━━━━━━━━━━━━━━━━━━━━━ 
          首部 function CompareStr(const S1, S2: string): Integer; $[SysUtils.pas
          功能 返回比较两个字符
          说明 当S1>S2返回值>0;当S1<S2返回值<0;当S1=S2返回值=0;区分大小写
          参考 <NULL>
          例子 SpinEdit1.Value := CompareStr(Edit1.Text, Edit2.Text);
          ━━━━━━━━━━━━━━━━━━━━━ 
          首部 function CompareMem(P1, P2: Pointer; Length: Integer): Boolean; 
          assembler; $[SysUtils.pas
          功能 返回比较两个内存指针
          说明 CompareMem(PChar('12a'), PChar('12c'), 2)=True;CompareMem(PChar('12a'), 
          PChar('12c'), 3)=False
          参考 <NULL>
          例子 CheckBox1.Checked := CompareMem(Self, Form1, 8);
          ━━━━━━━━━━━━━━━━━━━━━ 
          首部 function CompareText(const S1, S2: string): Integer; $[SysUtils.pas
          功能 返回比较两个字符串
          说明 不区分大小写
          参考 <NULL>
          例子 SpinEdit1.Value := CompareText(Edit1.Text, Edit2.Text);
          ━━━━━━━━━━━━━━━━━━━━━ 
          首部 function SameText(const S1, S2: string): Boolean; $[SysUtils.pas
          功能 返回两个字符串是否相等
          说明 不区分大小写
          参考 <NULL>
          例子 CheckBox1.Checked := SameText(Edit1.Text, Edit2.Text);
          ━━━━━━━━━━━━━━━━━━━━━ 
          首部 function AnsiUpperCase(const S: string): string; $[SysUtils.pas
          功能 返回字符串S的大写形式
          说明 ANSI(American National Standards Institute)美国国家标准协会;非小写的字符不变
          参考 function Windows.CharUpperBuff
          例子 Edit2.Text := AnsiUpperCase(Edit1.Text);
          ━━━━━━━━━━━━━━━━━━━━━
          首部 function AnsiLowerCase(const S: string): string; $[SysUtils.pas
          功能 返回字符串S的小写形式
          说明 非大写字符不处理
          参考 function Windows.CharLowerBuff
          例子 Edit2.Text := AnsiLowerCase(Edit1.Text);
          ━━━━━━━━━━━━━━━━━━━━━
          首部 function AnsiCompareStr(const S1, S2: string): Integer; $[SysUtils.pas
          功能 反回比较两个字符串
          说明 当S1>S2返回值>0;当S1<S2返回值<0;当S1=S2返回值=0;区分大小写
          参考 function Windows.CompareString
          例子 SpinEdit1.Value := AnsiCompareStr(Edit1.Text, Edit2.Text);
          ━━━━━━━━━━━━━━━━━━━━━
          首部 function AnsiSameStr(const S1, S2: string): Boolean; $[SysUtils.pas
          功能 返回两个字符串是否相等
          说明 区分大小写
          参考 function SysUtils.AnsiCompareStr
          例子 CheckBox1.Checked := AnsiSameStr(Edit1.Text, Edit2.Text);
          ━━━━━━━━━━━━━━━━━━━━━
          首部 function AnsiCompareText(const S1, S2: string): Integer; $[SysUtils.pas
          功能 反回比较两个字符串
          说明 当S1>S2返回值>0;当S1<S2返回值<0;当S1=S2返回值=0;不区分大小写
          参考 function Windows.CompareString
          例子 SpinEdit1.Value := AnsiCompareText(Edit1.Text, Edit2.Text);
          ━━━━━━━━━━━━━━━━━━━━━
          首部 function AnsiSameText(const S1, S2: string): Boolean; $[SysUtils.pas
          功能 返回两个字符串是否相等
          说明 不区分大小写
          参考 function SysUtils.AnsiCompareText
          例子 CheckBox1.Checked := AnsiSameText(Edit1.Text, Edit2.Text);
          ━━━━━━━━━━━━━━━━━━━━━
          首部 function AnsiStrComp(S1, S2: PChar): Integer; $[SysUtils.pas
          功能 返回比较两个指针字符串
          说明 当S1>S2返回值>0;当S1<S2返回值<0;当S1=S2返回值=0;区分大小写
          参考 function System.CompareString
          例子 SpinEdit1.Value := AnsiStrComp(PChar(Edit1.Text), PChar(Edit2.Text))
          ━━━━━━━━━━━━━━━━━━━━━
          首部 function AnsiStrIComp(S1, S2: PChar): Integer; $[SysUtils.pas
          功能 返回比较两个指针字符串
          说明 当S1>S2返回值>0;当S1<S2返回值<0;当S1=S2返回值=0;不区分大小写;Ignore(忽略)
          参考 function Windows.CompareString
          例子 SpinEdit1.Value := AnsiStrIComp(PChar(Edit1.Text), PChar(Edit2.Text))
          ━━━━━━━━━━━━━━━━━━━━━
          首部 function AnsiStrLComp(S1, S2: PChar; MaxLen: Cardinal): Integer; 
          $[SysUtils.pas
          功能 返回比较两个指针字符串指定长度
          说明 当S1>S2返回值>0;当S1<S2返回值<0;当S1=S2返回值=0;区分大小写;Length(长度)
          参考 function Windows.CompareString
          例子 SpinEdit1.Value := AnsiStrLComp(PChar(Edit1.Text), PChar(Edit2.Text), 
          SpinEdit2.Value)
          ━━━━━━━━━━━━━━━━━━━━━
          首部 function AnsiStrLIComp(S1, S2: PChar; MaxLen: Cardinal): Integer; 
          $[SysUtils.pas
          功能 返回比较两个指针字符串指定长度
          说明 当S1>S2返回值>0;当S1<S2返回值<0;当S1=S2返回值=0;不区分大小写
          参考 function Windows.CompareString
          例子 SpinEdit1.Value := AnsiStrLIComp(PChar(Edit1.Text), PChar(Edit2.Text), 
          SpinEdit2.Value)
          ━━━━━━━━━━━━━━━━━━━━━
          首部 function AnsiStrLower(Str: PChar): PChar; $[SysUtils.pas
          功能 返回指针字符串小写形式
          说明 非大写字符不处理
          参考 function Windows.CharLower
          例子 Edit2.Text := AnsiStrLower(PChar(Edit1.Text));
          ━━━━━━━━━━━━━━━━━━━━━
          首部 function AnsiStrUpper(Str: PChar): PChar; $[SysUtils.pas
          功能 返回指针字符串大写形式
          说明 非小写字符不处理
          参考 function Windows.CharUpper
          例子 Edit2.Text := AnsiStrUpper(PChar(Edit1.Text));
          ━━━━━━━━━━━━━━━━━━━━━
          首部 function AnsiLastChar(const S: string): PChar; $[SysUtils.pas
          功能 返回字符串S的最后一个指针字符
          说明 当字符串S为空串则返回空指针
          参考 function SysUtils.ByteType
          例子 Edit2.Text := AnsiLastChar(Edit1.Text);
          ━━━━━━━━━━━━━━━━━━━━━
          首部 function AnsiStrLastChar(P: PChar): PChar; $[SysUtils.pas
          功能 返回指针字符串P的最后一个指针字符
          说明 当字符串P为空空指针则返回空指针
          参考 function SysUtils.ByteType
          例子 Edit2.Text := AnsiLastChar(PChar(Edit1.Text));
          ━━━━━━━━━━━━━━━━━━━━━ 
          首部 function WideUpperCase(const S: WideString): WideString; $[SysUtils.pas
          功能 返回双字节字符串的大写形式
          说明 WideChar双字节字符
          参考 function Windows.CharUpperBuffW
          例子 Edit2.Text := WideUpperCase(Edit1.Text);
          ━━━━━━━━━━━━━━━━━━━━━
          首部 function WideLowerCase(const S: WideString): WideString; $[SysUtils.pas
          功能 返回双字节字符串的小写形式
          说明 我怎么就测试不出来呢
          参考 function Windows.CharLowerBuffW
          例子 Edit2.Text := WideLowerCase(Edit1.Text);
          ━━━━━━━━━━━━━━━━━━━━━
          首部 function WideCompareStr(const S1, S2: WideString): Integer; 
          $[SysUtils.pas
          功能 返回比较两个双字节字符串
          说明 当S1>S2返回值>0;当S1<S2返回值<0;当S1=S2返回值=0;区分大小写
          参考 function Windows.CompareStringW
          例子 SpinEdit1.Value := WideCompareStr(Edit1.Text, Edit2.Text);
          ━━━━━━━━━━━━━━━━━━━━━ 
          首部 function WideSameStr(const S1, S2: WideString): Boolean; $[SysUtils.pas
          功能 返回两个双字节字符串是否相同
          说明 区分大小写
          参考 function SysUtils.WideCompareStr
          例子 CheckBox1.Checked := WideSameStr(Edit1.Text, Edit2.Text);
          ━━━━━━━━━━━━━━━━━━━━━
          首部 function WideCompareText(const S1, S2: WideString): Integer; 
          $[SysUtils.pas
          功能 返回比较两个双字节字符串
          说明 当S1>S2返回值>0;当S1<S2返回值<0;当S1=S2返回值=0;不区分大小写
          参考 function Windows.CompareStringW
          例子 SpinEdit1.Value := WideCompareText(Edit1.Text, Edit2.Text);
          ━━━━━━━━━━━━━━━━━━━━━
          首部 function WideSameText(const S1, S2: WideString): Boolean; 
    $[SysUtils.pas
          功能 返回两个双字节字符串是否相同
          说明 不区分大小写
          参考 function SysUtils.WideCompareText
          例子 CheckBox1.Checked := WideSameText(Edit1.Text, Edit2.Text);
          ━━━━━━━━━━━━━━━━━━━━━ 
          首部 function Trim(const S: string): string; overload; $[SysUtils.pas
          首部 function Trim(const S: WideString): WideString; overload; $[SysUtils.pas
          功能 返回除去字符串S左右不可见字符
          说明 小于#32的字符看作不可见字符
          参考 function System.Copy
          例子 Edit2.Text := Trim(Edit1.Text);
          ━━━━━━━━━━━━━━━━━━━━━
          首部 function TrimLeft(const S: string): string; overload; $[SysUtils.pas
          首部 function TrimLeft(const S: WideString): WideString; overload; $[SysUtils.pas
          功能 返回除去字符串S左边不可见字符
          说明 小于#32的字符看作不可见字符
          参考 function System.Copy
          例子 Edit2.Text := TrimLeft(Edit1.Text);
          ━━━━━━━━━━━━━━━━━━━━━
          首部 function TrimRight(const S: string): string; overload; $[SysUtils.pas
          首部 function TrimRight(const S: WideString): WideString; overload;  $[SysUtils.pas
          功能 返回除去字符串S右边不可见字符
          说明 小于#32的字符看作不可见字符
          参考 function System.Copy
          例子 Edit2.Text := TrimRight(Edit1.Text);
          ━━━━━━━━━━━━━━━━━━━━━
          首部 function QuotedStr(const S: string): string; $[SysUtils.pas
          功能 返回字符串S在pascal中的表现形式
          说明 单引号中的一个单引号将转成两个
          参考 procedure System.Insert
          例子 Edit2.Text := QuotedStr(Edit1.Text);
          ━━━━━━━━━━━━━━━━━━━━━
          首部 function AnsiQuotedStr(const S: string; Quote: Char): string; $[SysUtils.pas
          功能 返回字符串S以字符Quote为引号的表现形式
          说明 AnsiQuotedStr('hello"world', 
          '@')='@hello"world@';AnsiQuotedStr('hello"world', '"')='"hello""world"'
          参考 function SysUtils.AnsiStrScan
          例子 Edit2.Text := AnsiQuotedStr(Edit1.Text, '"');
          ━━━━━━━━━━━━━━━━━━━━━
          首部 function AnsiExtractQuotedStr(var Src: PChar; Quote: Char): string; $[SysUtils.pas
          功能 返回以字符Quote为引号的表现形式原形
          说明 表现形式非法时Src不变否则为空
          参考 function SysUtils.AnsiStrScan
          例子
          ///////Begin AnsiExtractQuotedStr
          procedure TForm1.Button1Click(Sender: TObject);
          var
          P: PChar;
          begin
          P := PChar(Edit1.Text);
          Edit2.Text := AnsiExtractQuotedStr(P, '"');
          Edit3.Text := P;
          end;
          ///////End AnsiExtractQuotedStr
          ━━━━━━━━━━━━━━━━━━━━━
          首部 function AnsiDequotedStr(const S: string; AQuote: Char): string; 
          $[SysUtils.pas
          功能 返回以字符AQuote为引号的表现形式原形
          说明 表现形式非法时则返回S
          参考 function SysUtils.AnsiExtractQuotedStr
          例子 Edit2.Text := AnsiDequotedStr(Edit1.Text, '"');
          ━━━━━━━━━━━━━━━━━━━━━
          首部 function AdjustLineBreaks(const S: string; Style: TTextLineBreakStyle = 
          {$IFDEF LINUX} tlbsLF {$ENDIF} {$IFDEF MSWINDOWS} tlbsCRLF {$ENDIF}): 
          string; $[SysUtils.pas
          功能 返回将给定字符串的行分隔符调整为CR/LF序列
          说明 
          AdjustLineBreaks('1'#13'2'#13)='1'#13#10'2'#13#10;AdjustLineBreaks('1'#10'2'#10)='1'#13#10'2'#13#10
          参考 function SysUtils.StrNextChar
          例子 <NULL>
          ━━━━━━━━━━━━━━━━━━━━━
          首部 function IsValidIdent(const Ident: string): Boolean; $[SysUtils.pas
          功能 返回字符串Ident是否是正确的标识符
          说明 标识符::字母|下划线[字母|下划线|数字]...
          参考 <NULL>
          例子 CheckBox1.Checked := IsValidIdent(Edit1.Text);
          ━━━━━━━━━━━━━━━━━━━━━
          首部 function IntToStr(Value: Integer): string; overload; $[SysUtils.pas
          首部 function IntToStr(Value: Int64): string; overload; $[SysUtils.pas
          功能 返回整数Value转换成字符串
          说明 Format('%d', [Value])
          参考 function SysUtils.FmtStr
          例子 Edit2.Text := IntToStr(SpinEdit1.Value);
          ━━━━━━━━━━━━━━━━━━━━━
          首部 function IntToHex(Value: Integer; Digits: Integer): string; overload; 
          $[SysUtils.pas
          首部 function IntToHex(Value: Int64; Digits: Integer): string; overload; 
          $[SysUtils.pas
          功能 返回整数Value转换成十六进制表现结果;Format('%.*x', [Digits, Value])
          说明 参数Digits指定字符最小宽度;最小宽度不足时将用0填充
          参考 function SysUtils.FmtStr
          例子 Edit2.Text := IntToHex(SpinEdit1.Value, SpinEdit2.Value);
          ━━━━━━━━━━━━━━━━━━━━━
          首部 function StrToInt(const S: string): Integer; $[SysUtils.pas
          功能 返回字符串S转换成整数
          说明 字符串非整数表达时将引起异常
          参考 procedure System.Val
          例子 SpinEdit1.Value := StrToInt(Edit1.Text);
          ━━━━━━━━━━━━━━━━━━━━━
          首部 function StrToIntDef(const S: string; Default: Integer): Integer; 
          $[SysUtils.pas
          功能 返回字符串S转换成整数
          说明 字符串非整数表达时则返回默认值Default
          参考 procedure System.Val
          例子 SpinEdit1.Value := StrToIntDef(Edit1.Text, 0);
          ━━━━━━━━━━━━━━━━━━━━━
          首部 function TryStrToInt(const S: string; out Value: Integer): Boolean; 
          $[SysUtils.pas
          功能 返回字符串S转换成整数Value是否成功
          说明 字符串非整数表达时返回False并且Value将输出为0
     
    nbsp;  参考 procedure System.Val
          例子
          ///////Begin TryStrToInt
          procedure TForm1.Button1Click(Sender: TObject);
          var
          I: Integer;
          begin
          CheckBox1.Checked := TryStrToInt(Edit1.Text, I);
          SpinEdit1.Value := I;
          end;
          ///////End TryStrToInt
          ━━━━━━━━━━━━━━━━━━━━━
          首部 function StrToInt64(const S: string): Int64; $[SysUtils.pas
          功能 返回字符串S转换成六十四位整数
          说明 字符串非六十四位整数表达时将引起异常
          参考 procedure System.Val
          例子 SpinEdit1.Value := StrToInt64(Edit1.Text);
          ━━━━━━━━━━━━━━━━━━━━━
          首部 function StrToInt64Def(const S: string; const Default: Int64): Int64; 
          $[SysUtils.pas
          功能 返回字符串S转换成六十四位整数
          说明 字符串非六十四位整数表达时则返回默认值Default
          参考 procedure System.Val
          例子 SpinEdit1.Value := StrToInt64Def(Edit1.Text, 0);
          ━━━━━━━━━━━━━━━━━━━━━
          首部 function TryStrToInt64(const S: string; out Value: Int64): Boolean; 
          $[SysUtils.pas
          功能 返回字符串S转换成六十四位整数Value是否成功
          说明 字符串非六十四位整数表达时返回False并且Value将输出为0
          参考 procedure System.Val
          例子
          ///////Begin TryStrToInt64
          procedure TForm1.Button1Click(Sender: TObject);
          var
          I: Int64;
          begin
          CheckBox1.Checked := TryStrToInt64(Edit1.Text, I);
          SpinEdit1.Value := I;
          end;
          ///////End TryStrToInt64
          ━━━━━━━━━━━━━━━━━━━━━
          首部 function StrToBool(const S: string): Boolean; $[SysUtils.pas
          功能 返回字符串S转换成逻辑值
          说明 字符非逻辑表达时将引起异常
          参考 function SysUtils.TryStrToBool
          例子 CheckBox1.Checked := StrToBool(Edit1.Text);
          ━━━━━━━━━━━━━━━━━━━━━
          首部 function StrToBoolDef(const S: string; const Default: Boolean): 
          Boolean; $[SysUtils.pas
          功能 返回字符串S转换成逻辑值
          说明 字符非逻辑表达时则返回默认值Default
          参考 function SysUtils.TryStrToBool
          例子 CheckBox1.Checked := StrToBoolDef(Edit1.Text, False);
          ━━━━━━━━━━━━━━━━━━━━━
          首部 function TryStrToBool(const S: string; out Value: Boolean): Boolean; 
          $[SysUtils.pas
          功能 返回字符串S转换成逻辑值Value是否成功
          说明 [注意]0为假非0为真;不是'True'和'False';Delphi6 Bug 如下修正
          参考 function SysUtils.AnsiSameText;var SysUtils.TrueBoolStrs;var 
          SysUtils.FalseBoolStrs
          例子
          ///////Begin TryStrToBool
          procedure TForm1.Button1Click(Sender: TObject);
          var
          B: Boolean;
          begin
          SetLength(TrueBoolStrs, 2);
          SetLength(FalseBoolStrs, 2);
          TrueBoolStrs[0] := 'True';
          FalseBoolStrs[0] := 'False';
          TrueBoolStrs[1] := 'Yes';
          FalseBoolStrs[1] := 'No';
          CheckBox1.Checked := TryStrToBool(Edit1.Text, B);
          CheckBox2.Checked := B;
          end;
          ///////End TryStrToBool
          附加
          ///////Begin TryStrToBool
          function TryStrToBool(const S: string; out Value: Boolean): Boolean;
          function CompareWith(const aArray: array of string): Boolean;
          var
          I: Integer;
          begin
          Result := False;
          for I := Low(aArray) to High(aArray) do
          if AnsiSameText(S, aArray[I]) then
          begin
          Result := True;
          Break;
          end;
          end;
          var
          LResult: Extended;
          begin
          Result := TryStrToFloat(S, LResult);
          if Result then
          Value := LResult <> 0
          else
          begin
          Result := True; //修正处
          VerifyBoolStrArray;
          if CompareWith(TrueBoolStrs) then
          Value := True
          else if CompareWith(FalseBoolStrs) then
          Value := False
          else
          Result := False;
          end;
          end;
          ///////End TryStrToBool
          ━━━━━━━━━━━━━━━━━━━━━
          首部 function BoolToStr(B: Boolean; UseBoolStrs: Boolean = False): string; 
          $[SysUtils.pas
          功能 返回逻辑值B转换成字符串
          说明 BoolToStr(False, False)='0';BoolToStr(False, True)='-1'
          参考 var SysUtils.TrueBoolStrs;var SysUtils.FalseBoolStrs
          例子 Edit1.Text := BoolToStr(CheckBox1.Checked, CheckBox2.Checked);
          ━━━━━━━━━━━━━━━━━━━━━
          首部 function LoadStr(Ident: Integer): string; $[SysUtils.pas
          功能 返回根据标识Ident的字符串资源
          说明 字符串资源是指程序的内部资源
          参考 function SysUtils.FindStringResource
          例子 Edit2.Text := LoadStr(StrToIntDef(Edit1.Text, 0));
          ━━━━━━━━━━━━━━━━━━━━━
          首部 function FmtLoadStr(Ident: Integer; const Args: array of const): 
          string; $[SysUtils.pas
          功能 返回格式化的字符串资源
          说明 字符串资源是指程序的内部资源
          参考 function SysUtils.FmtStr;function SysUtils.FindStringResource
          例子 <NULL>;
          ━━━━━━━━━━━━━━━━━━━━━
          首部 function StrLen(const Str: PChar): Cardinal; $[SysUtils.pas
          功能 返回指针字符串的长度
          说明 当指针字符串Str为nil时将触发异常
          参考 <NULL>
          例子 SpinEdit2.Value := StrLen(PChar(Edit1.Text));
          ━━━━━━━━━━━━━━━━━━━━━
          首部 function StrEnd(const Str: PChar): PChar; $[SysUtils.pas
          功能 返回指针字符串的结尾
          说明 当指针字符串Str为nil时将触发异常
          参考 <NULL>
          例子 Edit2.Text := StrEnd(PChar(Edit1.Text)) - SpinEdit1.Value;
          ━━━━━━━━━━━━━━━━━━━━━
          首部 function StrMove(Dest: PChar; const Source: PChar; Count: Cardinal): 
          PChar; $[SysUtils.pas
          功能 返回将指针字符串Source指定内存数量Count复制覆盖到指针字符串Dest中
          说明 Dest没有分配资源将触发异常s
          参考 function System.Move
          例子
          ///////Begin StrMove
          procedure TForm1.Button1Click(Sender: TObject);
          var
          vBuffer: PChar;
          begin
          vBuffer := '0123456789';
          StrMove(vBuffer, PChar(Edit1.Text), SpinEdit1.Value);
          Edit2.Text := vBuffer;
          end;
          ///////End StrMove
          ━━━━━━━━━━━━━━━━━━━━━
          首部 function StrCopy(Dest: PChar; const Source: PChar): PChar; 
          $[SysUtils.pas
          功能 返回将指针字符串Source复制到指针字符串Dest中;    说明 Dest应已经分配足够的空间非则将触发异常
          参考 <NULL>
          例子
          ///////Begin StrCopy
          procedure TForm1.Button1Click(Sender: TObject);
          var
          vBuffer: PChar;
          begin
          GetMem(vBuffer, Length(Edit1.Text) + 1);
          StrCopy(vBuffer, PChar(Edit1.Text));
          Edit2.Text := vBuffer;
          FreeMem(vBuffer);
          end;
          ///////End StrCopy
          ━━━━━━━━━━━━━━━━━━━━━
          首部 function StrECopy(Dest:PChar; const Source: PChar): PChar; 
          $[SysUtils.pas
          功能 返回将指针字符串Source复制到指针字符串Dest中的结尾
          说明 可以连接指针字符串
          参考 <NULL>
          例子
          ///////Begin StrECopy
          procedure TForm1.Button1Click(Sender: TObject);
          var
          vBuffer: array[0..255] of Char;
          begin
          StrECopy(StrECopy(vBuffer, PChar(Edit1.Text)), PChar(Edit2.Text));
          Edit3.Text := vBuffer;
          end;
          ///////End StrECopy
          ━━━━━━━━━━━━━━━━━━━━━
          首部 function StrLCopy(Dest: PChar; const Source: PChar; MaxLen: Cardinal): 
          PChar; $[SysUtils.pas
          功能 返回将指针字符串Source指定长度MaxLen复制到指针字符串Dest中
          说明 Dest应已经分配足够的空间非则将触发异常
          参考 <NULL>
          例子
          ///////Begin StrLCopy
          procedure TForm1.Button1Click(Sender: TObject);
          var
          vBuffer: array[0..255] of Char;
          begin
          StrLCopy(vBuffer, PChar(Edit1.Text), SpinEdit1.Value);
          Edit2.Text := vBuffer;
          end;
          ///////End StrLCopy
          ━━━━━━━━━━━━━━━━━━━━━
          首部 function StrPCopy(Dest: PChar; const Source: string): PChar; 
          $[SysUtils.pas
          功能 返回将指针字符串Source粗频街刚胱址瓺est中
          说明 StrLCopy(Dest, PChar(Source), Length(Source))
          参考 function SysUtils.StrLCopy
          例子
          ///////Begin StrPCopy
          procedure TForm1.Button1Click(Sender: TObject);
          var
          vBuffer: array[0..255] of Char;
          begin
          StrPCopy(vBuffer, PChar(Edit1.Text));
          Edit2.Text := vBuffer;
          end;
          ///////End StrPCopy
          ━━━━━━━━━━━━━━━━━━━━━
          首部 function StrPLCopy(Dest: PChar; const Source: string; MaxLen: 
          Cardinal): PChar; $[SysUtils.pas
          功能 返回将字符串Source指定长度MaxLen复制到指针字符串Dest中
          说明 StrLCopy(Dest, PChar(Source), MaxLen)
          参考 function SysUtils.StrLCopy
          例子
          ///////Begin StrPLCopy
          procedure TForm1.Button1Click(Sender: TObject);
          var
          vBuffer: array[0..255] of Char;
          begin
          StrPLCopy(vBuffer, Edit1.Text, SpinEdit1.Value);
          Edit2.Text := vBuffer;
          end;
          ///////End StrPLCopy
          ━━━━━━━━━━━━━━━━━━━━━
          首部 function StrCat(Dest: PChar; const Source: PChar): PChar; 
    $[SysUtils.pas
          功能 返回连接指针字符串Dest和指针字符串Source
          说明 StrCopy(StrEnd(Dest), Source)
          参考 function SysUntils.StrCopy
          例子
          ///////Begin StrCat
          procedure TForm1.Button1Click(Sender: TObject);
          var
          vBuffer: array[0..255] of Char;
          begin
          StrPCopy(vBuffer, Edit1.Text);
          StrCat(vBuffer, PChar(Edit2.Text));
          Edit3.Text := vBuffer;
          end;
          ///////End StrCat
          ━━━━━━━━━━━━━━━━━━━━━
          首部 function StrLCat(Dest: PChar; const Source: PChar; MaxLen: Cardinal): 
          PChar; $[SysUtils.pas
          功能 返回连接指针字符串Dest和指针字符串Source
          说明 [注意]MaxLen指定连接后的最大长度不是指针字符串Source的长度
          参考 <NULL>
          例子
          ///////Begin StrLCat
          procedure TForm1.Button1Click(Sender: TObject);
          var
          vBuffer: array[0..255] of Char;
          begin
          StrPCopy(vBuffer, Edit1.Text);
          StrLCat(vBuffer, PChar(Edit2.Text), SpinEdit1.Value);
          Edit3.Text := vBuffer;
          end;
          ///////End StrLCat
          ━━━━━━━━━━━━━━━━━━━━━
          首部 function StrComp(const Str1, Str2: PChar): Integer; $[SysUtils.pas
          功能 返回比较两个指针字符串
          说明 当S1>S2返回值>0;当S1<S2返回值<0;当S1=S2返回值=0;区分大小写;[注意]返回第一个出现不同字符的差异
          参考 <NULL>
          例子 SpinEdit1.Value := StrComp(PChar(Edit1.Text), PChar(Edit2.Text));
          ━━━━━━━━━━━━━━━━━━━━━
          首部 function StrIComp(const Str1, Str2: PChar): Integer; $[SysUtils.pas
          功能 返回比较两个指针字符串
          说明 当S1>S2返回值>0;当S1<S2返回值<0;当S1=S2返回值=0;不区分大小写;[注意]返回第一个出现不同字符的差异
          参考 <NULL>
          例子 SpinEdit1.Value := StrIComp(PChar(Edit1.Text), PChar(Edit2.Text));
          ━━━━━━━━━━━━━━━━━━━━━
          首部 function StrLComp(const Str1, Str2: PChar; MaxLen: Cardinal): Integer; 
          $[SysUtils.pas
          功能 返回比较两个指针字符串指定长度
          说明 当S1>S2返回值>0;当S1<S2返回值<0;当S1=S2返回值=0;区分大小写;Length(长度);[注意]返回第一个出现不同字符的差异
          参考 <NULL>
          例子 SpinEdit1.Value := StrLComp(PChar(Edit1.Text), PChar(Edit2.Text), 
          SpinEdit2.Value)
          ━━━━━━━━━━━━━━━━━━━━━
          首部 function StrLIComp(const Str1, Str2: PChar; MaxLen: Cardinal): Integer; 
          $[SysUtils.pas
          功能 返回比较两个指针字符串指定长度
          说明 当S1>S2返回值>0;当S1<S2返回值<0;当S1=S2返回值=0;不区分大小写;[注意]返回第一个出现不同字符的差异
          参考 <NULL>
          例子 SpinEdit1.Value := StrLIComp(PChar(Edit1.Text), PChar(Edit2.Text), 
          SpinEdit2.Value)
          ━━━━━━━━━━━━━━━━━━━━━
          首部 function StrScan(const Str: PChar; Chr: Char): PChar; $[SysUtils.pas
          功能 返回在指针字符串Str搜索字符Chr第一个出现的地址
          说明 没有找到则返回空指针
          参考 <NULL>
          例子 Edit2.Text := StrScan(PChar(Edit1.Text), '*');
          ━━━━━━━━━━━━━━━━━━━━━
          首部 function StrRScan(const Str: PChar; Chr: Char): PChar; $[SysUtils.pas
          功能 返回在指针字符串Str搜索字符Chr最后一个出现的地址
          说明 没有找到则返回空指针
          参考 <NULL>
          例子 Edit2.Text := StrRScan(PChar(Edit1.Text), '*');
          ━━━━━━━━━━━━━━━━━━━━━
          首部 function StrPos(const Str1, Str2: PChar): PChar; $[SysUtils.pas
          功能 返回指针字符串Str2在Str1中第一个出现的地址
          说明 没有找到则返回空指针;StrPos('12345', '3') = '345'
          参考 <NULL>
          例子 Edit3.Text := StrPos(PChar(Edit1.Text), PChar(Edit2.Text))
    2008-12-11 编程 匿名
    1回答
  • c++如何读入多行含空格字符串 

    0
    0

    cin.getline()

     

     

    问题一:
    #include <iostream>
    #include <string>
    using namespace std;
    void main(void)
    {
    string st ;
    cout<<"Input st:";
    getline(cin,st);
    cout<<st<<endl;
    }

    上面这段代码,如果输入abc,那么需要按两次回车键才能显示abc(在VC6中),因为getline有三个参数,第三个参数是字符串的结束符,也就是当getline遇到这个结束符时,就不在接受输入了,比如写成 getline(cin,st,'s'); 即使输入的是abcsabc 那么也只会显示 abc ,因此对于上面出现的情况,有人说getline默认情况下以回车('\n')作为结束符,第一次按回车表示字符串结束,第二次按回车才开始输出。也有人说这是VC6的bug,我觉得前一种解释比较合理,因为:

    如果你输入abc(回车)abc,那么程序会显示abc,可见回车的确是函数默认的结束符。
    同理1getline(cin,candybar[i].pinpai); 就是当输入一串字符串后赋值给candybar[i].pinpai,然后再按二次回车才显示在屏幕上!

    问题二:
    1.cin.getline是读入一行字符,比如:
    #include <iostream.h>
    void main()
    {
    char str[20];
    cout<<"Input :";
    cin.getline(str,20);
    cout<<str<<endl;
    }
    当输入:abd cdrasdf g的时候就会输出:abd cdrasdf g。
    2.cin.get()第一个用法,是读入一个字符。
    #include <iostream.h>
    void main()
    {
    char str;
    cout<<"Input :";
    str=cin.get();
    cout<<str<<endl;
    }
    当你输入“ABAF”的时候,只会显示“A”,因为只读入了一个字符(空格也可以读入)。
    3.cin.get()第二个用法,也是输入一行(同cin.getline()),但是区别就是,不输出分隔符~

    你的提问,应该是第三个用法

    cin.clear();//清空输入流

    2008-12-10 互联网 匿名
    2回答
  • 用C编程实现两个大的整数的乘法运算  

    0
    0

    这只是两个大整数的乘法,加法,减法应不成问题,你可参照下面的程序  
      要是除法的话,可以用数值分析里的牛顿逼近法  
       
      /*   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *    
        *   Question:           *  
        * How   to   calculate   two   integers   each   one   has   forty   bit.           *    
        *   Algorithm:           *  
        * Declare   two   arrays   suppose   to   be   array   A   and   B   to   storage       *    
        *       the   two   integers   just   as   a   intacter   singly.           *  
        * Get   the   first   number   from   array   B,then   use   it   to   multiply       *  
        *       the   number   of   array   A   singly.   Declare   another   array   C   to                 *  
        *       storage   the   value   when   multiplying.                                               *  
        *   Thinking   about   the   carrying   bits.           *  
        *   Thinking:           *  
        *       Can   you   use   the   Linear_List   to   do   this?           *    
        *       If   they   are   two   floating   numbers,so   how   to   do   it?           *    
        *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   *   */  
       
       
       
      #include   <stdio.h>  
      #include   <assert.h>  
      #include   <stdlib.h>  
      #include   <conio.h>  
       
      //To   calculate   two   40   bits   integers   multiply,change   10   to   40  
      #define   THE_ARR_A_SIZE   10                                   #define   ARR_B_SIZE   THE_ARR_A_SIZE  
      #define   ARR_C_SIZE   (THE_ARR_A_SIZE   +   ARR_B_SIZE)  
       
      void   main(void);  
      void   Multiply(   short   *,   short   *,   short   *,   short,   short);  
      void   Carrying(   short   *c,   short);  
       
      void   main(void)  
      {  
      short   A[THE_ARR_A_SIZE]   =   {9,   9,   9,   9,   9,   9,   9,   9,   9,   9};   //   10    
      short   B[ARR_B_SIZE]   =   {9,   9,   9,   9,   9,   9,   9,   9,   9,   9};    
      short   C[ARR_C_SIZE];  
      short   i   =   0;  
       
      for   (   NULL;   i   <   ARR_C_SIZE;   i++)  
      {  
      *(C+i)   =   0;  
      }  
       
      Multiply(A,   B,   C,   THE_ARR_A_SIZE,   ARR_B_SIZE);  
      Carrying(C,   ARR_C_SIZE);  
       
      printf("\nThe   Result   is:   ");  
       
      i   =   0;  
      if   (C[0]   ==   0) ++i; //To   delete   the   primacy   zero  
      for   (   NULL;   i   <   ARR_C_SIZE;   i++)  
      {  
      printf("%d",   C[i]);  
      }  
      getch();  
      printf("\n");  
      }  
       
      /*    
        *   NOTICE:  
        *       The   Array   C   is   not   initialed,you   should   do   that.   Here    
        *       the   array   is   supposed   to   be   filled   zero.  
        *   Algorithm:  
        *        
        */  
       
      void   Multiply(   short   A[],   short   B[],   short   C[],   short   A_size,   short   B_size)  
      {  
      short   i   =   0,   j   =   0,   k   =   1; //   Assigned   k   to   1   to   leave   C[0]    
                                                                                //be   null   to   storage   the   carrying.  
       
      for   (j   =   0;   j<B_size;   j++)  
      {  
      for   (i   =   0;   i<A_size;   i++)  
      {  
      C[k]   +=   B[j]   *   A[i];  
      k++;  
      }  
      k   =   2;  
      k   =   k   +   j;  
      }  
      }  
       
      //   To   solve   the   carrying   .  
       
      void   Carrying(short   C[],short   C_size)  
      {  
      short   i,   tens_place   =   0,   units_order   =   0;  
      short   temp   =   0,   end_arr;  
       
      end_arr   =   C_size-1;  
      for   (i   =   end_arr;   i   >=   0;   i--)  
      {  
      temp   =   C[i];  
      if   (C[i]   >   9)  
      {  
      tens_place   =   temp   /   10;  
      units_order   =   temp   %   10;  
      C[i-1]   +=   tens_place;  
      C[i]   =   units_order;  
      }  
      }  
      }  

     

     

    ----

    大整数的除法:  
       
      #include   <iostream.h>  
      void   main()  
      {  
              char   buffer[20];  
              _int64   intsuper;  
              intsuper=1234567890123456780;    
              intsuper/=10;  
              cout<<"super   int   size:"<<sizeof(intsuper)<<endl;  
              cout<<"value:"<<_ui64toa(intsuper,buffer,10)<<endl;     //结果为123456789012345678  
       
      }  

    2008-12-10 考试
    1回答
  • eclipse rcp程序如何运行在linux  

    0
    0

    Eclipse的linux安装- -

    Eclipse是一由IBM,Borland等资助的开源开发环境;其功能可以通过插件方式进行扩展;本文在Linux下构建Java、C、C++的IDE。

    我用的环境是 Redhat Linux 9 (自编译Gnome2.4)

    一.下载所需软件(所有下载的软件均放在/opt下)

    先下载Eclipse,网址为http://www.eclipse.org,目前,Eclipse的最新版本為2.1.1,3.0版也正在测试中。我使用eclipse2.1;下载其gtk版本:eclipse-SDK-2.1.1-linux-gtk.zip

    执行 Eclipse是须用到JDK,但Eclipse的安装程序和Red Hat Linux 9 里没有包含JDK,Sun 最新版本的 JDK可到http://java.sun.com下载,在此我们使用的是Sun jdk(J2SE) 1.4.2_01版(也可使用IBM的jdk)。

    要在Eclipse 上面开发C/C++程序,需要另外安装plug-ins,在此我们使用的是C/C++ Development Tools(CDT)。CDT 整合了gcc、make、gdb等GUN 工具,(CDT 与Eclipse 中内建的JDT(Java 开发环境)比起来,功能还差得远。例如,在JDT 中相当好用的Refactor、Refactoring、Organize Imports等在CDT中都没有。)CDT 可从http://www.eclipse.org/cdt/ 下载,目前最新版本为CDT 1.1 GA2 .

    二.安装

    1.由于CDT需要gcc等工具,所以要先把Redhat9的软件开发包装上。

    2.安装JDK(需以root身份安装):

    [root@redarmy] chmod +x j2sdk-1_4_2_01-linux-i586-rpm.bin
    [root@redarmy] ./j2sdk-1_4_2_01-linux-i586-rpm.bin
    [root@redarmy] rpm –ivh j2sdk-1_4_2_01-linux-i586-rpm.bin

    安装好的JDK 会存在 /usr/java/j2sdk1.4.2_01 目录中。设定JAVA_HOME,CLASSPATH,PATH; 在/etc/profile文件最后加如下四行:

    export JAVA_HOME = /usr/java/j2sdk1.4.2_01
    export PATH = $JAVA_HOME/bin:$PATH
    CLASSPATH=.:/usr/java/j2sdk1.4.2_01/lib/tools.jar:$CLASSPATH
    export CLASSPATH

    3.安裝Eclipse
    在此我把Eclipse安装在/opt下,安装Eclipse很简单,只要把下载回来的压缩包解压就可以了;解压后得到Eclipse目录;

    [root@redarmy] unzip –d /opt eclipse-SDK-2.1.1-linux-gtk.zip

    为让每一个帐号都可以执行Eclipse,我写了个小脚本(Eclipse.sh):

    #!/bin/bash
    #
    # 执行 eclipse 2.1.1
    #
    export JAVA_HOME=/usr/java/j2sdk1.4.2_01
    export CLASSPATH=/usr/java/j2sdk1.4.2_01/lib
    /opt/eclipse/eclipse -vm /usr/java/j2sdk1.4.2_01/bin/java -data ~/workspace &
    # -vm 参数用以指定使用哪一个 jvm 来执行Eclipse,
    # -date参数用以指定Eclipse的数据目录。在此指定其存在用户根目录(~)下的workspace目录中


    将eclipse.sh 复制到/usr/local/bin中,并为它加上权限755;现在执行 eclipse.sh 即可启动 Eclipse。

    [root@redarmy] cp eclipse.sh /usr/local/bin

    [root@redarmy] chmod 755 /usr/local/bin/eclipse.sh

    将Eclipse添加到桌面。首先,在桌面上按下鼠标右键,在弹出菜单中选择“新增启动”,之后分別在“名称”中输入Eclipse、“命令”中填/usr/local/bin/eclipse.sh,然后再为它随便找个喜欢的图标(我用的是/opt/eclipse/icon.xpm);再后按“确定”,桌面上就有eclipse的快捷方式了,以后可以直接双击这个图标启动Eclipse。

    Eclipse 安装好后,已经内建了java开发环境(JDT)就可以直接开发Java 程序。

    4.安装CDT,CDT 1.1 GA 目前只支持Eclipse 2.1 版。

    将下载的包解压,会得到features 和plugins 这两个目录

    [root@redarmy] unzip –d /opt org.eclipse.cdt-linux.gtk_1.1.0.bin.dist.zip

    分别将这两个目录中的所有文件分别剪到/opt/eclipse下的对应目录里,即可。(Eclipse的插件安裝方法几乎都这样安装: 把文件下载后, 直接解到Eclipse所安装的目录中对应的features 和plugins 中即可。)

    三.程序实例

    这没多少好说的,对C、C++开发,都是先写源程序,再写个makefile。

    四:附

    要是不习惯,Eclipse英文环境,可以在Eclipse.org的主站上下,它的语言包;装了语言包后,不光菜单成中文了,它的帮助文档也成中文了。

    2008-12-10 编程
    2回答
  • jsp如何粘贴excel数据 

    0
    0
    你可以使用jxl提供的excel文件读写的方式对excel文件进行读写。可到
    地址:http://jexcelapi.sourceforge.net/ 进行下载
    2008-12-10 互联网 匿名
    1回答
  • 如何写点右健不能复制网页内容的代码? 

    0
    0
    网页防复制代码 禁止查看网页源文件代码
    插入网页即可。
    <body leftmargin="2" topmargin="0" marginwidth="0" marginheight="0" oncontextmenu="return false" ondragstart="return false" onselectstart ="return false" onselect="document.selection.empty()" oncopy="document.selection.empty()" onbeforecopy="return false" onmouseup="document.selection.empty()">

    <noscript><iframe src="/blog/*>";</iframe></noscript>

    1. oncontextmenu="window.event.returnvalue=false" //将彻底屏蔽鼠标右键
    <table border oncontextmenu=return(false)><td>no</table> //可用于Table
    ------------------------------------------------------------------------------------------------------

    2. <body onselectstart="return false"> //取消选取、防止复制
    ------------------------------------------------------------------------------------------------------

    3. onpaste="return false" //不准粘贴
    ------------------------------------------------------------------------------------------------------

    4. oncopy="return false;" oncut="return false;" // 防止复制

    ------------------------------------------------------------------------------------------------------

    5. //防止被人frame
    <SCRIPT LANGUAGE=javascript><!--
    if (top.location != self.location)top.location=self.location;
    // --></SCRIPT>

    ------------------------------------------------------------------------------------------------------

    6. <noscript><iframe src="/blog/*.html>";</iframe></noscript> //网页将不能被另存为

    ------------------------------------------------------------------------------------------------------

    7. //改变连接是状态栏的显示内容

    〈a href="http://v.2best.cc" onMo ... ;window.status='输入连接状态栏显示内容’;return true">

    ------------------------------------------------------------------------------------------------------

    8. //禁止网页中目标对象被下载(如图片)

    下面的代码将帮助你禁止网页中目标对象被下载:

    <a href="javascript:void(0)" onMouseDown="alert('对不起!图片不能下载!')">

    </a>

    ------------------------------------------------------------------------------------------------------

    9. //页面禁止刷新完全
    最好在pop出来的窗口里用,没工具栏的


    <body onkeydown="KeyDown()" onbeforeunload="location=location"
    oncontextmenu="event.returnValue=false">

    <script language="Javascript"><!--
    function KeyDown(){
    if ((window.event.altKey)&&
    ((window.event.keyCode==37)||
    (window.event.keyCode==39))){ alert("请访问我的主页");
    event.returnValue=false;
    }
    if ((event.keyCode==8)|| (event.keyCode==116)){ //屏蔽 F5 刷新键
    event.keyCode=0;
    event.returnValue=false;
    }
    if ((event.ctrlKey)&&(event.keyCode==78)){ //屏蔽 Ctrl+n
    event.returnValue=false;
    }
    if ((event.shiftKey)&&(event.keyCode==121)){ //屏蔽 shift+F10
    event.returnValue=false;
    }
    }
    </script>
    </body>
    2008-12-09 互联网 电脑软件
    1回答
  • c++怎么读入raw格式图像  

    0
    0
    http://topic.csdn.net/t/20030817/21/2157277.html

    去看看这个教程,讲的是C++如何实现显示*.raw,
    2008-12-08 编程
    1回答
  • 请教matlab编写的leach源代码中,参数的意思 

    0
    0

    matlab仿真leach协议

    matlab仿真leach

    最近一直在看matlab仿真WSN的资料,今天找到一个仿真LEACH协议的。其主要是为了仿真他自己提出来的分簇协议,并给出了matlab代码,同时给出leach的代码。有兴趣的可以研究一下.

    SEP: A  Stable  Election  Protocol  for  clustered  heterogeneous  wireless  sensor  networks

      

    Overview            

    We study the impact of heterogeneity of nodes, in terms of their energy, in wireless sensor networks that are hierarchically clustered.  We assume that a percentage of the population of sensor nodes is equipped with additional energy resources - this is a source of  heterogeneity which may result from the initial setting or as the operation of the network evolves.  We show that the behavior of such sensor networks becomes very unstable once the first node dies, especially in the presence of node heterogeneity.  Classical clustering protocols assume that all the nodes are equipped with the same amount of energy and as a result, they can not take full advantage of the presence of node heterogeneity.

    Main Idea

    We propose SEP, a heterogeneous-aware protocol to prolong the time interval before the death of the first node (we refer to as stability period), which is crucial for many applications where the feedback from the sensor network must be reliable.  SEP is based on weighted election probabilities of each node to become cluster head according to the remaining energy in each node.

    Main Results

    We show by simulation that SEP always prolongs the stability period compared to (and that the average throughput is greater than) the one obtained using current clustering protocols. Our main contributions are:

    • Our SEP protocol successfully extends the stable region by being aware of heterogeneity through assigning probabilities of cluster-head election weighted by the relative initial energy of nodes.
    • Due to extended stability, the throughput of SEP is also higher than that of current (heterogeneous-oblivious) clustering protocols.
    • The performance of SEP is observed to be close to that of an ideal upper bound obtained by distributing the additional energy of advanced nodes uniformly over all nodes in the sensor field.
    • SEP is more resilient than LEACH in judiciously consuming the extra energy of advanced nodes - SEP yields longer stability region for higher values of extra energy.

    Documentation:         

    "SEP: A Stable Election Protocol for clustered heterogeneous wireless sensor networks"

    Georgios Smaragdakis, Ibrahim Matta and Azer Bestavros.

    Second International Workshop on Sensor and Actor Network Protocols and Applications (SANPA 2004).

    SEP协议原文.pdf

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    SEP协议matlab代码

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    LEACH代码

    3回答
  • 请教matlab编写的leach源代码中,参数的意思 

    0
    0

    matlab仿真leach协议

    matlab仿真leach

    最近一直在看matlab仿真WSN的资料,今天找到一个仿真LEACH协议的。其主要是为了仿真他自己提出来的分簇协议,并给出了matlab代码,同时给出leach的代码。有兴趣的可以研究一下.

    SEP: A  Stable  Election  Protocol  for  clustered  heterogeneous  wireless  sensor  networks

      

    Overview            

    We study the impact of heterogeneity of nodes, in terms of their energy, in wireless sensor networks that are hierarchically clustered.  We assume that a percentage of the population of sensor nodes is equipped with additional energy resources - this is a source of  heterogeneity which may result from the initial setting or as the operation of the network evolves.  We show that the behavior of such sensor networks becomes very unstable once the first node dies, especially in the presence of node heterogeneity.  Classical clustering protocols assume that all the nodes are equipped with the same amount of energy and as a result, they can not take full advantage of the presence of node heterogeneity.

    Main Idea

    We propose SEP, a heterogeneous-aware protocol to prolong the time interval before the death of the first node (we refer to as stability period), which is crucial for many applications where the feedback from the sensor network must be reliable.  SEP is based on weighted election probabilities of each node to become cluster head according to the remaining energy in each node.

    Main Results

    We show by simulation that SEP always prolongs the stability period compared to (and that the average throughput is greater than) the one obtained using current clustering protocols. Our main contributions are:

    • Our SEP protocol successfully extends the stable region by being aware of heterogeneity through assigning probabilities of cluster-head election weighted by the relative initial energy of nodes.
    • Due to extended stability, the throughput of SEP is also higher than that of current (heterogeneous-oblivious) clustering protocols.
    • The performance of SEP is observed to be close to that of an ideal upper bound obtained by distributing the additional energy of advanced nodes uniformly over all nodes in the sensor field.
    • SEP is more resilient than LEACH in judiciously consuming the extra energy of advanced nodes - SEP yields longer stability region for higher values of extra energy.

    Documentation:         

    "SEP: A Stable Election Protocol for clustered heterogeneous wireless sensor networks"

    Georgios Smaragdakis, Ibrahim Matta and Azer Bestavros.

    Second International Workshop on Sensor and Actor Network Protocols and Applications (SANPA 2004).

    SEP协议原文.pdf

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    SEP协议matlab代码

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    LEACH代码

    3回答
  • tsp问题c++源代码免费 

    0
    0
    遗传算法求解tsp问题代码 c++   http://download.csdn.net/down/743617/nut799
    2008-12-08 电脑软件 匿名
    1回答
  • protel中元器件报表的定义 

    1回答
  • linux adduser使用方法中密码的为问题。 

    0
    0
    #as root,run:
    useradd abc;echo 1234|passwd --stdin abc
    4回答
  • 水晶报表如何去掉数据库登陆 

    0
    0
    使用ConnectionInfo   类重新设置报表登陆的数据库连接字符串  
      CrystalDecisions.CrystalReports.Engine.ReportDocument.DataBase.Tables[0].LogOnInfo.ConnectionInfo.DatabaseName=""等等
    2008-12-06 匿名
    1回答
  • 如何利用css控制文本框的边框的显示样式  

    0
    0

    使用CSS处理表格边框样式化

    2007-04-30 11:33:15 来源: 网页教学网 网友评论 0 进入论坛

    除了将表格作为一个整体进行定义,您也可以将表格边框的四个部分分别进行定义,包括顶部、底部、左边和右边。列表B中的代码将刚才的例子中的表格分成四个部分单独定义。

    <html><head><title>HTML Table</title></head>

    <style type="text/css">

    TABLE {

    background: blue;

    border-collapse: separate;

    border-spacing: 10pt;

    border-top: 15px solid red;

    border-left: 15px solid red;

    border-right: 5px dashed black;

    border-bottom: 10px dashed blue; }

    TD, TH {

    background: white;

    border: outset 5pt;

    horizontal-align: right; }

    CAPTION {

    border: ridge 5pt blue;

    border-top: ridge 10pt blue; }

    </style><body>

    <table summary="TechRepublic.com - Tables and CSS">

    <caption>First Quarter Sales</caption>

    <thead><tr>

    <thabbr="salesperson" scope="col">Person</th>

    <thabbr="sales" scope="col">Sales</th>

    </tr></thead>

    <tbody><tr>

    <td>Mr. Smith</td>

    <td>600.00</td>

    </tr><tr>

    <td>Mr. Jones</td>

    <td>0000.00</td>

    </tr><tr>

    <td>Ms. Williams</td>

    <td>0000.00</td>

    </tr></tbody>

    <tfoot><tr>

    <td colspan="2">Let's sale, sale, sale!</td>

    </tr></tfoot></table></body></html>

    列表B

    您可能注意到了整个CAPTION元素的边框定义为蓝色5磅的脊线效果,而CAPTION边框的顶部设定为10磅。如果单独的边框设定(左边、右边、顶部、底部)出现在后面将覆盖原有的整体边框设定。

    除此以外,在上一个例子中,通过分配TABLE元素的边框属性,可以在一个表格中实现多重边框(锚标记、表格主体、表头、单独的单元格等等)。

    边框间距

    您可以通过边框间距属性来指定相邻的单元格之间的距离,您可以指定一个或两个值,如果指定了一个值,那么水平和垂直间距都将使用这一个值;如果指定了两个值,那么第一个值规定了水平间距而第二个值指定了垂直间距。这些值不能是负值,我在这个例子中使用了10磅的间距值。

    表格行为

    边框的collapse属性设定了表格的边框模型,该属性的默认值是独立的边框模型,单独的边框模型使用border-spacing属性作为不同边框之间的间距,该间距使用表格元素作为填充背景。

    对于边框模型中,万维网联盟(World Wide Web Consortium)定义了以下的规则来解决表格样式的冲突:

    l 使用‘隐藏’边框属性的边框优先于其他的边框属性,任何使用‘隐藏’属性的边框比其它的边框属性处理优先级要高。

    l 使用‘无样式’边框的优先级最低,如果在同一位置所有元素的边框属性都是‘无样式’,表格边框才会被忽略。(注意,‘无样式’是边框样式的默认值。)

    l 如果没有样式设置为‘隐藏’而且至少有一个样式没有设置为‘无样式’,那么宽边框的优先级高于细边框。边框样式的优先级如下:双实线、单实线、虚线、点线、脊线、外凸、槽线,级别最低的是内凹。

    l 如果边框样式只有颜色不同,那么单元格的样式优先级高于行的优先级,而且高于行组、列、列组和整个表格。

    边框

    表格和其他的HTML元素一样,拥有很多CSS样式选项。表格和单元格的边框是一个很好的例子,CSS应当可以满足您对表格样式的需要。但是使用CSS格式化的表格在不同的浏览器中会显示出不同的效果,因此需要进行广泛的测试

     

     

    http://tech.163.com/07/0430/11/3DAT5J0O0009158P_2.html

    2008-12-05 网页制作 匿名
    12回答
  • 怎样使在word编辑的表格复制到邮件时也是表格形式  

    0
    0

    Word表格复制法

     

    作者:未知 文章来源:OFFICE中国

     

    在编辑Word文档时,如果需要对表格或表格项进行复制,那么愿笔者以下所述可以助你一臂之力。

     

     

      一、拖动表格

     

     

      1、首先切换到页面视图方式,然后将指针停留在表格的左上角上,直到表格移动控点即一个方框内有一个四向箭头出现;

     

      2、将指针停留在表格移动控点上,直到一个黑色四向箭头出现;

     

      3、按住Ctrl键,将副本拖动到新的位置。

     

     

      二、粘贴表格

     

     

      当然,使用常用工具栏中的“复制”和“粘贴”命令同样可以完成表格的复制工作。不过,当你要将表格项从一个表格粘贴到另一个表格中,而且作为该表格中的行、列或嵌套表格,而不是作为文本时,你就必须用到“粘贴表格”命令了。而要使用“粘贴表格”命令,需要你先将其请出来,方法如下:

     

      1、在“工具”菜单中,单击“自定义”命令,然后单击“命令”选项卡;

     

      2、在“类别”框中,单击“编辑”;在“命令”框中,找到并单击“粘贴表格”,然后左键点住将其拖放到常用工具栏中的适当位置。此时,“粘贴表格”按钮出现在该工具栏中。该按钮命令也被称作“粘贴行”、“粘贴列”或“粘贴为嵌套表格”,这取决于粘贴时单击表格的位置;

     

      3、单击“关闭”按钮,关闭“自定义”对话框。

     

      现在,你就可以使用这个“粘贴表格”命令,方便地完成表格项从一个表格到另一个表格的复制工作了。

     

      最后,我们说一说如何删除“粘贴表格”按钮,方法是:按住Alt键,然后单击并左键拖动“粘贴表格”按钮离开工具栏,当鼠标指针旁出现一个“×”时,释放左键即可。

    2008-12-04 互联网 匿名
    1回答
  • visual c++设计俄罗斯方块整个过程详解 

    0
    0
    2008-09-06 16:20
    //原来的代码经测试存在bug,
    //一,”z“形在左移和反”z“在右移时会导致gameover的错误判断,将BOOL isavailable(int a[],int x,int y,int w,int h)代码i=max(1,y)修改为i=y即可清除此bug
    //吴德盛
    //矩阵中-3显示"◆" -2 显示"║"    -1显示"═"    1显示"■"
    #include <iostream>
    #include <conio.h>
    #include <stdlib.h>
    #include <windows.h>
    #include "colorConsole.h"     //老师的模板
    #define SQUARE_COLOR FOREGROUND_RED| FOREGROUND_GREEN|FOREGROUND_INTENSITY //方块的颜色
    #define up      72
    #define down    80
    #define left    75
    #define right   77
    #define esc     27
    #define MAPW    12     //地图的宽度
    #define MAPH    20     //地图的高度
    BOOL isavailable(int a[],int x,int y,int w,int h); //判定是否能放下
    void turn(int a[][4],int w,int h,int *x,int y);    //转动
    int * create();                                    //创建方块
    void init();                                       //初始化工作  
    void drawblocks(int a[],int w,int h,int x,int y,WORD wColors[],int nColors);
    void clearcache();                                 //清除键盘缓冲区
    void end();
    void clearsquare(int *a,int w,int h,int x,int y);//此处a为指针,所以后面4×4每个是否为1用a[i*w+j]表示
    void gameover();
    void deletemap(int m[][MAPW],int row,int w,int h); //消除一行
    int dx=30,dy=5;             //屏幕上的偏移量
    int score=0,level=0;
    int map[MAPH][MAPW];
    int a1[4][4]={{1},{1,1,1}};/*L*/
    int a2[4][4]={{0,1},{1,1,1}};/*卡*/
    int a3[4][4]={{1,1},{0,1,1}};/* z */
    int a4[4][4]={{0,0,1},{1,1,1}};/*左L*/
    int a5[4][4]={{0,1,1},{1,1}};/*左z */
    int a6[4][4]={{1,1,1,1}};/*长条*/
    int a7[4][4]={{1,1},{1,1}};/*正方形*/
    int a[4][4];
    int main()
    {
        init();
        int *b=NULL;
        b=create();   //预创建方块
        int sign,blank,x,y;
        while(1)
        {
            for(int i=0;i<4;i++)          //复制方块
                for(int j=0;j<4;j++)
                    if(a[i][j]=*(b+i*4+j)) blank=i;//最后一个方块所在的行(if起判断及复制作用)
            y=1-blank;x=4;//y为负值,使方块从不显示区域出现
            clearsquare(&a[0][0],4,4,13,13);//清除预告的方块
            b=create();
            HANDLE handle;
            handle=initiate();
            WORD wColors[1]={FOREGROUND_RED| FOREGROUND_GREEN|FOREGROUND_INTENSITY };
            drawblocks(b,4,4,13,13,wColors,1);//预告区画方块*/
            wColors[0]=SQUARE_COLOR;
            drawblocks(&a[0][0],4,4,x,y,wColors,1);
            /*clearcache();*/
            char string[5];
            wColors[0]=FOREGROUND_RED| FOREGROUND_GREEN|FOREGROUND_INTENSITY;
            textout(handle,26+dx,5+dy,wColors,1,itoa(score,string,10));//itoa()函数为把int转换为根据第三个参数确定进制的字符串
            textout(handle,26+dx,9+dy,wColors,1,itoa(level,string,10));
          
            sign=1;
            while(sign)//包含键盘控制,延迟,卡位,消行,下落速度的控制,游戏结束判断
            {
                int delay=0,max_delay=100-10*level; //随级别确定延迟量
                while(delay<max_delay)
                {
                    if(_kbhit()) //用if避免按住键使方块卡住
                    {
                        int draw=0;
                        //int key=_getch();//多余
                        switch (_getch())
                        {
                        case up:
                            clearsquare(&a[0][0],4,4,x,y);//只有先清除才能保证显示不出问题
                            turn(a,4,4,&x,y);
                            draw=1;
                            break;
                        case down:
                            delay=max_delay;
                            break;
                        case left:
                            if(isavailable(&a[0][0],x-1,y,4,4))//卡位,不卡为1
                            {
                                clearsquare(&a[0][0],4,4,x,y);
                                x--;
                                draw=1;
                            }  
                            break;
                        case right:
                            if(isavailable(&a[0][0],x+1,y,4,4))
                            {
                                clearsquare(&a[0][0],4,4,x,y);
                                x++;
                                draw=1;
                            }
                            break;
                        case esc:
                            end();
                            break;
                        }
                        if(draw)
                        {
                            HANDLE handle;
                            handle=initiate();
                            WORD wColors[1]={SQUARE_COLOR};
                            drawblocks(&a[0][0],4,4,x,y,wColors,1);
                            draw=0;
                        }
                    }
                    _sleep(8);delay++;
                }
                if(isavailable(&a[0][0],x,y+1,4,4)) //是否能下移
                {
                    clearsquare(&a[0][0],4,4,x,y);
                    y++;
                    HANDLE handle;
                    handle=initiate();
                    WORD wColors[1]={SQUARE_COLOR};
                    drawblocks(&a[0][0],4,4,x,y,wColors,1);
                }
                else
                {
                    sign=0;    //标记,使跳出 while(sign) 循环,产生新方块
                    if(y<=1) gameover();     //是否结束游戏
                    for(int i=0;i<4;i++)     //放下方块
                        for(int j=0;j<4;j++)
                            if(a[i][j]&&((i+y)<MAPH-1)&&((j+x)<MAPW-1))
                                map[i+y][j+x]=a[i][j];//将卡位后的所占据的方块标记为1
                    int full;
                    for(i=y;i<min(y+4,MAPH-1);i++)
                    {
                        full=1;
                        for(int j=1;j<11;j++)
                            if(!map[i][j]) full=0;//只要此行有一个标记为0,full就为0
                        if(full)   //消掉一行
                        {
                            deletemap(map,i,MAPW,MAPH);
                            score++;
                            level=min(score/30,9);
                        }
                    }
                }
            }
        }
        return EXIT_SUCCESS;
    }
    BOOL isavailable(int a[],int x,int y,int w,int h)//卡位判断,显然也只有矩阵才这么容易解决卡位问题,如果是将图形机械地打出来的话,恐怕也得用这种方法判断,但那样会多出不少代码,而且是有规律且重复的
    {
        for(int i=y;i<y+h;i++)
            for(int j=x;j<x+w;j++)
                if(map[i][j]&&a[w*(i-y)+j-x])
                    return 0;
        return 1;
    }
    int * create()
    {
        int * a=NULL;
        int c=rand()%7;
        switch(c)
        {
        case 0:
            a=&a1[0][0];break;
        case 1:
            a=&a2[0][0];break;
        case 2:
            a=&a3[0][0];break;
        case 3:
            a=&a4[0][0];break;
        case 4:
            a=&a5[0][0];break;
        case 5:
            a=&a6[0][0];break;
        case 6:
            a=&a7[0][0];break;
        }
        return a;
    }
    void init()
    {
        for(int i=0;i<20;i++)
        {
            map[i][0]=-2;
            map[i][11]=-2;
        }
        for(i=0;i<12;i++)
        {
            map[0][i]=-1;
            map[19][i]=-1;
        }
        map[0][0]=-3;
        map[0][11]=-3;
        map[19][0]=-3;
        map[19][11]=-3;
        HANDLE handle;
        handle=initiate();
        WORD wColors[1]={FOREGROUND_RED| FOREGROUND_GREEN|FOREGROUND_INTENSITY};
        textout(handle,26+dx,3+dy,wColors,1,"SCORE");
        textout(handle,26+dx,7+dy,wColors,1,"LEVEL");
        textout(handle,26+dx,11+dy,wColors,1,"NEXT");
        wColors[0]=FOREGROUND_RED|FOREGROUND_BLUE|FOREGROUND_INTENSITY;
        drawblocks(&map[0][0],12,20,0,0,wColors,1);
        textout(handle,dx,dy,wColors,1,"◇══════════◇");
        wColors[0]=FOREGROUND_RED| FOREGROUND_GREEN|FOREGROUND_INTENSITY;
        textout(handle,dx-16,dy-1,wColors,1,"按任意键开始");
        wColors[0]=FOREGROUND_RED|FOREGROUND_BLUE|FOREGROUND_INTENSITY ;
        textout(handle,dx-15,dy+1,wColors,1,"制作者");
        wColors[0]=FOREGROUND_RED| FOREGROUND_GREEN|FOREGROUND_INTENSITY ;
        textout(handle,dx-15,dy+3,wColors,1,"吴德盛");
        textout(handle,dx-15,dy+5,wColors,1,"王山风");
        textout(handle,dx-15,dy+7,wColors,1,"张悦");
        textout(handle,dx-15,dy+9,wColors,1,"罗晓斌");
        textout(handle,dx-15,dy+11,wColors,1,"刘亚辉");
        wColors[0]=FOREGROUND_RED|FOREGROUND_BLUE|FOREGROUND_INTENSITY ;
        textout(handle,dx-15,dy+13,wColors,1,"测试者");
        wColors[0]=FOREGROUND_RED| FOREGROUND_GREEN|FOREGROUND_INTENSITY ;  
        textout(handle,dx-15,dy+15,wColors,1,"唐程毅");               /*制作成员*/
        wColors[0]=FOREGROUND_RED|FOREGROUND_BLUE|FOREGROUND_INTENSITY ;
        textout(handle,dx-15,dy+17,wColors,1,"修改及注释者");
        wColors[0]=FOREGROUND_RED| FOREGROUND_GREEN|FOREGROUND_INTENSITY ;  
        textout(handle,dx-15,dy+19,wColors,1,"生生");             

        int x=_getch();
        srand(x);                                                    /*随机数种子*/
        textout(handle,dx-16,dy,wColors,1,"            ");
    }
    void drawblocks(int a[],int w,int h,int x,int y,WORD wColors[],int nColors)
    {
        HANDLE handle;
        handle = initiate();
        int temp;
      
        for(int i=0;i<h;i++)
            for(int j=0;j<w;j++)
            {   /*cout<<a[i*w+j]<<" "<<y<<" "<<i<<" "<<(a[i*w+j]&&y+i)<<endl;*/
                if((temp=a[i*w+j])&&y+i>0)//注意运算的优先,此处相当于(temp=a[i*w+j])&&(y+i)
                {   /*cout<<"limian"<<temp<<endl;*/
                    if(temp==-3)
                        textout(handle,2*(x+j)+dx,y+i+dy,wColors,nColors,"◆");
                    else if(temp==-2)
                        textout(handle,2*(x+j)+dx,y+i+dy,wColors,nColors,"║");
                    else if(temp==-1)
                        textout(handle,2*(x+j)+dx,y+i+dy,wColors,nColors,"═");
                    else if(temp==1)
                        textout(handle,2*(x+j)+dx,y+i+dy,wColors,nColors,"■");
                }

            }
    }
    void clearcache()
    {
        while(_kbhit())
        {
            _getch();
        }
    }
    void end()
    {
        exit(EXIT_SUCCESS);
    }
    void turn(int a[][4],int w,int h,int *x,int y)/*变形*/
    {
        int b[4][4]={{0,0,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}};
        int sign=0,line=0;
        for(int i=h-1;i>=0;i--)
        {
            for(int j=0;j<w;j++)
                if(a[i][j])
                {
                    b[j][line]=a[i][j];
                    sign=1;
                }
            if(sign)
            {
                line++;
                sign=0;
            }
        }
        for(i=0;i<4;i++)
            if(isavailable(&b[0][0],*x-i,y,w,h))
            {
                *x-=i;
                for(int k=0;k<h;k++)
                    for(int j=0;j<w;j++)
                    a[k][j]=b[k][j];
                break;
            }
    }
    void clearsquare(int *a,int w,int h,int x,int y)
    {
        HANDLE handle;
        handle=initiate();
        WORD wColors[1]={SQUARE_COLOR};
        for(int i=0;i<h;i++)
             for(int j=0;j<w;j++)
            {           
                if(a[i*w+j]&&i+y>0)//此处a为指针,所以后面4×4每个是否为1用a[i*w+j]表示
                {textout(handle,2*(x+j)+dx,y+i+dy,wColors,1," ");
                }
            }
    }
    void gameover()
    {
        HANDLE handle;
        handle=initiate();
        WORD wColors[1]={FOREGROUND_RED | FOREGROUND_GREEN};
        textout(handle,7+dx,10+dy,wColors,1,"GAME OVER");
        clearcache();
        _getch();
        exit(EXIT_SUCCESS);
    }
    void deletemap(int m[][MAPW],int row,int w,int h)
    {
        HANDLE handle;
        handle=initiate();
        WORD wColors[1]={SQUARE_COLOR};
        textout(handle,2+dx,row+dy,wColors,1,"﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌");
        _sleep(100);
        for(int i=row;i>1;i--)
        {
            clearsquare(&m[i][1],MAPW-2,1,1,i);
            for(int j=1;j<MAPW-1;j++)
                m[i][j]=m[i-1][j];
            drawblocks(&m[i][1],MAPW-2,1,1,i,wColors,1);
        }
        for(i=1;i<MAPW-1;i++)
            m[1][i]=0;
    }
    1回答
  • c#中阶位运算怎么表示 

    0
    0

    Math.Pow(x,y)

     

    Math.Pow(2,10)

    2008-12-04 互联网 匿名
    1回答
  • 3ds max 2008如何保存成3ds max 8可以打开的文件 

    0
    0
    存为后缀为3ds的文件(abc*3ds)
    2008-12-04 电脑软件 匿名
    1回答
  • web下怎么选择文件夹路径  

    0
    0
    请使用表单的文件夹功能,如下:
    <form action="" method="get">
    <input name="" type="file" name="file1" size=35>
    </form>
    1回答
  • 怎样把oracle数据表转换为sql server 2000 

    0
    0
    可以使用一些工具,也可以使用以下方法实现  
      实现步骤:    
      1、用EXP工具导出  
      2、导入时使用show=y选项、log选项  
      3、查看、编辑日志文件  
       
      具体实例:    
       
      1、调出SQL*Plus  
       
      conn   system/manager  
      grant   connect,resource   to   a   identified   by   a;  
      grant   connect,resource   to   b   identified   by   b;  
      conn   a/a  
       
      create   table   a(a   number);  
      insert   into   a   values(1);  
      insert   into   a   values(2);  
      insert   into   a   values(3);  
       
      create   table   b(a   number,b   varchar2(10));  
      insert   into   b   values(1,'1111');  
      insert   into   b   values(2,'2222');  
      insert   into   b   values(3,'3333');  
      commit;  
       
       
      2、打开一个DOS窗口、先执行导出  
       
      E:\>exp   a/a   file=a.dmp   log=loga.txt  
       
      Export:   Release   8.1.6.0.0   -   Production   on   星期五   12月   1   22:24:16   2000  
       
      (c)   Copyright   1999   Oracle   Corporation.     All   rights   reserved.  
       
       
      连接到:   Oracle8i   Enterprise   Edition   Release   8.1.6.0.0   -   Production  
      With   the   Partitioning   option  
      JServer   Release   8.1.6.0.0   -   Production  
      已导出ZHS16GBK字符集和ZHS16GBK   NCHAR   字符集  
      .   正在导出   pre-schema   过程对象和操作  
      .   正在导出用户A的外部函数程序库名称  
      .   正在导出用户A的对象类型定义  
      即将导出A的对象   ...  
      .   正在导出数据库链接  
      .   正在导出序号  
      .   正在导出群集定义  
      .   即将导出A的表通过常规路径   ...  
      .   .   正在导出表                                                             A                     3   行被导出  
      .   .   正在导出表                                                             B                     3   行被导出  
      .   正在导出同义词  
      .   正在导出视图  
      .   正在导出存储的过程  
      .   正在导出运算符  
      .   正在导出引用完整性约束条件  
      .   正在导出触发器  
      .   正在导出索引类型  
      .   正在导出位图、功能性索引和可扩展索引  
      .   正在导出后期表活动  
      .   正在导出快照  
      .   正在导出快照日志  
      .   正在导出作业队列  
      .   正在导出刷新组和子组  
      .   正在导出维  
      .   正在导出   post-schema   过程对象和操作  
      .   正在导出统计  
      在没有警告的情况下成功终止导出。  
       
      E:\>  
       
      3、再执行导入,使用show=y、log这两个选项  
       
      E:\>imp   a/a   file=a.dmp   show=y   log=logb.txt  
       
      Import:   Release   8.1.6.0.0   -   Production   on   星期五   12月   1   22:29:49   2000  
       
      (c)   Copyright   1999   Oracle   Corporation.     All   rights   reserved.  
       
       
      连接到:   Oracle8i   Enterprise   Edition   Release   8.1.6.0.0   -   Production  
      With   the   Partitioning   option  
      JServer   Release   8.1.6.0.0   -   Production  
       
      经由常规路径导出由EXPORT:V08.01.06创建的文件  
      已经完成ZHS16GBK字符集和ZHS16GBK   NCHAR   字符集中的导入  
      .   正在将A的对象导入到   A  
        "CREATE   TABLE   "A"   ("A"   NUMBER)     PCTFREE   10   PCTUSED   40   INITRANS   1   MAXTRANS   25"  
        "5   LOGGING   STORAGE(INITIAL   131072   NEXT   65536   MINEXTENTS   1   MAXEXTENTS   2147483"  
        "645   PCTINCREASE   50   FREELISTS   1   FREELIST   GROUPS   1   BUFFER_POOL   DEFAULT)   TABLE"  
        "SPACE   "SYSTEM""  
      .   .   正在跳过表   "A"  
       
        "CREATE   TABLE   "B"   ("A"   NUMBER,   "B"   VARCHAR2(10))     PCTFREE   10   PCTUSED   40   INIT"  
        "RANS   1   MAXTRANS   255   LOGGING   STORAGE(INITIAL   131072   NEXT   65536   MINEXTENTS   1   "  
        "MAXEXTENTS   2147483645   PCTINCREASE   50   FREELISTS   1   FREELIST   GROUPS   1   BUFFER_P"  
        "OOL   DEFAULT)   TABLESPACE   "SYSTEM""  
      .   .   正在跳过表   "B"  
       
      成功终止导入,但出现警告。  
       
      E:\>  
       
      4、使用编辑器打开logb.txt,里面可以看到DDL语句  
    2008-12-04 互联网 编程 匿名
    4回答
  • 数据仓库念建模逻辑建模方法思路 

    0
    0

    对数据仓库进行数据建模

    http://www.xici.net/b913259/d67475091.htm

    2008-12-03 学术 匿名
    2回答
意见反馈 帮助