小编Sam*_*Sam的帖子

使用zend(多维数组)交换数据

我在我的应用程序中嵌入PHP(在Delphi 2010中编写),使用PHP4Delphi组件与php5ts.dll连接.我想我的程序充当PHP(sapi模块?)的扩展,因为它注册了一些可以在PHP脚本中使用的函数和常量......无论如何,在使用简单数据类型时效果很好,但是当我尝试使用多维数组时作为返回值我得到错误

Access violation at address 01CD3C35 in module 'php5ts.dll'. Read of address 0231E608.
堆栈列表
(000A2C35){php5ts.dll} [01CD3C35] destroy_op_array + $35
(004C4D61){myApp.exe } [008C5D61] php4delphi.TPHPEngine.ShutdownEngine (Line 1497, "php4delphi.pas" + 17) + $7

php4delphi.pas中的第1497行是调用的 tsrm_shutdown();

对我来说,它看起来像垃圾收集器在脚本结束时崩溃,所以我怀疑我没有正确地将数据发送回引擎...因此我的问题是如何将多维数组发送回PHP?
我正在使用的模式是

var subArray: pzval;  
_array_init(return_value, nil, 0);  
for x := 0 to Data.Count-1 do begin  
   subArray := MAKE_STD_ZVAL;  
   _array_init(subArray, nil, 0);  
   // populate subarray with data, including other subarrays
   ...
   // add subarray to the main array
   add_index_zval(return_value, x, subArray);
end;
Run Code Online (Sandbox Code Playgroud)

我是否必须"注册"我创建的子阵列?我必须增加或减少refcount或设置is_ref?IOW,如何设置子数组的return_value和zvals? …

delphi php-extension delphi-2010 php-internals php4delphi

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

WCF:如何阻止myServiceHost.Close()处置myServiceHost对象?

显然,关闭和处置实际上是相同的.我希望能够关闭并打开我的ServiceHost实例,而无需每次都重新实例化它.有任何想法吗?谢谢.

c# wcf garbage-collection visual-studio-2010 servicehost

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

如何使用VBA在Excel中添加连接(到外部数据源)并将其保存到该Excel电子表格的Connections列表中

我可以使用VBA创建一个新的ADODB.Connection和相关的ADODB.Command和ADOBD.Parameter,然后创建一个PivotCache和一个数据透视表

Sub CreatePivotTable()
    'Declare variables
    Dim objMyConn As ADODB.Connection
    Dim objMyCmd As ADODB.Command
    Dim objMyParam As ADODB.Parameter
    Dim objMyRecordset As ADODB.Recordset

    Set objMyConn = New ADODB.Connection
    Set objMyCmd = New ADODB.Command
    Set objMyRecordset = New ADODB.Recordset

    'Open Connection'
    objMyConn.ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=True;Initial Catalog=myMIS;Data Source=localhost;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=WKSTN101;Use Encryption for Data=False;Tag with column collation when possible=False"
    objMyConn.Open

    'Set and Excecute SQL Command'
    Set objMyCmd.ActiveConnection = objMyConn
    objMyCmd.CommandText = "select a.col1, a.col2, b.col3, b.col4" & _
                           "from …
Run Code Online (Sandbox Code Playgroud)

excel vba pivot-table

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

WCFExtras - 元素bahavior有无效的子元素'wsdlExtensions'?

<endpointBehaviors>
  <behavior name="singleFileEndpointBehavior">
    <wsdlExtensions singleFile="True" />
  </behavior>
</endpointBehaviors>
Run Code Online (Sandbox Code Playgroud)

"wsdlExtensions"下方有一条蓝线表示错误.

The element 'behavior' has invalid child element 'wsdlExtensions' ...

有谁知道如何解决这一问题?

wcf

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

如何在VisualForce页面中实现"取消"功能

我知道这是如何保存记录的

<apex:commandButton action="{!save}" value="Save"/>
Run Code Online (Sandbox Code Playgroud)

我想要一个按钮不保存当前记录(即取消)并导航到保存记录列表(即该对象类型的对象列表).

像这样......

<apex:commandButton action="{!cancel}" value="Cancel"/>
Run Code Online (Sandbox Code Playgroud)

salesforce force.com visualforce apex-code

7
推荐指数
2
解决办法
3万
查看次数

我如何构建一个const数组?

我正在实现一个解释器,我的解释器将支持的一个功能就像Delphi的Format.事实上,我正在使用我的函数SysUtils.Format.但是,我在构建函数的第二个参数时遇到了问题array of TVarRec.

假设我有以下代码.现在,我只假设解释代码需要访问哪些Delphi变量(iVar1iVar2),但我仍然不知道如何将它们放入Format需要(arFormatArgs)的结构中.

type TFormatArgs = array of TVarRec;

procedure RunInterpretedFormatFunction;
var
  iMyAge: integer;
  iMyIQ: integer;
  sCode: string;
  sText: string;
