ccidnet????

出版日期:2000-12-18 总期号:982 本年期号:94

本期导读
要闻综合
电脑工作室
渠道与市场
产品与应用
软件与服务
InfoCD
Delphi开发应用程序答疑

邱宗英

  问:在应用程序中,不利用APE函数,能否实现从.INI文件中读写字符?

  答:通常情况下,我们都是利用Windows的API函数来实现读写.INI文件的,但我们不用API函数也能实现从.INI文件中读写字符。源程序如下:

  从.INI文件中获取字符的方法:

  var MyIni: TIniFile;

  begin

  MyIni := TIniFile.Create('WIN.INI');//调用的文件名

  edit1.text:=MyIni.ReadString('Desktop', 'Wallpaper', '');//取得字符

  end;

  向.INI文件中写入字符的方法:

  var MyIni: TIniFile;

  begin

  MyIni := TIniFile.Create('WIN.INI');//调用的文件名

  DelphiIni.WriteString('Desktop', 'Wallpaper', 'c:\test.bmp');

  end;

  

  问:在Delphi应用程序中,如何实现字符串的逆排序?

  答:这并不是一个复杂问题,但却是常常碰到,我们可以自己设计一个字符串逆排序函数,并在应用程序中调用它。源程序如下:

  function ReverseString( s : string ) : string;

  var

   i : integer;

   s2 : string;

  begin

   s2 := '';

   for i := 1 to Length( s ) do

   begin

   s2 := s[ i ] + s2;

   end;

   Result := s2;

  end;

  

  问:Delphi应用程序开发中,如何屏蔽屏幕保护程序?

  答:如果你的程序需要持续运行,你需要在运行时暂时关闭屏幕保护程序,这时我们可以编程自动实现屏蔽屏幕保护程序。程序如下:

  在“Public declarations”部分添加如下代码:

  procedure AppMessage(

   var Msg : TMsg;

   var bHandled : boolean );

  在“implementation”部分添加如下代码:

  procedure TForm1.AppMessage(

   var Msg : TMsg;

   var bHandled : boolean );

  begin

   if((WM_SYSCOMMAND = Msg.Message) and (SC_SCREENSAVE = Msg.wParam))

   then

   bHandled := True;

  end;

  

  问:需要Windows在启动时自动运行开发的Delphi应用程序,如何实现呢?

  答:我们只需要将应用程序的路径添加到注册表“HKEY_LOCALMACHINE\SOFTWARE\Microsoft\Windows\Current

  Version\Run”位置中,即可实现该功能,在程序中我们可以使用TRegIniFile或者TRegistry来实现。比如我们要运行OICQ,我们可利用如下代码:

      Uses Registry;

      Var

        RegF:TRegistry;

      begin

       RegF:=TRegistry.Create;

       RegF.RootKey:=HKEY_LOCAL_MACHINE;

         try

  RegF.OpenKey'SOFTWARE\Microsoft\Windows\CurrentVersion\Run',True);

  RegF.WriteString('OICQ','"D:\Program Files\Oicq\Oicq.exe"');

         except

          …

          End;

       RegF.Close;

        RegF.Free;

      end;

  

  问:在elphi应用程序中,如何用代码实现文件关联?

  答:我们想用代码实现文件关联,就需要从注册表入手来加以解决。

  比如下面的代码会把后缀是.jul的文件和Notepad关联在一起:

  procedure TForm1.Button1Click(Sender: TObject);

  var

   lphKey: HKEY;

   sKeyName: string;

   sKeyValue: string;

  begin

   sKeyName := 'JulFile';

   sKeyValue := '个人文档';

   RegCreateKey(HKEY_CLASSES_ROOT, pchar(sKeyName), lphKey);

   RegSetValue(lphKey, '', REG_SZ, pchar(sKeyValue), 0);

   sKeyName := '.Jul';

   sKeyValue := 'JulFile';

   RegCreateKey(HKEY_CLASSES_ROOT, pchar(sKeyName), lphKey);

   RegSetValue(lphKey, '', REG_SZ, pchar(sKeyValue), 0);

   sKeyName := 'JulFile';

   sKeyValue := 'c:\Win98\NotePad.exe %1';

   RegCreateKey(HKEY_CLASSES_ROOT, pchar(sKeyName), lphKey);

   RegSetValue(lphKey, 'shell\open\command', REG_SZ,

   pchar(sKeyValue), MAX_PATH);

  end;