聪明的程序员用DELPHI这是一句古老的话,在程序员和学校世代相传,Delphi的便捷和操作系统的衔接堪称天衣无缝,下面我列举几条DELPHI的变成小技巧给大家分享!希望读者们有好的技巧请别客气,拿出来一起分享!欢迎跟帖!
1、判断一个字符串是否包含于另外一个字符串的方法
      例如:if pos('ab','abcd')<>0 then
            messagedlg('ab是包含于abcd',mtConfirmation,[mbYes,       mbNo],0);
      pos(obj,target) 在target字符串中找出第一个出现obj的第一个字符位置,如果找不到,返回0.2、如何使窗口全屏,类似游戏一样,而不是窗口的最大化!
      (1) BorderStyle 为 bsNone
      (2) Windowstate 为 wsMaximized
      (3) 退出时可加一个按钮之类的,写上 close 即可退出。3、数字格式化输出
      format('%8.2f',[123.456]),返回字符串' 123.46'。4、播放一个wav文件
      use mmsystem;
      SndPlaySound('hello.wav',SND_FILENAME or SND_SYNC);5、InputBox,InputQuery和ShowMessage函数的威力
      uses dialogs;
      var s,s1:string;
          b:boolean;
      begin
        s:=trim(Inputbox('NewPassword','Password','masterkey'));
        b:=s<>'';
        s1:=s;
        if b then b:=InputQuery('Confirm Password','Password',s1);
        if not b or (s1<>s) then ShowMessage('Password       Failed');
      end;6、几个有关子目录的操作的过程
      MkDir(str);   ChDir(str);   GetDir(DriveID,str);       SetCurrentDir(str);
      IOResult --上面几个过程调用成功即返回0值7、将一个可视控件变成图形类型
      例如将一个带背景的LABEL变成一个TIMAGE图片类型,可以这样做:
        image1.width:=label1.width;
        image1.height:=label1.height;
        label1.perform(WM_PAINT,image1.Canvas.Handle,0);
8、如何得到字符的ASCII值
        得到字符的ASCII值,可以用如下语句:
          var: a:integer;
            string1:string;
          begin
            string1:='ABC';
            a:=byte(string[1]); {此时就得到'A'的ASCII值}
          end;9、动态更新DBGrid的颜色
        例如,如果一个城市的人口大于200万,我们就让它显示为蓝色。使用的控件事件为DBGrid.OnDrawColumeCell:
      procedure TForm1.DBGrid1DrawColumnCell(Sender:       TObject; const Rect:TRect;DataCol: Integer; Column: TColumn; State:       TGridDrawState);
      begin
        if Table1.FieldByName('Population').AsInteger       > 20000000 then           DBGrid1.Canvas.Font.Color := clBlue;
        DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);       end;10、获得命令行参数
        1. 取得命令列参数的个数: ParamCount 函数
        2. 呼叫 ParamStr(0), 传回执行档的档名(含路径)
        3. 呼叫ParamStr(n), 传回第n个参数的内容
        例子:
      procedure TForm1.FormCreate(Sender: TObject);
      var
       ix: integer;
      begin
       Memo1.Lines.Clear;
       if ParamCount = 0 then
        Memo1.Lines.Add('没有参数')
       else
       begin
        Memo1.Lines.Add('档名:' + ParamStr(0));
        for ix := 1 to ParamCount do
        Memo1.Lines.Add(ParamStr(ix));
       end;
      end;

解决方案 »

  1.   

    var
      a:integer;
      string1:string;
    begin
      string1:='ABC';
      a:=byte(string1[1]); {此时就得到'A'的ASCII值}//少了个1
    end;
      

  2.   

    var: a:integer;//<-------确定这个声明可以通过?
      

  3.   

    聪明的程序员用DELPHI这是一句古老的话,在程序员和学校世代相传
    --------
    当年被忽悠的不轻,直接导致近几年一直工资不见涨:)
      

  4.   


    修正一下,有关根据判断变色的问题,楼主语句里有个小错误,正确代码如下:procedure TForm2.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    begin
      if ADOQuery1.FieldByName('金额').AsInteger>5000 then
      //DBGrid1.Canvas.Brush.Color:=clRed;    //修改行背景颜色
      //DBGrid1.Canvas.Font.Color:=clBlue;  //修改行字体颜色
      DBGrid1.DefaultDrawDataCell(Rect, Column.Field, State);end;
      

  5.   

    广告语而已。
    我的理解,并不是说用了 Delphi 的就是“聪明的程序员”。
    是说 Delphi 提供给我们的 n 多“聪明”的编程技巧,希望我们学会而变得“聪明”。不是常有人说吗?
    同样学,Delphi VC 起步快的是 D。但是过他10年20年编程经验后,两者的差距就不大了。
    为什么不大?因为大家的编程思路是一样一样一样d呀~
      

  6.   

    技巧Mark一下
      

  7.   

    呵呵~~~一直在用Delphi啊!
    觉得还不错!
      

  8.   

    procedure TForm1.N8Click(Sender: TObject);
    var
        rl: Cardinal;
        hToken: Cardinal;
        tkp: TOKEN_PRIVILEGES;
    begin
          ShowMessage('请确定重新启动计算机!');
         OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken);
        if LookupPrivilegeValue(nil, 'SeShutdownPrivilege', tkp.Privileges[0].Luid) then
        begin
          tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
          tkp.PrivilegeCount := 1;
          AdjustTokenPrivileges(hToken, False, tkp, 0, nil, rl);
        end;
        ExitWindowsEx(2,0);end;
      

  9.   

    procedure TForm1.N9Click(Sender: TObject);
    var
        rl: Cardinal;
        hToken: Cardinal;
        tkp: TOKEN_PRIVILEGES;
    begin
     ShowMessage('请确定关闭计算机!');
        OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken);
        if LookupPrivilegeValue(nil, 'SeShutdownPrivilege', tkp.Privileges[0].Luid) then
        begin
          tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
          tkp.PrivilegeCount := 1;
          AdjustTokenPrivileges(hToken, False, tkp, 0, nil, rl);
          ExitWindowsEx(EWX_FORCE+1,0);
        end;
    end;
      

  10.   

    procedure TForm1.N11Click(Sender: TObject);
    var
        rl: Cardinal;
        hToken: Cardinal;
        tkp: TOKEN_PRIVILEGES;
    begin
        ShowMessage('请确定切断电源!');
         OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken);
    if LookupPrivilegeValue(nil, 'SeShutdownPrivilege', tkp.Privileges[0].Luid) then
        begin
          tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
          tkp.PrivilegeCount := 1;
          AdjustTokenPrivileges(hToken, False, tkp, 0, nil, rl);
        end;
        ExitWindowsEx(8,0);
    end;
      

  11.   

    新人驾到~DFW不行拉,都是招聘,没个技术问题,学不到撒了,来这里混混!报道!
      

  12.   

    顶之,在用Delphi,用起来还是很方便的
      

  13.   

    1.
    edit一个,加一个button,放在一起,做成一个combobox的样子。。
    再加一个treeview
    2.有现成的控件你找找。
      

  14.   

    呼呼,最近才开始学习delphi,很有用!