标签: delphi-xe3

错误:找不到F1026文件:'System.Actions.dcu'从XE3切换回Delphi XE2

我正在将我的代码从XE2移到Delphi XE3,但它应该在两者中编译.我注意到有些单位将'System.Actions'自动添加到USES子句中.这会在返回XE2时导致错误:

F1026找不到文件:'System.Actions.dcu'(单位范围"系统"表示仅限Win64,OSX32,Win32)

我从来没有真正理解单位范围.有没有正确的解决方案来解决这个问题而不是在编译器版本{$ IFDEF}中包装东西?

谢谢

migration delphi delphi-xe2 delphi-xe3

3
推荐指数
2
解决办法
4583
查看次数

如何更新Delphi XE3,Firemonkey2中的TStringGrid单元格

我已经看到这个问题是另一个问题的一部分,所以知道它不能只是我......如果我打开一个新的FireMonkey2 HD应用程序,添加一个TButton和TStringGrid,然后将其添加到click事件的按钮上当我点击按钮时,网格中没有发生!

procedure TForm33.Button1Click(Sender: TObject);
var
  i: Integer;
begin
  for i:= 0 to 6 do
   begin
     StringGrid1.Cells[0,i] := 'Row:' + IntToStr(i);
   end;
   stringgrid1.UpdateColumns;
   stringgrid1.SetFocus;
 end;    
Run Code Online (Sandbox Code Playgroud)

有任何想法吗 ?PS我也尝试过使用TStringGrid.OnGetValue,它仍然不会在StringGrid中显示任何内容.

进一步研究TStringGrid源代码后,C为零,因此Cell永远不会被设置.

procedure TStringGrid.SetValue(Col, Row: Integer; const Value: TValue);
var
  C: TColumn;
begin
  C := Columns[Col];
  if Assigned(C) then
  begin
    C.UpdateRowCount(RowCount);
    C.SetCells(Row, Value);
  end;
Run Code Online (Sandbox Code Playgroud)

我似乎在"处女"StringGrid中没有列,所以你如何添加它们?有一个r + w RowCount属性,但ColCount只读...

delphi firemonkey delphi-xe3

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

TSQLQuery没有返回正确数量的记录

我有一个表Artist,当前包含四个记录,TSQLQuery其中包含以下语句:

SELECT name
FROM Artist
Run Code Online (Sandbox Code Playgroud)

表格Artist还包含以下记录:

id          name
1           Artist 1
2           Artist 2
3           Artist 3
4           Artist 4
Run Code Online (Sandbox Code Playgroud)

目前的记录检索方法:

Query1.Open;
for i := 0 to qArtist.FieldCount -1 do
    with cbArtist.ListBox.ListItems[i] do
        Text := qArtist.Fields[i].AsString;
Run Code Online (Sandbox Code Playgroud)

以前的记录检索方法:

数据绑定Query1ComboBox1.


使用"previous"方法,ComboBox1将显示Artist表中的所有预期记录.但是,当我尝试使用"当前"方法时Query1,只选择Artist表中的第一条记录,尽管还有其他三个现有值.我已尝试跨越其他查询的"当前"方法,他们也只返回表的第一个值.

我之所以采用这种新方法,是因为我觉得如果我继续使用"上一个"/数据绑定方法,我的工作非常有限,但除此之外.

那么我该如何解决这个问题呢?即查询问题只选择表中的第一条记录.

delphi sqlite delphi-xe3 firemonkey-fm2

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

找不到Delphi XE3 KEY_WRITE

我无法找到存储注册表常量的位置.在以下示例中,KEY_WRITE未被识别,也未被识别HKEY_LOCAL_MACHINE.

XE3是否有任何不错的帮助 - "旧的"Delphi帮助更有帮助!

uses System.Win.Registry;
...
...
...
...
reg := TRegistry.Create(KEY_WRITE);
Run Code Online (Sandbox Code Playgroud)

delphi registry delphi-xe3

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

Hewlett Packard定制OEM Windows上的Delphi平台错误

我一直在设置计算机时出现同样的错误,因此它将运行Delphi,我已经在PLATFORM环境变量上设置了用户覆盖,将其转换为win32,但它仍然给出了相同的错误;

[错误错误] PLATFORM变量"HPD"无效.PLATFORM必须是以下之一:"Win32","Win64","Android","iOSSimulator","iOSDevice"或"OSX32".如果PLATFORM由您的系统环境定义,则必须在RAD Studio IDE中覆盖它,或者在命令行上显式传递给MSBuild; 例如,/ p:Platform = Win32.

任何人都可以解释为什么它这样做以及如何修复错误?事实上,我在大学里使用Delphi XE2并且我现在正在使用Delphi XE3,这可能会影响到这一点

delphi delphi-xe2 delphi-xe3

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

Delphi数组初始化

这有点是我之前提出的问题的延续.本质上,我试图用一个基本的例子来测试dll /函数,但是我得到' E2010 - 不兼容的类型:AInteger/ADouble和Set '和' E1012 - 常量表达式违反了我的数组上的子范围边界 '错误.我(有点)得到它想说的,但无法弄清楚我应该修复什么.例如:

