Tag: delphi xe2

如何使用MSBuild和Delphi XE2构build

我一直在使用Delphi XE和MSBuild使用以下在batch file中正常工作的简单示例构build项目。 Project1是使用“File |”创build的空项目 新| | VCL在IDE中构build应用程序: call "c:\Program Files (x86)\Embarcadero\RAD Studio\8.0\bin\rsvars.bat" msbuild.exe /target:Build /p:config=Release "c:\scratch\test\project1.dproj" pause 如果我在Delphi XE2中创build了一个新的空项目,将其保存为project1.dproj(dproj与XE非常不同),然后运行以下命令: call "c:\Program Files (x86)\Embarcadero\RAD Studio\9.0\bin\rsvars.bat" msbuild.exe /target:Build /p:config=Release "c:\scratch\test\project1.dproj" pause 它给: Build FAILED. "c:\scratch\test\project7.dproj" (Build target) (1) -> c:\scratch\test\project7.dproj : error MSB4057: The target "Build" does not e xist in the project. 0 Warning(s) 1 […]

Firemonkey(FMX)位图和颜色

假设我在Firemonkey中有一个小的位图(比如32×24像素)。 所以我把一个TImage放到一个表单上,在构造函数中有这样的代码: Image1.Bitmap.Create(32, 24); if Image1.Bitmap.Canvas.BeginScene then try Image1.Bitmap.Canvas.Fill.Color := claBlack; Image1.Bitmap.Canvas.Stroke.Color := claYellow; Image1.Bitmap.Canvas.FillRect(RectF(0,0,32,24), 0, 0, AllCorners, $FF); Image1.Bitmap.Canvas.DrawLine(PointF(1,1), PointF(10,10), $FF); finally Image1.Bitmap.Canvas.EndScene; Image1.Bitmap.BitmapChanged; end; 这在blackground上画了一条很好的对angular线。 我想要做的是现在parsing位图来确定受到线条绘制影响的像素。 如果我做一个基本的像素检查使用: for y := 0 to 23 do for x := 0 to 31 do if Image1.Bitmap.Pixels[x,y] <> claBlack then memo1.Lines.Add(Format('x=%d. y=%d. c=%x', [x,y,Image1.Bitmap.Pixels[x,y]])); 输出到我的备忘录是: x=0. y=0. […]

TSQLMonitor使用新的ODBC dbExpress驱动程序的TSQLConnection是否有一个技巧?

我一直在testingDelphi XE2附带的新的ODBC dbExpress驱动程序,并且注意到TSQLMonitor似乎不起作用。 考虑到我可能configuration了错误的组件,我把一个TSQLMonitor连接到一个使用MS SQL dbExpress驱动程序的TSQLConnection,并且像一个魅力一样工作。 我在网上看不到有关这个问题的任何文章。 有没有人注意到这个问题? 它看起来是一个错误,一个不受支持的function(在使用ODBC驱动程序的TSQLConnection上没有监视),或者在这种情况下configurationTSQLMonitor是否有技巧?

Firemonkey ScrollBox的Bug

我们正在经历Firemonkey的ScrollBox组件中的一个奇怪的错误(因为TGrid从TScrollBoxinheritance,它也影响所有的网格)。 在我们的开发机器上,一切正常,而另一些则发生错误。 我们没有检测到系统之间的任何模式(我们检查了操作系统,graphics硬件,DirectX版本)。 再生产: 创build一个新的FireMonkey应用程序。 在表单上放置一个TScrollBox 。 将一个button添加到滚动框并将其垂直位置设置为500000。 启动应用程序,并检查滚动到滚动框结束时是否显示button。 如果发生错误,button不可见。 使用网格时,会导致1-19047行正确显示,并且不会显示19047年以后的所有行。 有没有人知道这可能是什么原因造成的? 或者有什么想法,我们如何更详细地确定问题?

在Delphi XE2中使用generics和前向声明时的编译器错误

我开始Delphi 2010项目,然后迁移到XE,现在我尝试迁移到XE2。 在XE2(更新4修补程序1)编译后,unit testing开始与AV失败。 经过一些debugging,很明显,下面的代码没有正确编译: program ForwardDeclaration; {$APPTYPE CONSOLE} uses System.SysUtils; type TEntityBase = class(TObject) protected FModel: Integer; public constructor Create(const AModel: Integer); end; TEntity<TKey> = class(TEntityBase) end; TMyEntity2 = class; TMyEntity1 = class(TEntity<Integer>) FData: Integer; end; TMyEntity2 = class(TMyEntity1) end; constructor TEntityBase.Create(const AModel: Integer); begin inherited Create; FModel := AModel; end; var MyEntity: TMyEntity1; […]

XE2中COM是否被破解,我该如何解决它?

