View difference between Paste ID: zq6NkJ0T and ng2ZUT6n
SHOW: | | - or go back to the newest paste.
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;
24+
  Classes, SysUtils, Math;
25
26-
procedure GetCRMUserGuid(ADBName, AHost, AUser, APass: PChar; var AResult: PChar); stdcall;
26+
procedure GetCRMUserGuid(ADBName, AHost, AUser, APass: PChar; var AResult: PChar;
27
  var AResultLen: Integer); stdcall;
28
29
implementation
30-
procedure GetCRMUserGuid(ADBName, AHost, AUser, APass: PChar; var AResult: PChar); stdcall;
30+
31
procedure GetCRMUserGuid(ADBName, AHost, AUser, APass: PChar; var AResult: PChar;
32
  var AResultLen: Integer); stdcall;
33
var
34
  S: string;
35-
  StrPCopy(AResult, S);
35+
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-
procedure GetCRMUserGuid(ADBName, AHost, AUser, APass: AnsiString; var AResult: AnsiString);
51+
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-
  S: AnsiString;
56+
57
procedure InitializeWizard;
58-
  SetLength(S, 255);
58+
59-
  GetCRMUserGuid('DBName', 'Host', 'User', 'Pass', S);
59+
  Buffer: AnsiString;
60-
  MsgBox(S, mbInformation, MB_OK);
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;