[返回]
中国计算机报2000年第94期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;