怎么样精减单元? 减少程序体积呢?(200分)(200)

  • 主题发起人 主题发起人 抵住诱惑
  • 开始时间 开始时间

抵住诱惑

Unregistered / Unconfirmed
GUEST, unregistred user!
program Project2;uses Windows,IniFiles;procedure SaveIni(const FilePatch:Pchar; const ver:integer);var MyIniFile:TIniFile;begin MyIniFile:=TIniFile.Create(FilePatch); MyIniFile.WriteInteger('version','ver',ver); MyIniFile.Free;end;function ReadIni(const FilePatch:PChar):Integer;var MyIniFile:TIniFile;begin MyIniFile:=TIniFile.Create(FilePatch);//打开 ini 文件 Result:= MyIniFile.ReadInteger('version','ver',100);//读取字符型数据。end;begin ReadIni('test.ini'); SaveIni('test.ini',2010);end.由于程序使用了 IniFiles 所以原来 14KB 的程序立刻变 96KB。如何inifiles 这个单元,并且让程序还能正常运行呢?
 
使用CreateFile打开文件,按格式读出内容,删掉你的TIniFile
 
感谢楼上的回答,不过 CreateFile 不是专用操作 INI 文件的, 我查询有专门操作 INI 的 API 函数,调用非常简单。。constFilePath = 'C:/Temp/My.ini';//写入 Ini 文件, 如果指定文件路径不存在会自动建立procedure TForm1.Button1Click(Sender: TObject);beginWritePrivateProfileString('段1', 'Key1', '值1', PChar(FilePath));WritePrivateProfileString('段1', 'Key2', '值2', PChar(FilePath));WritePrivateProfileString('段2', 'Key1', '值1', PChar(FilePath));end;procedure TForm1.Button3Click(Sender: TObject);varbuf: array[Byte] of Char; {准备接受缓冲区}beginGetPrivateProfileString('段1', 'Key2', '默认值', buf, Length(buf), PChar(FilePath));ShowMessage(buf);end;
 
虽然二楼回答并非最佳解决方式,但同样非常感谢。 赠送 100 分,剩下欢迎接分!
 
program Project2;uses Windows,sysUtils;procedure SaveIni(const FilePatch:Pchar; const ver:integer);begin WritePrivateProfileString('version','ver',pchar(inttostr(ver)),PChar(FilePatch));end;function ReadIni(const FilePatch:PChar):Integer;var ReturnStr:PChar;begin ReturnStr:=StrAlloc(20); GetPrivateProfileString('version','ver','100',ReturnStr,20,PChar(FilePatch)); result:=strtoint(Trim(ReturnStr)); StrDispose(ReturnStr);end;begin ReadIni('test.ini'); SaveIni('test.ini',2010);end.
 
晕死!你找到了那个函数了,我就不该再回答。
 
直接追到 IniFiles.pas 里面看看源码,能抄则抄,多数是调用 Windows.pas的函数.
 
果然三人行必有我师,学习了
 
多人接受答案了。
 
后退
顶部