[ASP.NET]IIS7.0 + delphi元件的怪問題(已解)

[ASP.NET]IIS7.0 + delphi元件的怪問題(已解)

兩週前發了一篇文章:[ASP.NET]IIS7.0 + delphi元件的怪問題(未解)

這個問題在今天終於解掉了,今天在James的指導下終於找到問題所在點,今天為了測試Delphi的COM元件,寫了以下兩個function:

function TClass1.myInt(a1: Integer): Integer;
begin
   result := a1+100;    
end;

function TClass1.myString(xstr1: PChar): PChar;
begin
   result := xstr1;
end;

第一個function回傳Integer,第二個function回傳PChar,而測試的結果發現第一個function可以正常被執行,而第二個function則會造成w3wp crash,針對這個現象James給的建議是:PChar並非所有程式語言都認得,一般寫COM的時候不會使用PChar做回傳型別,建議改成WideString,結果很正點的,把PChar改成WideString後,真的可以跑了…Cool…

後來上網找了一些COM元件data type的資料,下面這篇最清楚:

COM Data Type Mapping

image

我們可以看到Delphi的部分確實沒有列出PChar,非常感謝James的指導,對高手來說這個果然很簡單阿...

 

參考資料:

C# PInvoke Delphi dll that returns a string fails in IIS only

Component Object Model (COM)

請問 Pchar 是怎面的型態啊 ?

COM Data Type Mapping

Delphi & .NET

游舒帆 (gipi)

探索原力Co-founder,曾任TutorABC協理與鼎新電腦總監,並曾獲選兩屆微軟最有價值專家 ( MVP ),離開職場後創辦探索原力,致力於協助青少年培養面對未來的能力。認為教育與組織育才其實息息相關,都是在為未來儲備能量,2018年起成立為期一年的專題課程《職涯躍升的關鍵24堂課》,為培養台灣未來的領袖而努力。