我在Delphi XE2中使用XML数据绑定向导。 该模式具有这种types的标签: <xs:element name="MyReport" type="MyReportType" /> <xs:complexType name="MyReportType"> <xs:all> <xs:element name="Header" type="HeaderType" /> <xs:element name="Values" type="ValuesType" /> <xs:element name="Events" type="EventsType" /> </xs:all> </xs:complexType> 问题是,如果我不向Value组添加任何元素,则不会有<Values> -tag,并且XML文件将无法通过XSD进行validation。 如果界面提供了一种“添加”Values-tag的方法,这可能不会成为问题。 有没有处理这个标准的方法,或者我正确地使用生成的代码? 简单地说 ,是否有任何方式,变通方法或其他方法,使用数据绑定向导中的代码来生成以下XML(在没有子节点时使用上述模式进行validation所需的),给定HeaderType ,ValuesType和EventsType是complexType: <MyReport> <Header /> <Values /> <Events /> </MyReport> (我知道还有其他类似的问题,比如<xs:sequence>生成的代码没有在最终的XML文件中强制执行正确的顺序,但至less对于这个问题,只需要在我仍然认为如果Embarcadero提供一个完整的界面,将会考虑更多这些function,那么这样做还是不错的。)
Delphi曾经为Web服务包含一个demos文件夹,但似乎不再包含这个。 我只是尝试了Delphi 7演示项目( SOAPDMServerWAD ,几乎完全没有UI的服务器和SOAPDMClient ),并且无法让它们运行,即使在Delphi 7中也是如此。 如果有人曾经在Delphi XE或Delphi 2010中做过类似于旧版本的SOAPDMServerWAD+SoapDMClient演示的工作,在Delphi XE中工作,并且至less有来自Delphi SOAP Server应用程序向导的最小UI,完美。 更新:演示出现在Delphi 2010中,但使用了现在已经过时的WAD(networking应用debugging器),我尝试将它移植到新的Indy runtime/web-app-development-harnessing-code ,但是我似乎无法得到它的工作。 演示运行,但服务器没有用户界面,似乎并没有运行任何HTTP服务器(使用普通的Web浏览器,通过http://localhost:port/ urls进行testing。顺便说一句,尝试谷歌search演示,这个url出现了,我不到一个小时前问,这太可怕了,谷歌。 Update2请参阅下面我自己的答案,一个链接即将推出的工作代码。
在XCode中,通过将这些方法添加到NSView子类中,可以防止在单击该窗口时该窗口变为活动状态: – (BOOL)shouldDelayWindowOrderingForEvent:(NSEvent )theEvent { return YES; } – (BOOL)acceptsFirstMouse:(NSEvent )theEvent { return YES; } – (void)mouseDown:(NSEvent )theEvent { [[[NSApp]] preventWindowOrdering]; } 在Windows平台上它是由这个简单的代码完成的: HWND hWnd = FindWindowW((String("FM") + fmxForm->ClassName()).c_str(), fmxForm->Caption.c_str()); SetWindowLong(hWnd, GWL_EXSTYLE, GetWindowLong(hWnd, GWL_EXSTYLE) | WS_EX_NOACTIVATE); 我怎么能子类NSView,以防止我点击它时,我的FMX TForm变得活跃? 如何在firemonkey中创build“ 不激活 ”窗体?
尝试在单个生产者多个消费者scheme中使用TThreadedQueue(Generics.Collections)。 (DELPHI-XE)。 这个想法是推入对象到一个队列,让几个工作线程排空队列。 尽pipe如此,它没有像预期的那样工作。 当两个或两个以上工作线程调用PopItem时,访问冲突从TThreadedQueue抛出。 如果对PopItem的调用是使用临界区域进行序列化的,则一切正常。 当然TThreadedQueue应该能够处理多个消费者,所以我错过了什么,或者这是TThreadedQueue纯粹的错误? 这是一个简单的例子来产生错误。 program TestThreadedQueue; {$APPTYPE CONSOLE} uses // FastMM4 in '..\..\..\FastMM4\FastMM4.pas', Windows, Messages, Classes, SysUtils, SyncObjs, Generics.Collections; type TThreadTaskMsg = class(TObject) private threadID : integer; threadMsg : string; public Constructor Create( ID : integer; const msg : string); end; type TThreadReader = class(TThread) private fPopQueue : TThreadedQueue<TObject>; fSync : […]
我们有一个由众多应用程序组成的系统。 所有应用程序的版本都在同一时间更改。 目前,当我们发布一个新版本时,我们必须手动打开每个应用程序的项目选项并逐个更改版本。 有没有办法编译同一版本的所有应用程序,例如,将其保存在全局文件中,并在编译时读取此文件并将该版本分配给项目? 我只是试图消除太多的步骤,因为我们计划更频繁地更改版本号。 我只想在一个地方改变它。 可以这样做吗? 如何?
我有这样一个非常基本和简单的类: 装载机; interface uses Vcl.Dialogs; type TLoader = Class(TObject) published constructor Create(); end; implementation { TLoader } constructor TLoader.Create; begin ShowMessage('ok'); end; end. 从Form1中,我这样称呼它: procedure TForm1.Button1Click(Sender: TObject); var the : TLoader; begin the := the.Create; end; 现在,就在the := the.Create部分之后,delphi用'ok'显示消息,然后给我一个错误,并且说Project Project1.exe raised exception class $C0000005 with message 'access violation at 0x0040559d: read of address 0xffffffe4'. 它也显示了这一行: […]