我参与了XE4测试版,尽管存在无法生成.ipa的问题(Delphi中的错误信息"Invalid ipa选项"),该应用程序总是实际部署到设备上,但从未在Mac中创建过-dir.
如果我将paclient命令复制并粘贴到命令提示符中,它就可以了.我的质量控制问题已经解决,但事实并非如此.
现在使用XE4,使用与测试版相同的设置,我在部署到设备时遇到此错误:
Unable to launch process on '10.0.0.60' using the parameters from the 'Delphi_XE4' profile.
The following error was returned: 'Unable to install package. (e8008015)'
Run Code Online (Sandbox Code Playgroud)
该应用程序部署到XCode模拟器确定,因此连接详细信息是正确的.在部署期间,我可以看到PAServer接受Mac上的命令,但无论我使用Debug还是Ad-hoc构建类型,我都会收到此错误.
我检查了XCode中的设备日志,发现以下内容:
Apr 29 08:48:37 Js-iPhone-4S installd[54] <Error>: 0x2ffed000 handle_install: Install of "/var/mobile/Media/PublicStaging/iOS_Location.app" requested by mobile_installation_proxy
Apr 29 08:48:37 Js-iPhone-4S installd[54] <Error>: 0x2ffed000 MobileInstallationInstall_Server: Installing app iOS_Location
Apr 29 08:48:37 Js-iPhone-4S installd[54] <Error>: Apr 29 08:48:37 SecTrustEvaluate [leaf CriticalExtensions IssuerCommonName]
Apr 29 08:48:38 Js-iPhone-4S installd[54] <Error>: 0x2ffed000 verify_signer_identity: MISValidateSignatureAndCopyInfo failed for /var/tmp/install_staging.XRYC1t/iOS_Location.app/iOS_Location: 0xe8008015 …Run Code Online (Sandbox Code Playgroud) 我正在使用Delphi XE4.我尝试为TBytes定义一些辅助函数:
TBytesHelper = record helper for TBytes
public
function GetLength: integer;
end;
function TBytesHelper.GetLength: integer;
begin
Result := System.Length(Self);
end;
Run Code Online (Sandbox Code Playgroud)
当我尝试使用新的辅助函数时:
var B: TBytes;
i: integer;
begin
B := TBytes.Create(1,2,3);
i := B.GetLength;
if i <> Length(B) then
raise Exception.Create('Incorrect result');
end;
Run Code Online (Sandbox Code Playgroud)
我除了结果为iIS 3但事实并非如此.我在SysUtils.pas中引用具有类似构造的TStringHelper定义.
有什么我想念的吗?
为了通过dcc32构建应用程序到构建服务器,我可以使用Delphi试用版.这种方法的许可证没有任何问题.
现在,我将使用msbuild在TeamCity上构建Delphi XE4应用程序.
我是否需要为构建机器配备单独的许可证Delphi XE4?
先感谢您!
有没有办法让Delphi/iOS/FireMonkey中的TMemo透明化?
在选择+右键单击备忘录控件时,我看不到自己编辑样式的任何方法...
我正在使用像这样的脚本构建我的Delphi应用程序
call "C:\Program Files (x86)\Embarcadero\RAD Studio\11.0\bin\rsvars.bat"
msbuild.exe "C:\Projects\Foo\Bar.dproj"
Run Code Online (Sandbox Code Playgroud)
现在我想添加一个选项将应用程序部署到OSX(或IOS)系统修改这样的脚本,那么可以从命令行部署OSX或IOS Delphi项目吗?
即使使用vcl样式,某些组件也会使用Color属性设置绘制其颜色.因此,当使用Metro深色样式(接近黑色)并将组件颜色设置为clWindow时,组件颜色与样式不匹配.有没有办法在使用vcl.style时获取表单背景颜色,以便可以将组件的颜色属性设置为匹配表单样式的背景颜色?
可以通过在样式设计器中加载样式来获取颜色,但我想在运行时获取颜色值.
我在Delphi 7代码中有以下声明.
TMyCharSet = set of char;
Run Code Online (Sandbox Code Playgroud)
当我将该代码迁移到Delphi XE4时,我在上面的行中收到了编译器警告.
W1050 WideChar reduced to byte char in set expressions. Consider using 'CharInSet' function in 'SysUtils' unit.
Run Code Online (Sandbox Code Playgroud)
我该如何重新声明TMyCharSet?
我上课了
type
TLoadOption = class
private
FAutoSearch: Boolean;
public
property AutoSearch: Boolean read FAutoSearch write FAutoSearch;
end;
Run Code Online (Sandbox Code Playgroud)
在其中一个函数中,我在堆栈中创建类的对象
procedure MyView.InitializeForm(const aMsg: MyMsg);
//---------------------------------------------------------------------------
var
Options: TLoadOption;
begin
if aMsg.OptionalObject <> nil then
Options := aMsg.OptionalObject as TLoadOption;
if Assigned(Options) and Options.AutoSearch then
DoRefresh;
end;
Run Code Online (Sandbox Code Playgroud)
我没有在aMsg中传递任何内容,所以理想情况下没有设置选项.
在Delphi XE中默认选项设置为nil,因此不会调用此DoRefresh但是当我在Delpi XE4中执行相同的代码时,选项会使用一些随机值进行初始化,并且AutoSearch始终变为true,这会导致调用此DoRefresh函数,这是不需要.
我想知道是否有任何编译器选项将默认值设置为未初始化的变量.我现在唯一的解决方案就是这样
procedure MyView.InitializeForm(const aMsg: MyMsg);
//---------------------------------------------------------------------------
var
Options: TLoadOption;
begin
Options := nil;
if aMsg.OptionalObject <> nil then
Options := aMsg.OptionalObject as TLoadOption;
if Assigned(Options) and Options.AutoSearch then
DoRefresh;
end;
Run Code Online (Sandbox Code Playgroud)
这是正确的方法吗?
我有一个TSpeedButton,并且有一个TImageList包含各种字形.其中一个有一个alpha通道,当它被绘制到UI的某些部分时看起来非常好......但是当在a上绘制该字形时TSpeedButton,它不会使alpha通道生效.
查看相关代码TButtonGlyph.DrawButtonGlyph,它将被传递true给Transparent参数,但Transparent在if FThemesEnabled代码路径中根本没有考虑; 它只在else部分引用.由于此程序启用了主题,这是否意味着无法将alpha混合图像绘制为TSpeedButton?
有什么方法可以解决这个问题吗?
编辑:更仔细地看一下,它似乎需要考虑透明度......有点儿.完全透明的像素根本不会被绘制,这是正确的行为.但是边缘周围的抗锯齿(部分透明)被绘制为完全不透明.
以下是我对此问题的回答:
事实证明,在D7和XE3之间的某个时刻,IDE的Watch Window的实现从使用TListView变为TVirtualStringTree.
虽然我发布了一个更新我的答案,通过忽略VST并从剪贴板获取监视值来使用XE4,我仍然希望能够从VST获得监视值,如果可以的话.一旦我引用了VST,我想我知道怎么做,但问题是我尝试获取VST失败了.
以下是我在自定义包中使用的代码的MCVE.希望它的作用是不言自明的.问题是块中的代码
if WatchWindow.Components[i] is TVirtualStringTree then begin
[...]
end;
Run Code Online (Sandbox Code Playgroud)
从不执行,DESOPITE出现在Memo1中的类名"TVirtualStringTree".显然,具有该类名的组件未通过"是"测试.我猜测的原因是编译到IDE中的TVirtualTreeView是一个与我正在使用的版本不同的版本,v.5.3.0,这是我能找到的最接近XE4的前身.
所以,我的问题是,这是可能的解释,我能做些什么吗?我怀疑是否有人可以通过帽子来繁荣用于XE4的TVirtualStringTree版本,这可能会解决我的问题.
type
TOtaMenuForm = class(TForm)
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
private
WatchWindow : TForm;
VST : TVirtualStringTree;
end;
procedure TOtaMenuForm.FormCreate(Sender: TObject);
var
i : Integer;
S : String;
begin
WatchWindow := Nil;
VST := Nil;
// Iterate the IDE's forms to find the Watch Window
for i := 0 to Screen.FormCount - 1 do begin
S := Screen.Forms[i].Name;
if CompareText(S, 'WatchWindow') = 0 then begin …Run Code Online (Sandbox Code Playgroud) delphi ×10
delphi-xe4 ×10
firemonkey ×2
ios ×2
delphi-7 ×1
delphi-xe ×1
msbuild ×1
tmemo ×1
vcl ×1
vcl-styles ×1