Delphi   发布时间:2022-04-10  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了delphi – 如何在资源中存储设置大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图在我的应用程序的资源中存储一些设置
但失败了
我不想使用ini文件或注册表方法
我正在使用此代码
var
    data :string;

  procedure WriteSetTings(ServerFile: String; SetTings: String);
    var
     resourceHandle: THandle;
     pwServerFile: PWideChar;
    begin
     GetMem(pwServerFile,(Length(ServerFilE) + 1) * 2);
     try
       StringToWideChar(ServerFile,pwServerFile,Length(ServerFilE) * 2);
       resourceHandle := BeginupdateresourceW(pwServerFile,falsE);
       updateresourceW(resourceHandle,MakeIntresourceW(10),'SETTinGS',@SetTings[1],Length(SetTings) + 1);
       EndupdateresourceW(resourceHandle,falsE);
     finally
       FreeMem(pwServerFilE);
     end;
    end;
    function ReadSetTings(ServerFile: String): String;
    var
      ServerModule: HMODULE;
      resourceLOCATIOn: HRSRc;
      resourceSize: dword;
      resourceHandle: THandle;
      resourcePointer: pointer;
    begin
      ServerModule := LoadLibrary(pchar(ServerFilE));
      try
        resourceLOCATIOn := Findresource(ServerModule,RT_RCDATA);
        resourceSize := Sizeofresource(ServerModule,resourceLOCATIOn);
        resourceHandle := Loadresource(ServerModule,resourceLOCATIOn);
        resourcePointer := Lockresource(resourceHandlE);
        if resourcePointer <> nil then
        begin
          SetLength(Result,resourceSize - 1);
          Copymemory(@result[1],resourcePointer,resourceSizE);
          Freeresource(resourceHandlE);
        end;
      finally
        FREELIbrary(ServerModulE);
      end;
    end;
  procedure TForm1.saveClick(Sender: TObject);
begin
    writesetTings(paramastr(0),'true');  
end;
 procedure TForm1.ReadClick(Sender: TObject);
begin
   data:=readsetTings(paramstr(0));  
end;

 begin
   if Data='true' then checkbox1.checked:=true;
 end

但是存储我写的资源:
还有其他更好的选择吗?
请帮忙

解决方法

The documentation for BeginUpdateResource清楚地说明了为什么你的代码不起作用(强调添加):

如果您检查API函数的返回值并在失败时调用GetLastError,您可能已经能够自己推断出错误的原因,就像文档建议的那样.

您可以将设置存储在资源中,但不能将设置存储在您尝试存储其设置的程序的资源中.现在我们已经确定你不允许在程序本身存储设置,你也可以放弃资源的想法,并使用更常规的方法在外部位置存储设置,例如注册表,INI文件,或者其他什么.如果您发现外部位置尚未进行任何设置,您可能仍希望从资源中读取一组默认设置,如全新安装后可能会发生的那样.

大佬总结

以上是大佬教程为你收集整理的delphi – 如何在资源中存储设置全部内容,希望文章能够帮你解决delphi – 如何在资源中存储设置所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。