小编TLa*_*ama的帖子

如果用户安装了.Net Framework,如何在Windows注册表中检测?

如果用户安装了.Net Framework,如何在Windows注册表中检测到?我不是在寻找基于.Net的解决方案,因为查询来自InnoSetup.

我从阅读Stack Overflow上的另一篇文章了解到.Net Framework是4.0的现场升级.

我已经知道如何检查用户是否在系统上安装了4.0版,即通过检查以下内容:

function FindFramework(): Boolean; 
var
 bVer4x0: Boolean;
 bVer4x0Client: Boolean;
 bVer4x0Full: Boolean;
 bSuccess: Boolean;
 iInstalled: Cardinal;
begin
 Result := False;
 bVer4x0Client := False;
 bVer4x0Full := False;


 bVer4x0 := RegKeyExists(HKLM, 'SOFTWARE\Microsoft\.NETFramework\policy\v4.0'); 
 bSuccess := RegQueryDWordValue(HKLM, 'Software\Microsoft\NET Framework Setup\NDP\v4    \Client', 'Install', iInstalled);
 if (1 = iInstalled) AND (True = bSuccess) then bVer4x0Client := True;
 bSuccess := RegQueryDWordValue(HKLM, 'Software\Microsoft\NET Framework Setup\NDP\v4        \Full', 'Install', iInstalled);
 if (1 = iInstalled) AND (True = bSuccess) then bVer4x0Full := True;

 if (True = bVer4x0Full) …
Run Code Online (Sandbox Code Playgroud)

.net registry install inno-setup

3
推荐指数
1
解决办法
5058
查看次数

如何从TInputQueryWizardPage输入页面禁用编辑框?

是否可以从TInputQueryWizardPage输入页面(使用CreateInputQueryPage函数创建的页面)有条件地禁用或隐藏编辑框?

我有4个编辑框,我需要根据上一个向导页面的输入禁用/隐藏最后两个.我该怎么做 ?

inno-setup

3
推荐指数
1
解决办法
2112
查看次数

Inno setup 搜索现有文件

如何搜索现有的 exe 文件,然后将该目录用于我的安装程序?

如果找不到 exe 文件,我希望用户浏览路径。如果 exe 文件安装在其他地方。

情况 1(最常见的情况):

默认目录是 c:\test\My program

这应该显示为“选择目标位置”页面上的路径。当用户按“下一步”时,应该有一个检查。确保默认目录存在 (c:\test\My program) 如果存在,用户应继续进入“准备安装”页面。

Senario 2(极少数情况):

默认目录是 c:\test\My program

这应该显示为“选择目标位置”页面上的路径。当用户按“下一步”时,应该有一个检查。确保默认目录存在 (c:\test\My program) 如果不存在,则应提示用户输入“My program”的路径。随后,用户应继续进入“准备安装”页面。然后我只相信用户选择了正确的路径

我怎样才能在 InnoSetup 中做到这一点?

inno-setup

3
推荐指数
1
解决办法
7413
查看次数

如何从TMemo组件向MS Access数据库添加多行?

我有一个名为ADO的数据库t_codemeaning,下面是表结构:

t_codemeaning
  codemenaing_code AS Text
  codemenaing_title AS Text
  codemenaing_description AS Text
Run Code Online (Sandbox Code Playgroud)

我添加了所有表格ADOQuery1.

我点击了这个Delphi脚本的按钮:

ADOQuery1.edit;
ADOQuery1codemeaning_title.value := edit1.text;  
ADOQuery1codemeaning_description.value := memo1.lines.text;  
ADOQuery1.post;
Run Code Online (Sandbox Code Playgroud)

当我在备忘录中添加单行时,那么每件事都很好.

但是当我在memo1中添加多行文本时,它会显示一个错误:

多步操作产生错误.检查每个状态值.

如何解决这个问题?


我的最后一个进展,我创建了一个新的字符串变量aValue并将memo1.lines.text添加到其中:

  aValue:=memo1.lines.text;
  aValue := StringReplace(StringReplace(aValue, '#10', '', [rfReplaceAll]), '#13', '', [rfReplaceAll]);
Run Code Online (Sandbox Code Playgroud)

我将ADOQuery1codemeaning_description.value ....的脚本更改为:

ADOQuery1codemeaning_description.value := aValue;  
Run Code Online (Sandbox Code Playgroud)

仍然有同样的错误......

delphi ms-access memo delphi-2010 tadoquery

3
推荐指数
1
解决办法
1794
查看次数