更新: XE2更新2修复了下面描述的错误。 下面的程序,从真正的程序截断,失败,在XE2例外。 这是从2010年开始的一个回归。我没有XE来testing,但是我期望程序能够在XE上正常工作(感谢Primož确认代码在XE上正常运行)。 program COMbug; {$APPTYPE CONSOLE} uses SysUtils, Variants, Windows, Excel2000; var Excel: TExcelApplication; Book: ExcelWorkbook; Sheet: ExcelWorksheet; UsedRange: ExcelRange; Row, Col: Integer; v: Variant; begin Excel := TExcelApplication.Create(nil); try Excel.Visible[LOCALE_USER_DEFAULT] := True; Book := Excel.Workbooks.Add(EmptyParam, LOCALE_USER_DEFAULT) as ExcelWorkbook; Sheet := Book.Worksheets.Add(EmptyParam, EmptyParam, 1, EmptyParam, LOCALE_USER_DEFAULT) as ExcelWorksheet; Sheet.Cells.Item[1,1].Value := 1.0; Sheet.Cells.Item[2,2].Value := […]

delphiASIO VST和MiniHost的Midi时序问题

我来自使用MSC * MidiSequencer作为Delphi XE2项目的背景,并且本周末一直在使用DelphiASIOVST进行游戏,因为MIDI可能足够稳定,可以用作我的核心MIDI引擎,同时也允许我支持VST插件插件。 我把D16的主干线从SVN上拉下来,经过一些path的调整,毫不费力地编译完成。 我明白我所看到的很多东西,但是我想知道是否其他人在MiniHost示例应用程序中遇到了MIDI文件播放的问题。 特别是对于一个音轨的旋律表演,它听起来像是音符被跳过,并且/或者在比其他应该播放的音符更晚的时候回放。 基本上,如果一张纸条甚至被打了,那么它就会被打到或者错过。 我在我的机器上有许多亲定序器,MIDI文件在那里很好。 他们也支持VST几乎没有问题。 我也知道MIDI最低级别的文件格式,并知道文件结构是健全的。 TMidiFile可以直接播放电脑中的标准MIDI合成器吗? 我试图排除VST问题通过获得直接pipe道内置合成器。 除此之外,任何人看到这些问题或知道一些更多/更好的使用组件集VST的MIDI文件的例子?

使用XE2远程debugging – 显示string

我正在远程debuggingDElphi XE2(更新#4)和Windows XP目标之间的大型应用程序。 PAServer运行在目标上,应用程序正常运行并停在断点处(你不会相信这个成绩有多难 – 暗示 – 删除你的DPROJ,如果在XE之前已经通过任何IDE,那么重新开始)。 我注意到局部variables和监视器的显示以一种奇怪的格式显示我的string,与通常显示在本地debugging时看到的'some string'格式相比。 我懂了: 谁能告诉我为什么这样的string显示? 对于尚未分配的输出variables,{}之间的{}}也会产生相当大的{NULL}和垃圾。 谢谢。 。 我看到这种格式表示宽string。 我在Windows 7上尝试了一个简单的应用程序,并得到以下结果。 我的应用程序在断点: 显示的本地stringvariables: 请注意截断的“你好”。 看起来XE2有时在远程Unicodestring上有问题。 我的PaServer是1.0.2版本。 任何人都可以检查这是最新的? '从更新#4采取的Twas …

BCDDivide函数在Delphi XE和XE2中performance不同

FmtBcd.pas在Delphi XE2中进行了大量修改。 在我的一个项目中,我有一个使用两个Bcd值的除法操作的例子,但是这两个版本产生不同的结果。 在最坏的情况下,Delphi XE2可能会抛出Bcd overflow error 。 示例:在Delphi XE2控制台应用程序中运行以下代码: var A, B, C, D: TBcd; begin A := StrToBcd('1'); B := StrToBcd('3'); BcdDivide(A, B, C); WriteLn(BcdToStr(C)); try BcdMultiply(C, C, D); WriteLn(BcdToStr(D)); except on E: Exception do WriteLn(E.Message); end; ReadLn; end. 以上的输出将是: 0.333333333333333333333333333333333333333333333333333333333333333 BCD overflow variablesC包含具有63位小数位的Bcd值。 对variablesC执行第二次BcdMultiply操作将导致Bcd overflow error 。 但是,在Delphi XE中运行相同的代码将得到以下结果,而不会有任何exception提示: 0.3333333333 0.11111111108888888889 任何人都可以请build议一个最佳实践的方法来解决这个问题?

Webview不能在使用Delphi XE2的MacOS中显示

我已经开始将Webview接口转换为在Delphi中使用。 我设法加载webkit库,并调用接口方法似乎正常工作,但是,我似乎无法显示在主窗体上的Webview。 以下是我声明的接口 WebFrameClass = interface(NSObjectClass) ['{7BE750C8-DFEC-4870-851A-12DBCB0B78F6}'] end; WebFrame = interface(NSObject) ['{BCFA04BE-41AB-4B78-89C0-3330F12C7695}'] procedure loadRequest(request: NSURLRequest); cdecl; end; TWebFrame = class(TOCGenericImport<WebFrameClass, WebFrame>) end; WebViewClass = interface(NSViewClass) ['{0D9F44B7-09FD-4E35-B96E-8DB71B9A2537}'] {class} function canShowMIMEType(MIMEType: NSString): Boolean; cdecl; end; WebView = interface(NSView) ['{C36D8016-2FCB-49F0-BA1C-C9913A37F9AC}'] procedure clos; cdecl; procedure setHostWindow(hostWindow: NSWindow); cdecl; function initWithFrame(frame: NSRect; frameName: NSString; groupName: NSString): Pointer; cdecl; function mainFrame: […]