procedure TCMLangConvertCharset.ConnectTo(svrIntf: IMLangConvertCharset);
begin
Disconnect;
FIntf := svrIntf;
end;
procedure TCMLangConvertCharset.DisConnect;
begin
if Fintf <> nil then
begin
FIntf := nil;
end;
end;
function TCMLangConvertCharset.GetDefaultInterface: IMLangConvertCharset;
begin
if FIntf = nil then
Connect;
Assert(FIntf <> nil, 'DefaultInterface is NULL. Component is not connected to Server. You must call ''Connect'' or ''ConnectTo'' before this operation');
Result := FIntf;
end;
constructor TCMLangConvertCharset.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
FProps := TCMLangConvertCharsetProperties.Create(Self);
{$ENDIF}
end;
destructor TCMLangConvertCharset.Destroy;
begin
{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
FProps.Free;
{$ENDIF}
inherited Destroy;
end;
{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
function TCMLangConvertCharset.GetServerProperties: TCMLangConvertCharsetProperties;
begin
Result := FProps;
end;
{$ENDIF}
function TCMLangConvertCharset.Initialize(uiSrcCodePage: SYSUINT; uiDstCodePage: SYSUINT;
dwProperty: LongWord): HResult;
begin
Result := DefaultInterface.Initialize(uiSrcCodePage, uiDstCodePage, dwProperty);
end;
function TCMLangConvertCharset.GetSourceCodePage(out puiSrcCodePage: SYSUINT): HResult;
begin
Result := DefaultInterface.GetSourceCodePage(puiSrcCodePage);
end;
function TCMLangConvertCharset.GetDestinationCodePage(out puiDstCodePage: SYSUINT): HResult;
begin
Result := DefaultInterface.GetDestinationCodePage(puiDstCodePage);
end;
function TCMLangConvertCharset.GetProperty(out pdwProperty: LongWord): HResult;
begin
Result := DefaultInterface.GetProperty(pdwProperty);
end;
function TCMLangConvertCharset.DoConversion(var pSrcStr: Byte; var pcSrcSize: SYSUINT;
var pDstStr: Byte; var pcDstSize: SYSUINT): HResult;
begin
Result := DefaultInterface.DoConversion(pSrcStr, pcSrcSize, pDstStr, pcDstSize);
end;
function TCMLangConvertCharset.DoConversionToUnicode(var pSrcStr: Shortint; var pcSrcSize: SYSUINT;
var pDstStr: Word; var pcDstSize: SYSUINT): HResult;
begin
Result := DefaultInterface.DoConversionToUnicode(pSrcStr, pcSrcSize, pDstStr, pcDstSize);
end;
function TCMLangConvertCharset.DoConversionFromUnicode(var pSrcStr: Word; var pcSrcSize: SYSUINT;
var pDstStr: Shortint; var pcDstSize: SYSUINT): HResult;
begin
Result := DefaultInterface.DoConversionFromUnicode(pSrcStr, pcSrcSize, pDstStr, pcDstSize);
end;
{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
constructor TCMLangConvertCharsetProperties.Create(AServer: TCMLangConvertCharset);
begin
inherited Create;
FServer := AServer;
end;
function TCMLangConvertCharsetProperties.GetDefaultInterface: IMLangConvertCharset;
begin
Result := FServer.DefaultInterface;
end;
{$ENDIF}
class function CoCMultiLanguage.Create: IMultiLanguage;
begin
Result := CreateComObject(CLASS_CMultiLanguage) as IMultiLanguage;
end;
class function CoCMultiLanguage.CreateRemote(const MachineName: string): IMultiLanguage;
begin
Result := CreateRemoteComObject(MachineName, CLASS_CMultiLanguage) as IMultiLanguage;
end;
procedure TCMultiLanguage.InitServerData;
const
CServerData: TServerData = (
ClassID: '{275C23E2-3747-11D0-9FEA-00AA003F8646}';
IntfIID: '{275C23E1-3747-11D0-9FEA-00AA003F8646}';
EventIID: '';
LicenseKey: nil;
Version: 500);
begin
ServerData := @CServerData;
end;
procedure TCMultiLanguage.Connect;
var
punk: IUnknown;
begin
if FIntf = nil then
begin
punk := GetServer;
Fintf:= punk as IMultiLanguage;
end;
end;
procedure TCMultiLanguage.ConnectTo(svrIntf: IMultiLanguage);
begin
Disconnect;
FIntf := svrIntf;
end;
procedure TCMultiLanguage.DisConnect;
begin
if Fintf <> nil then
begin
FIntf := nil;
end;
end;
function TCMultiLanguage.GetDefaultInterface: IMultiLanguage;
begin
if FIntf = nil then
Connect;
Assert(FIntf <> nil, 'DefaultInterface is NULL. Component is not connected to Server. You must call ''Connect'' or ''ConnectTo'' before this operation');
Result := FIntf;
end;
constructor TCMultiLanguage.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
FProps := TCMultiLanguageProperties.Create(Self);
{$ENDIF}
end;
destructor TCMultiLanguage.Destroy;
begin
{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
FProps.Free;
{$ENDIF}
inherited Destroy;
end;
{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
function TCMultiLanguage.GetServerProperties: TCMultiLanguageProperties;
begin
Result := FProps;
end;
{$ENDIF}
function TCMultiLanguage.GetNumberOfCodePageInfo(out pcCodePage: SYSUINT): HResult;
begin
Result := DefaultInterface.GetNumberOfCodePageInfo(pcCodePage);
end;
function TCMultiLanguage.GetCodePageInfo(uiCodePage: SYSUINT; out pCodePageInfo: tagMIMECPINFO): HResult;
begin
Result := DefaultInterface.GetCodePageInfo(uiCodePage, pCodePageInfo);
end;
function TCMultiLanguage.GetFamilyCodePage(uiCodePage: SYSUINT; out puiFamilyCodePage: SYSUINT): HResult;
begin
Result := DefaultInterface.GetFamilyCodePage(uiCodePage, puiFamilyCodePage);
end;
function TCMultiLanguage.EnumCodePages(grfFlags: LongWord; out ppEnumCodePage: IEnumCodePage): HResult;
begin
Result := DefaultInterface.EnumCodePages(grfFlags, ppEnumCodePage);
end;
function TCMultiLanguage.GetCharsetInfo(const Charset: WideString; out pCharsetInfo: tagMIMECSETINFO): HResult;
begin
Result := DefaultInterface.GetCharsetInfo(Charset, pCharsetInfo);
end;
function TCMultiLanguage.IsConvertible(dwSrcEncoding: LongWord; dwDstEncoding: LongWord): HResult;
begin
Result := DefaultInterface.IsConvertible(dwSrcEncoding, dwDstEncoding);
end;
function TCMultiLanguage.ConvertString(var pdwMode: LongWord; dwSrcEncoding: LongWord;
dwDstEncoding: LongWord; var pSrcStr: Byte;
var pcSrcSize: SYSUINT; var pDstStr: Byte;
var pcDstSize: SYSUINT): HResult;
begin
Result := DefaultInterface.ConvertString(pdwMode, dwSrcEncoding, dwDstEncoding, pSrcStr,
pcSrcSize, pDstStr, pcDstSize);
end;
function TCMultiLanguage.ConvertStringToUnicode(var pdwMode: LongWord; dwEncoding: LongWord;
var pSrcStr: Shortint; var pcSrcSize: SYSUINT;
var pDstStr: Word; var pcDstSize: SYSUINT): HResult;
begin
Result := DefaultInterface.ConvertStringToUnicode(pdwMode, dwEncoding, pSrcStr, pcSrcSize,
pDstStr, pcDstSize);
end;
function TCMultiLanguage.ConvertStringFromUnicode(var pdwMode: LongWord; dwEncoding: LongWord;
var pSrcStr: Word; var pcSrcSize: SYSUINT;
var pDstStr: Shortint; var pcDstSize: SYSUINT): HResult;
begin
Result := DefaultInterface.ConvertStringFromUnicode(pdwMode, dwEncoding, pSrcStr, pcSrcSize,
pDstStr, pcDstSize);
end;
function TCMultiLanguage.ConvertStringReset: HResult;
begin
Result := DefaultInterface.ConvertStringReset;
end;
function TCMultiLanguage.GetRfc1766FromLcid(locale: LongWord; out pbstrRfc1766: WideString): HResult;
begin
Result := DefaultInterface.GetRfc1766FromLcid(locale, pbstrRfc1766);
end;
function TCMultiLanguage.GetLcidFromRfc1766(out plocale: LongWord; const bstrRfc1766: WideString): HResult;
begin
Result := DefaultInterface.GetLcidFromRfc1766(plocale, bstrRfc1766);
end;
function TCMultiLanguage.EnumRfc1766(out ppEnumRfc1766: IEnumRfc1766): HResult;
begin
Result := DefaultInterface.EnumRfc1766(ppEnumRfc1766);
end;
function TCMultiLanguage.GetRfc1766Info(locale: LongWord; out pRfc1766Info: tagRFC1766INFO): HResult;
begin
Result := DefaultInterface.GetRfc1766Info(locale, pRfc1766Info);
end;
function TCMultiLanguage.CreateConvertCharset(uiSrcCodePage: SYSUINT; uiDstCodePage: SYSUINT;
dwProperty: LongWord;
out ppMLangConvertCharset: IMLangConvertCharset): HResult;
begin
Result := DefaultInterface.CreateConvertCharset(uiSrcCodePage, uiDstCodePage, dwProperty,
ppMLangConvertCharset);
end;
{$IFDEF LIVE_SERVER_AT_DESIGN_TIME}
constructor TCMultiLanguageProperties.Create(AServer: TCMultiLanguage);
begin
inherited Create;
FServer := AServer;
end;
function TCMultiLanguageProperties.GetDefaultInterface: IMultiLanguage;
begin
Result := FServer.DefaultInterface;
end;
{$ENDIF}
procedure Register;
begin
RegisterComponents(dtlServerPage, [TCMLangString, TCMLangConvertCharset, TCMultiLanguage]);
end;
end.