当我发出SOAP请求时,我可以看到(在任务管理器中)我的应用程序的线程数从1(主线程)增加到8,这意味着7个额外的线程,这部分是正常的,但是在收到响应之后服务,线程数减少到4(3 +主线程)并保持这种方式直到下一个请求.因为我不习惯使用SOAP并且没有太多使用它,有没有人知道这是正常的还是我可以杀死/停止"悬挂"线程?
使用Delphi 2010
附加信息:我在一个线程中运行请求,是的,我在Execute方法中调用"CoInitialize"和"CoUninitialize".
测试应用程序:http://www.2shared.com/file/_dE4H-lO/soap_test_app.html
谢谢大家的时间.
我目前正在修改Firebird v.1.5数据库.
数据库结构将被修改为使用interbase组件从delphi应用程序运行查询,我面临的问题是我需要运行大量查询,其中一些包括创建生成器和更新生成器值,问题在于我需要在尽可能少的查询中实现这一点,但似乎(至少对我而言)这不可能实现,我正在尝试做的是以下内容:
/* this command creates a generator to be used for table TABLENAME */
CREATE GENERATOR GEN_TABLENAME;
Run Code Online (Sandbox Code Playgroud)
所以我创建了一个生成器,现在我需要在表TABLENAME的当前最大id处设置它的值,如下所示:
/* one would expect that the following command would work, well it doesn't */
SET GENERATOR GEN_TABLENAME TO (SELECT MAX(ID) FROM TABLENAME);
Run Code Online (Sandbox Code Playgroud)
现在,有没有解决方法,或者我被迫:
并重复每个表的过程?
我也期待着
SELECT
SELECT MAX(ID) AS ID_TABLENAME_1 FROM TABLENAME_1,
...
SELECT MAX(ID) AS ID_TABLENAME_N FROM TABLENAME_N
Run Code Online (Sandbox Code Playgroud)
将是一个解决方法,从一个命令中的每个表中获取最大ID,但它没有.
我正在尝试使用Delphi 2010和Indy进行Web服务的概念验证消费.我的代码是:
procedure TForm1.Log(const sEvent, sMsg: String);
const sPrior: String = '';
begin
if sEvent <> sPrior then begin
mTraffic.Lines.Append('');
mTraffic.Lines.Append(Format('%s: %s', [sEvent, FormatDateTime('mm/dd/yyyy hh:nn:ss.zzz', Now)]));
mTraffic.Lines.Append('--------------------------------------------------------------------------------');
sPrior := sEvent;
end;
mTraffic.Lines.Append(sMsg);
Application.ProcessMessages;
end;
function TForm1.BuildRequest: String;
const MINPERDAY = 1440;
var slRequest: TStringList;
sFileName: String;
sID: String;
sGUID: String;
oDoc: TNativeXML;
oNode: TXmlNode;
uNow: _SystemTime;
dtNow: TDateTime;
sNow: String;
sNonce: String;
oIdmd5: TIdHashMessageDigest5;
begin
sFileName := 'Send.xml';
slRequest := TStringList.Create;
oIdmd5 := TIdHashMessageDigest5.Create;
oDoc := TNativeXML.Create;
try
oDoc.LoadFromFile(sFileName);
SetAttrib(oDoc, …Run Code Online (Sandbox Code Playgroud) 我想要做的是从httpd.conf传递一些设置到我的模块,如:
<Location /path>
SetHandler mymodule-handler # based on this, the module will kick in and "try" to read settings
MyCustomStringSetting "AStringValue"
MyCustomIntegerSetting 2012
# more
</Location>
Run Code Online (Sandbox Code Playgroud)
如何从模块中获取"AStringValue"和"2012"?
我很好奇这个:
当我从使用stdcall调用约定导出的动态链接库导入函数时,是否必须在从V7开始的Delphi中在外部添加stdcall?
即
LIBNAME int __stdcall Foo(void);
Run Code Online (Sandbox Code Playgroud)
如
function Foo: Integer; stdcall; external 'libname.dll';
Run Code Online (Sandbox Code Playgroud)
或者我可以逃脱
function Foo: Integer; external 'libname.dll';
Run Code Online (Sandbox Code Playgroud)
IIRC默认情况下会使用stdcall,但我不是100%肯定,你的意见是必需的.
编辑:
问题与32位库有关,Arnaud Bouchez提出了一个很好的观点,对于64位,调用约定没有被考虑,因为只有一个.
这个问题基于之前的问题,但这仅仅是FYI.
我已经设法让它工作了,但是,我找到了一些我不清楚的东西,所以如果有人能解释以下行为,那就太棒了.
我有以下课程:
type
TMyObj = class
published
procedure testex(const s: string; const i: integer);
end;
procedure TMyObj.testex(const s: string; const i: integer);
begin
ShowMessage(s + IntToStr(i));
end;
Run Code Online (Sandbox Code Playgroud)
以及以下两个程序:
procedure CallObjMethWorking(AMethod: TMethod; const AStrValue: string; const AIntValue: Integer);
begin
asm
PUSH DWORD PTR AIntValue;
PUSH DWORD PTR AStrValue;
CALL AMethod.Code;
end;
end;
procedure CallObjMethNOTWorking(AInstance, ACode: Pointer; const AStrValue: string; const AIntValue: Integer);
begin
asm
MOV EAX, AInstance;
PUSH DWORD PTR AIntValue;
PUSH DWORD PTR AStrValue;
CALL ACode;
end; …Run Code Online (Sandbox Code Playgroud) 我正在将一些C#代码翻译成Delphi,我理解(msg = TMsg):
(int)msg.LParam
Run Code Online (Sandbox Code Playgroud)
只是一个演员(如果我错了请纠正我),但以下令人难以置信:
Marshal.ReadInt32( (IntPtr)msg.WParam, 4 )
Run Code Online (Sandbox Code Playgroud)
有人可以澄清一下吗?
我需要将一段C代码翻译成Delphi/Pascal代码,但是我无法理解几行代码.
C代码:
static char* get_boundary(apr_pool_t* p, const char* ctype) {
char* ret = NULL ;
if ( ctype ) {
char* lctype = lccopy(p, ctype) ;
char* bdy = strstr(lctype, "boundary") ;
if ( bdy ) {
char* ptr = strchr(bdy, '=') ;
if ( ptr ) {
// what is the following line supposed to do?
bdy = (char*) ctype + ( ptr - lctype ) + 1;
// and this? I understand it's a loop, but *ptr and …Run Code Online (Sandbox Code Playgroud) 是否为Delphi/FreePascal翻译了任何nginx标头?
我来自Delphi/Pascal编程世界,但我偶尔也会用C++或C"玩",有一个让我困扰的问题:为什么C++使用"." 访问结构成员和" - >"访问方法?在Delphi/Pascal中我们使用"." 对于任何这些甚至属性......
有人告诉我它与C++如何访问内存有关,但这个答案还不足以帮助我理解.
谢谢.
我想开发一个可以在我的网站上访问我的数据库的应用程序.我想知道可以使用哪些组件来访问,插入和更新数据库中的记录.我在unix服务器上使用mySQL数据库.该应用程序将在Windows中运行.
delphi ×9
c ×2
c++ ×2
delphi-2010 ×2
freepascal ×2
apache ×1
apache2 ×1
assembly ×1
basm ×1
c# ×1
delphi-7 ×1
delphi-xe2 ×1
firebird ×1
firebird1.5 ×1
indy ×1
mysql ×1
nginx ×1
pascal ×1
soap ×1