var
  n: Integer; 
  Ap, Ai: AInteger;
  Ax, b: ADouble;

begin
  // Initializations
  n := 5;
  Ap := [0, 2, 5, 9, 10, 12]; <- E2010
  Ai := [0, 1, 0, 2, 4, 1, 2, 3, 4, 2, 1, 4]; <- E2010
  Ax := [2, 3, 3, -1, 4, 4, -3, 1, 2, 2, 6, 1]; <- E2010 and E1012
  b := [8, 45, -3, 3, 19]; …
Run Code Online (Sandbox Code Playgroud)

delphi delphi-xe3

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

如何从 PAnsichar 转换为 PWidechar?

我正在从这里 ( http://delphi.about.com/od/internetintranet/l/aa081503a.htm )在 delphi-xe3 中使用 windows API 实现 Ping 功能。

我在使用以下函数时遇到问题。它显示错误不兼容类型 Pansichar 和 Pwidechar。我用 PAnsichar 替换了 Pchar 现在它显示异常“从主机名获取 IP 时出错”。

我正在用本地主机测试它。

请指导什么是正确的转换。

const ADP_IP = '127.0.0.1';

procedure TranslateStringToTInAddr(AIP: string; var AInAddr);
var
  phe: PHostEnt;
  pac: PChar;
  GInitData: TWSAData;
begin
  WSAStartup($101, GInitData);
  try
    phe := GetHostByName(PChar(AIP));
    if Assigned(phe) then
    begin
      pac := phe^.h_addr_list^;
      if Assigned(pac) then
      begin
        with TIPAddr(AInAddr).S_un_b do begin
          s_b1 := Byte(pac[0]);
          s_b2 := Byte(pac[1]);
          s_b3 := Byte(pac[2]);
          s_b4 := Byte(pac[3]);
        end;
      end
      else
      begin
        raise Exception.Create('Error getting …
Run Code Online (Sandbox Code Playgroud)

delphi indy10 delphi-xe3

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

如何启用UTF-8进行Unicode转换?

Database: utf8 
Collation: utf8_general_ci
Run Code Online (Sandbox Code Playgroud)

我有以下问题:

当我执行我的查询时,所有内容都正确地写入表格,除了Chinese字符和Cyrillic字符只显示在表格字段"???????"中.

在此输入图像描述

是否可以选择更改unidac组件或mysql服务器中的charset?

mysql delphi character-encoding unidac delphi-xe3

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

从Delphi中的TWebRequest获取文件

我正在使用Delphi作为服务器来处理许多不同的请求.所有这些简单的字符串工作正常,但我收到文件时遇到一些麻烦.

所有都是使用Webbroker服务实现的,所以我得到了一个方法

WebModule1WebActionItem1Action(Sender: TObject; Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
Run Code Online (Sandbox Code Playgroud)

我有一个/ test方法,类型= mtPost.

在动作内部,我执行以下操作:

MimeType   := Request.ContentFields.Values['MimeType'];
  for i := 0 to Request.Files.Count-1 do begin
    // never entered
    aFile := Request.Files.Items[i];
    ms := TMemoryStream.Create;
    aFile.Stream.Position := 0;
    ms.CopyFrom(aFile.Stream, aFile.Stream.Size);
    ms.SaveToFile(path+aFile.FileName);
    ms.free;
  end;
Run Code Online (Sandbox Code Playgroud)

显然,我发送的任何东西都不会被识别为文件,但我不知道为什么.用于发布的HTML,如下所示:

<form id="myForm" action="http://localhost:8080/test" method="post" enctype="multipart/form-data">
     <input type="file" size="60" name="myfile">
     <input type="text" size="10" name="mimetype" value="image/hest">
     <input type="submit" value="upload">
 </form>
Run Code Online (Sandbox Code Playgroud)

我会告诉任何人告诉我什么可能是错的 - 以及如何解决它.基本上我只需要能够收到1个文件,包括mimetype(因为我需要在以后提供文件时返回它)

delphi delphi-xe3

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

Delphi XE3 - datasnap REST服务器UTF8输出

我正在Delphi XE3中实现REST服务.实际访问:

var metaData: TDSInvocationMetadata;
metaData.ResponseContent:= output;
Run Code Online (Sandbox Code Playgroud)

生成XML输出.在经过数小时测试各种UTF8到Unicode转换方法后,我仍然无法获得正确的UTF8输出.这是我的例子:

function TServerMethods1.UTF8TEST(Value: string): string;
 var metaData: TDSInvocationMetadata;
     output: String;
begin
  metaData:= GetInvocationMetadata;
  output:= '<element><inside name="skúška" /></element>';
  metaData.ResponseCode:= 200;
  metaData.ResponseContentType:= 'text/xml; charset=utf-8';
  metaData.ResponseContent:= utf8encode(output);
end;
Run Code Online (Sandbox Code Playgroud)

从互联网浏览器调用后:http:// localhost:8080/datasnap/rest/TServerMethods1/UTF8TEST我收到了ENCODING ERROR报告.删除特殊字符'úš'并将名称设置为'skuska'后,evrythink似乎没问题.

任何人都可以帮助如何正确获得UTF8编码输出???

delphi rest utf-8 datasnap delphi-xe3

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