小编Com*_*sNo的帖子

SOAP请求会使线程挂起


当我发出SOAP请求时,我可以看到(在任务管理器中)我的应用程序的线程数从1(主线程)增加到8,这意味着7个额外的线程,这部分是正常的,但是在收到响应之后服务,线程数减少到4(3 +主线程)并保持这种方式直到下一个请求.因为我不习惯使用SOAP并且没有太多使用它,有没有人知道这是正常的还是我可以杀死/停止"悬挂"线程?
使用Delphi 2010

附加信息:我在一个线程中运行请求,是的,我在Execute方法中调用"CoInitialize"和"CoUninitialize".

测试应用程序:http://www.2shared.com/file/_dE4H-lO/soap_test_app.html

谢谢大家的时间.

delphi soap

5
推荐指数
1
解决办法
969
查看次数

更新生成器值问题

我目前正在修改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)

现在,有没有解决方法,或者我被迫:

  • 创建发电机
  • 获得最大ID
  • 更新生成器值

并重复每个表的过程?

我也期待着

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,但它没有.

firebird auto-increment firebird1.5

5
推荐指数
3
解决办法
7363
查看次数

调试SOAP传输

我正在尝试使用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)

delphi indy delphi-2010

5
推荐指数
1
解决办法
3999
查看次数

如何为Apache模块定义自定义配置指令?

我想要做的是从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"?

c c++ apache delphi apache2

4
推荐指数
1
解决办法
572
查看次数

导入功能需要stdcall吗?

我很好奇这个:

当我从使用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位,调用约定没有被考虑,因为只有一个.

delphi delphi-7

4
推荐指数
1
解决办法
4714
查看次数

使用ASM调用对象方法 - 第2部分

这个问题基于之前的问题,但这仅仅是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)

delphi assembly delphi-2010 basm

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

C#的Marshal.ReadInt32(IntPtr)在Delphi中意味着什么?

我正在将一些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

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

C到Delphi/Pascal

我需要将一段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)

c delphi pascal freepascal

2
推荐指数
1
解决办法
1541
查看次数

Delphi或Freepascal的Nginx头文件

是否为Delphi/FreePascal翻译了任何nginx标头?

delphi freepascal nginx

2
推荐指数
1
解决办法
1005
查看次数

为什么C++使用DOT访问结构成员和 - >访问方法?

我来自Delphi/Pascal编程世界,但我偶尔也会用C++或C"玩",有一个让我困扰的问题:为什么C++使用"." 访问结构成员和" - >"访问方法?在Delphi/Pascal中我们使用"." 对于任何这些甚至属性......

有人告诉我它与C++如何访问内存有关,但这个答案还不足以帮助我理解.

谢谢.

c++

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

连接到Web服务器上的mySQL数据库时要使用的组件

我想开发一个可以在我的网站上访问我的数据库的应用程序.我想知道可以使用哪些组件来访问,插入和更新数据库中的记录.我在unix服务器上使用mySQL数据库.该应用程序将在Windows中运行.

mysql delphi delphi-xe2

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