begin
  iMyAge := 5;
  iMyIQ := -5;
  sCode := 'Format(''My age is %d and my IQ is %d'', [iMyAge, iMyIQ])';
  sText := FormatThis(sCode, iMyAge, iMyIQ);
end;

function FormatThis(sFormatCode: string; iVar1: integer; iVar2: integer): string;
var
  sFormatString: string;
  arFormatArgs: TFormatArgs;
begin
  sFormatString := GetFormatString(sFormatCode); // I …
Run Code Online (Sandbox Code Playgroud)

delphi

7
推荐指数
3
解决办法
8022
查看次数

如何从现有的WCF服务创建单个WSDL文件?

如何从现有WCF服务创建单个平面WSDL文件(没有来自内部的外部引用)?此WSDL将被使用(导入)为仅支持BasicHttpBinding的旧编程技术.请解答您对初学者的回答.

wcf soap wsdl visual-studio-2010

6
推荐指数
2
解决办法
2万
查看次数

线程如何通知没有窗口句柄的对象?

我是多线程的新手,但不是一个完整的新手.我需要在工作线程中执行对Web服务的调用.

在主线程中,我有一个表单(TForm),它有一个私有数据成员(私有字符串),只有工作线程才能写入(我在它恢复之前将指针传递给线程).当工作线程完成其webservice调用并将结果响应xml写入表单上的私有成员时,工作线程使用PostMessage将消息发送到表单的句柄(我在恢复之前也将其传递给线程).

interface

const WM_WEBSERVCALL_COMPLETE = WM_USER + 1;

type 
  TWebServiceResponseXML = string;
  PWebServiceResponseXML = ^TWebServiceResponseXML;

  TMyForm = class(TForm)
    ...
  private
    ...
    fWorkerThreadID: Cardinal;
    fWebServiceResponseXML: TWebServiceResponseXML;
  public
    ...
    procedure StartWorkerThread;
    procedure OnWebServiceCallComplete(var Message: TMessage); Message WM_WEBSERVCALL_COMPLETE;
  end;

  TMyThread = class(TThread)
  private      
  protected
    procedure Execute; override;
  public
    SenderHandle: HWnd;
    RequestXML: string;
    ResponseXML: string;
    IMyService: IService;
    PResponseXML: PWebServiceResponseXML;
  end;

implementation

procedure TMyForm.StartWorkerThread;
var
  MyWorkerThread: TMyThread;
begin
  MyWorkerThread := TMyThread.Create(True);
  MyWorkerThread.FreeOnTerminate := True;
  MyWorkerThread.SenderHandle := self.Handle;
  MyWorkerThread.RequestXML := ComposeRequestXML;
  MyWorkerThread.PResponseXML := ^fWebServiceResponseXML;
  MyWorkerThread.Resume; …
Run Code Online (Sandbox Code Playgroud)

delphi multithreading windows-messages

6
推荐指数
2
解决办法
1477
查看次数

我可以使用编辑掩码来格式化输出吗?(不仅仅是验证输入)

德尔福 7 问题。我正在使用具有许多数据绑定控件的表单(更改这不是一个选项)。我有一个 TDBEDIT 控件绑定到一个 TStringField(它有一个 EditMask 属性)。我知道我可以使用这个 EditMask 来强制控件验证它的输入,但是我想知道我是否可以直接用原始值填充该字段并让控件根据 EditMask 显示它?

我想用 16 位数字填充该字段,但我希望它显示为 4 个 4 位数字(即 9999 9999 9999 9999)。

如果我做 ...

dbedtABCNumber.DataSource.DataSet.Edit;
dbedtABCNumber.Field.Value := '1234567812345678';
Run Code Online (Sandbox Code Playgroud)

我只显示前 4 位数字。

我希望有人更熟悉旧数据绑定控件的内部结构。

delphi

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

我的Delphi 7与Firebird 1.5.6应用程序在Windows 7上一段时间不活动后自行冻结

我开发了一个在客户端服务器环境中使用Firebird 1.5.6数据库的Delphi 7应用程序.

该应用程序在笔记本电脑上的Windows 7 32位上运行,数据库在用作服务器的Windows XP 32位计算机上运行.问题是应用程序在闲置一段时间后会自行冻结.仅当我们在Windows 7上安装此问题时,才会在Windows XP上出现此问题.

一切都运行良好5年,但现在在Windows 7上应用程序完全不稳定.

有时唤醒时间是10-30秒,但成功但有时从不使用消息"应用程序无响应"或"应用程序崩溃".

我不知道在哪里搜索或尝试找到解决方案.我尝试制作一个10秒分辨率的计时器,使其一直处于活动状态,但没有成功.

BTW我在管理员模式下运行,XP兼容模式处于活动状态.我还没有尝试过虚拟XP模式,但我认为它无法解决问题.

delphi firebird delphi-7 firebird1.5 windows-7

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