help(100分)

  • 主题发起人 主题发起人 zhshgan
  • 开始时间 开始时间
Z

zhshgan

Unregistered / Unconfirmed
GUEST, unregistred user!
想编写一个运行一次累加一个数的程序:
即当程序第一次运行时,某变量为的值为1,当我再一次运行该程序时,该变量的值为2,第三次的时候,该值变成3,以此类推。
我知道在c里面可以用声明一个静态变量来实现,可在delphi里我不知道怎么实现,
请各位大虾给个简单点的例子帮我实现。
 
DELPHI中也有静态变量,但实现不了你的功能,因为程序一退出就全完了,只能把你要
保存的数据保存在数据库,文件或注册表中
保存在注册表的例子:
function LoadSetting:boolean;
//从注册表读取保存的设置
var
Reg: TRegistry;
begin
Reg := TRegistry.Create;
try
with Reg do
begin
RootKey:=HKEY_LOCAL_MACHINE;
if OpenKey(SREGSubKey+SAppName,True) then
begin
if ValueExists(SREGbSaveUserName) then
bSaveUserName := ReadBool (SREGbSaveUserName);
if ValueExists(SREGbUseFlatHint) then
bUseFlatHint := ReadBool (SREGbUseFlatHint);
if ValueExists(SREGbUseHint) then
bUseHint := ReadBool (SREGbUseHint);
if ValueExists(SREGbUseXPMenu) then
bUseXPMenu := ReadBool (SREGbUseXPMenu);
if ValueExists(SREGclBackColor) then
clBackColor := ReadInteger(SREGclBackColor);
if ValueExists(SREGiDrawStyle) then
iDrawStyle := ReadInteger(SREGiDrawStyle);
if ValueExists(SREGiDropDownCount) then
iDropDownCount := ReadInteger(SREGiDropDownCount);
if ValueExists(SREGsBackImage) then
sBackImage := ReadString (SREGsBackImage);
if ValueExists(SREGsDataBaseName) then
sDataBaseName := ReadString (SREGsDataBaseName);
if ValueExists(SREGsUserName) then
sUserName := ReadString (SREGsUserName);
CloseKey;
end;
if length(sBackImage)=0 then
begin
RootKey:=HKEY_CURRENT_USER;
if OpenKey('Control Panel/Desktop',True) then
begin
if ValueExists('Wallpaper') then
sBackImage:=ReadString('Wallpaper');
CloseKey;
end;
end;
//if
end;
//with
result:=true;
finally
Reg.Free;
end;
end;

function SaveSetting:boolean;
//保存当前设置到注册表
var
Reg: TRegistry;
begin
Reg := TRegistry.Create;
try
with Reg do
begin
RootKey := HKEY_LOCAL_MACHINE;
if OpenKey(SREGSubKey+SAppName,True) then
begin
WriteBool (SREGbSaveUserName, bSaveUserName);
WriteBool (SREGbUseFlatHint, bUseFlatHint);
WriteBool (SREGbUseHint, bUseHint);
WriteBool (SREGbUseXPMenu, bUseXPMenu);
WriteInteger(SREGclBackColor, clBackColor);
WriteInteger(SREGiDrawStyle, iDrawStyle);
WriteInteger(SREGiDropDownCount, iDropDownCount);
WriteString (SREGsBackImage, sBackImage);
WriteString (SREGsDataBaseName, sDataBaseName);
WriteString (SREGsUserName, sUserName);
CloseKey;
end;
end;
//with
result:=true;
finally
Reg.Free;
end;
end;
 
这样太复杂了把
 
保存到INI文件里比较简单,看看帮助吧
 
同意。
var
sysinfo: TIniFile;
path:string;
count:integer
begin
path:=Extractfilepath(Application.ExeName);//取的程序路径
sysinfo:= TIniFile.Create(path+'sysinfo.ini');
count:=sysinfo.WriteInteger('sysinfo','count',1);
sysinfo.WriteInteger('sysinfo','count',count+1);
sysinfo.free;
end;

注意在uses列表里加入 Inifiles
 
c里面的静态变量也做不到你说的,任何程序中止,其中的变量(内存)都要释放,
不管哪种编程工具。
 
后退
顶部