Array
(
)

[HELP] PHP + DELPHI + COM

Eduardo (emalherbi.com)
   - 20 mai 2015

Fala Galeraw.
Beleza?
Então estou com o seguinte problema, estou precisando ler uma DLL no php.
Tem um exemplo no site do PHP. E funciona perfeitamente para ler arquivos do Word. Porém quando meu colega aqui que manja de Delphi faz essa DLL COM. E eu tento chamar, a seguinte mensagem é apresentada.
"Não há suporte para esta interface"
Se na chamada eu colocar um Nome Qualquer. O Seguinte erro é apresentado.
"Sintaxe inválida"
Então ao meu ver me parece que a chamada esta certa. Somente falta algo nessa DLL do Delphi para funcionar corretamente.
Segue Códigos:
PHP Code.
#Código
try {
$obj = new COM("{20B9C5D8-CA47-4FEC-BD75-1D6E676E346D}"); // or die ( "Unable to instantiate the COM!");
$result = $obj->RetornaOI( 1 ) ;
echo $result;

} catch (Exception $e) {
echo 'Exception: ', $e->getMessage(), "\n";
}

Delphi Code.
#Código
unit Project1_TLB;
{$TYPEDADDRESS OFF} // Unit must be compiled without type-checked pointers.
{$WARN SYMBOL_PLATFORM OFF}
{$WRITEABLECONST ON}
{$VARPROPSETTER ON}
{$ALIGN 4}
interface
uses Winapi.Windows, System.Classes, System.Variants, System.Win.StdVCL, Vcl.Graphics, Vcl.OleServer, Winapi.ActiveX;

// *********************************************************************//
// GUIDS declared in the TypeLibrary. Following prefixes are used:
// Type Libraries : LIBID_xxxx
// CoClasses : CLASS_xxxx
// DISPInterfaces : DIID_xxxx
// Non-DISP interfaces: IID_xxxx
// *********************************************************************//
const
// TypeLibrary Major and minor versions
Project1MajorVersion = 1;
Project1MinorVersion = 0;
LIBID_Project1: TGUID = '{3F1A5D47-8E64-4266-B0C5-8D30A6A2F15E}';
IID_ITesteOI: TGUID = '{A702E3FB-107E-4E8E-BFF2-539B7655D268}';
CLASS_TesteOI: TGUID = '{20B9C5D8-CA47-4FEC-BD75-1D6E676E346D}';
type
// *********************************************************************//
// Forward declaration of types defined in TypeLibrary
// *********************************************************************//
ITesteOI = interface;
// *********************************************************************//
// Declaration of CoClasses defined in Type Library
// (NOTE: Here we map each CoClass to its Default Interface)
// *********************************************************************//
TesteOI = ITesteOI;

// *********************************************************************//
// Interface: ITesteOI
// Flags: (256) OleAutomation
// GUID: {A702E3FB-107E-4E8E-BFF2-539B7655D268}
// *********************************************************************//
ITesteOI = interface(IUnknown)
['{A702E3FB-107E-4E8E-BFF2-539B7655D268}']
function RetornaOI(Parametro: Integer): WideString; stdcall;
end;
// *********************************************************************//
// The Class CoTesteOI provides a Create and CreateRemote method to
// create instances of the default interface ITesteOI exposed by
// the CoClass TesteOI. The functions are intended to be used by
// clients wishing to automate the CoClass objects exposed by the
// server of this typelibrary.
// *********************************************************************//
CoTesteOI = class
class function Create: ITesteOI;
class function CreateRemote(const MachineName: string): ITesteOI;
end;
implementation
uses System.Win.ComObj;
class function CoTesteOI.Create: ITesteOI;
begin
Result := CreateComObject(CLASS_TesteOI) as ITesteOI;
end;
class function CoTesteOI.CreateRemote(const MachineName: string): ITesteOI;
begin
Result := CreateRemoteComObject(MachineName, CLASS_TesteOI) as ITesteOI;
end;
end.

Alguém ai pode me ajudar?
Abraços.