TLama

Untitled

May 27th, 2014
588
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. library MyLibrary;
  2.  
  3. {$mode objfpc}{$H+}
  4.  
  5. uses
  6.   Classes, MainUnit;
  7.  
  8. exports
  9.   GetCRMUserGuid;
  10.  
  11. begin
  12.  
  13. end.
  14.  
  15. -----------------------------------------------------------------------
  16.  
  17. unit MainUnit;
  18.  
  19. {$mode objfpc}{$H+}
  20.  
  21. interface
  22.  
  23. uses
  24.   Classes, SysUtils, Math;
  25.  
  26. procedure GetCRMUserGuid(ADBName, AHost, AUser, APass: PChar; var AResult: PChar;
  27.   var AResultLen: Integer); stdcall;
  28.  
  29. implementation
  30.  
  31. procedure GetCRMUserGuid(ADBName, AHost, AUser, APass: PChar; var AResult: PChar;
  32.   var AResultLen: Integer); stdcall;
  33. var
  34.   S: string;
  35. begin
  36.   S := String(ADBName) + String(AHost) + String(AUser) + String(APass);
  37.   AResultLen := Min(AResultLen, Length(S));
  38.   StrPLCopy(AResult, S, AResultLen);
  39. end;
  40.  
  41. end.
  42.  
  43. -----------------------------------------------------------------------
  44.  
  45. [Setup]
  46. AppName=My Program
  47. AppVersion=1.5
  48. DefaultDirName={pf}\My Program
  49.  
  50. [Files]
  51. Source: "MyLibrary.dll"; Flags: dontcopy
  52.  
  53. [Code]
  54. procedure GetCRMUserGuid(ADBName, AHost, AUser, APass: AnsiString; var AResult: AnsiString; var AResultLen: Integer);
  55.   external 'GetCRMUserGuid@files:mylibrary.dll stdcall';
  56.  
  57. procedure InitializeWizard;
  58. var
  59.   Buffer: AnsiString;
  60.   BufferLen: Integer;
  61. begin
  62.   BufferLen := 255;
  63.   SetLength(Buffer, BufferLen);
  64.   GetCRMUserGuid('DBName', 'Host', 'User', 'Pass', Buffer, BufferLen);
  65.   MsgBox('We received ' + IntToStr(BufferLen) + ' chars. Here they are: ' + Buffer, mbInformation, MB_OK);
  66. end;
Advertisement
Add Comment
Please, Sign In to add comment