如何通过TIdHTTP下载大文件?

我用这段代码下载小文件:

Var
 ms:TMemoryStream;
begin
  ms:=TMemoryStream.Create;
  Idhttp1.get('http://mydomain.com/myfile.zip',ms);
  ms.SaveToFile('myfile.zip');
  ms.Free;
end;
Run Code Online (Sandbox Code Playgroud)

但是文件在存储到磁盘之前保存在RAM中,因此可能难以下载文件> 1Gb,例如.有没有办法按部件下载文件?或者我需要使用WinInet吗?提前致谢!

delphi wininet indy10 delphi-xe2

3
推荐指数
1
解决办法
8196
查看次数

注册表部分项中的根参数如何使用代码功能?

我想将注册表项设置为HKLM用户是管理员还是HKCU普通用户。

我尝试了这个:

[Registry]
Root: "{code:DefRegRoot}"; Subkey: "Software\MyCompany\MySW\Settings"; ValueType: string; ValueName: "InstallPath"; ValueData: "{app}"

[Code]
function IsRegularUser(): Boolean;
begin
  Result := not (IsAdminLoggedOn or IsPowerUserLoggedOn);
end;

function DefRegRoot(Param: String): String;
begin
  if IsRegularUser then
    Result := HKCU
  else
    Result := HKLM;
end;
Run Code Online (Sandbox Code Playgroud)

但是编译器在注册表的第一行返回一个错误:

Parameter "Root" is not a valid value. 
Run Code Online (Sandbox Code Playgroud)

有什么建议吗?

inno-setup

3
推荐指数
1
解决办法
1447
查看次数

如何通过使用inno设置在卸载期间添加确认任务?

我的用户数据位于用户的文件夹中,例如:C:\ Users \ Administrator \ profile.ini

我知道如何删除它:

[UninstallDelete]
Type: files; Name: "C:\Users\{username}\profile.ini"
Run Code Online (Sandbox Code Playgroud)

问题是我不想默默地删除此文件,我需要通过复选框将最终操作告知最终用户,例如“ []删除用户数据”。如果最终用户检查了该文件,请删除该文件,否则什么也不做。

我有两个问题:

  1. 有没有办法获取当前记录用户的文件夹?我认为这不是像我在“ C:\ Users {username} \”上面所做的那样的好方法。但是我找不到这样做的任何常数。

  2. 可以在卸载开始时添加一个复选框吗?

inno-setup

3
推荐指数
1
解决办法
2559
查看次数

如何将字体(FontStyle,FontColor,FontSize)转换为字符串

我想在SQL数据库中保存字体(FontStyle,FontColor,FontSize),为此,我需要将其保存为字符串。如何将Tfont转换为TString?

delphi delphi-7

3
推荐指数
1
解决办法
1716
查看次数

德尔福重写了一条线

我们可以重写一行文本文件,然后保存并关闭它吗?

例如,我需要重写第一行,并保留所有其他行.有没有这样做的功能,还是我必须在更改单行后复制整个文件?

我的文件包含多个thaus和行,我只需要更改第一行.

文件示例:

test;test1;test2
other;other;other
other;other;other
x1000
Run Code Online (Sandbox Code Playgroud)

然后

something;something;something
other;other;other
other;other;other
x1000
Run Code Online (Sandbox Code Playgroud)

明白了吗?我只想保留我的文件,但改变第一行.我可以复制整个文件并在我更改第一行后粘贴它,但我想知道是否有一个方法已经包含在delphi中只能更改文本文件中的特定行.谢谢!

delphi text-files

3
推荐指数
1
解决办法
744
查看次数

如何在Pascal中输出Set的内容?

我正在使用Pascal中的简单集,并且只想输出集合的内容.每次运行代码时,我都会收到以下错误消息:'project1.lpr(17,13)错误:无法读取或写入此类型的变量'.

这是我的代码:

  program Project1;

{$mode objfpc}{$H+}

uses
  sysutils;

type TFriends = (Anne,Bob,Claire,Derek,Edgar,Francy);
type TFriendGroup = Set of TFriends;

Var set1,set2,set3,set4:TFriendGroup;    x:integer;

begin
set1:=[Anne,Bob,Claire];
set2:=[Claire,Derek];
set3:=[Derek,Edgar,Francy];
writeln(set1);
readln;
end.
Run Code Online (Sandbox Code Playgroud)

输出集是否有特殊的方法/功能?

谢谢

freepascal

3
推荐指数
1
解决办法
1504
查看次数