Commit 1f42d222b4e44c736b2407efebe3e81307aed2e3

Authored by Eric Menezes Noronha
1 parent 412c6e1f
Exists in master

-Modificado função para pegar o usuário logado para consulta pelo WMI;

-Modificada função para filtrar o resultado da consulta LDAP;
-Modificado timeout ao LDAP;
-Modificado local de estrita do col_patr_exe para Configs;
MapaTesteProj/MapaTeste.dcu
No preview for this file type
MapaTesteProj/MapaTeste.dfm
@@ -5,6 +5,7 @@ object frmMapaCacic: TfrmMapaCacic @@ -5,6 +5,7 @@ object frmMapaCacic: TfrmMapaCacic
5 ClientHeight = 448 5 ClientHeight = 448
6 ClientWidth = 789 6 ClientWidth = 789
7 Color = clBtnFace 7 Color = clBtnFace
  8 + TransparentColorValue = clBtnFace
8 Font.Charset = DEFAULT_CHARSET 9 Font.Charset = DEFAULT_CHARSET
9 Font.Color = clWindowText 10 Font.Color = clWindowText
10 Font.Height = -11 11 Font.Height = -11
@@ -87,6 +88,7 @@ object frmMapaCacic: TfrmMapaCacic @@ -87,6 +88,7 @@ object frmMapaCacic: TfrmMapaCacic
87 OnActivate = FormActivate 88 OnActivate = FormActivate
88 OnClose = FormClose 89 OnClose = FormClose
89 OnCreate = FormCreate 90 OnCreate = FormCreate
  91 + OnKeyDown = FormKeyDown
90 DesignSize = ( 92 DesignSize = (
91 789 93 789
92 448) 94 448)
MapaTesteProj/MapaTeste.pas
@@ -32,6 +32,7 @@ uses @@ -32,6 +32,7 @@ uses
32 Dialogs, 32 Dialogs,
33 CACIC_Library, 33 CACIC_Library,
34 CACIC_Comm, 34 CACIC_Comm,
  35 + CACIC_WMI,
35 ComCtrls, 36 ComCtrls,
36 Commctrl, 37 Commctrl,
37 ShellAPI, 38 ShellAPI,
@@ -60,6 +61,7 @@ var strCollectsPatrimonioLast, @@ -60,6 +61,7 @@ var strCollectsPatrimonioLast,
60 Fechar : boolean; 61 Fechar : boolean;
61 Dummy : integer; 62 Dummy : integer;
62 OldValue : LongBool; 63 OldValue : LongBool;
  64 + formSecondMonitor : TForm;
63 65
64 type 66 type
65 TfrmMapaCacic = class(TForm) 67 TfrmMapaCacic = class(TForm)
@@ -104,14 +106,14 @@ type @@ -104,14 +106,14 @@ type
104 procedure rdConcordaTermosClick(Sender: TObject); 106 procedure rdConcordaTermosClick(Sender: TObject);
105 procedure EstadoBarraTarefa(EstadoBarra: Boolean); 107 procedure EstadoBarraTarefa(EstadoBarra: Boolean);
106 108
107 - function getLastValue(S : String; separador : string): string; 109 + function getLastValue(S : String; separador, separador2 : string): string;
108 function LDAPName: string; 110 function LDAPName: string;
109 function NomeComputador : String; 111 function NomeComputador : String;
110 - function getUserLogon : String;  
111 function getConfigs : String; 112 function getConfigs : String;
112 function SetCpfUser : String; 113 function SetCpfUser : String;
113 function SetPatrimonioPC : String; 114 function SetPatrimonioPC : String;
114 function FormatarCpf(strCpfUser : String) : String; 115 function FormatarCpf(strCpfUser : String) : String;
  116 + procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
115 117
116 118
117 private 119 private
@@ -122,7 +124,7 @@ type @@ -122,7 +124,7 @@ type
122 strTeInfoPatrimonio5, 124 strTeInfoPatrimonio5,
123 strTeInfoPatrimonio6, 125 strTeInfoPatrimonio6,
124 strTeInfoPatrimonio7 : String; 126 strTeInfoPatrimonio7 : String;
125 - formMonitor: TForm; 127 + psswd : String;
126 128
127 procedure FormSetFocus(VerificaFoco: Boolean); 129 procedure FormSetFocus(VerificaFoco: Boolean);
128 procedure MontaInterface; 130 procedure MontaInterface;
@@ -139,6 +141,8 @@ type @@ -139,6 +141,8 @@ type
139 141
140 end; 142 end;
141 143
  144 +const SENHA = 'uuddlrlrab';
  145 +
142 var frmMapaCacic: TfrmMapaCacic; 146 var frmMapaCacic: TfrmMapaCacic;
143 147
144 implementation 148 implementation
@@ -184,23 +188,6 @@ begin @@ -184,23 +188,6 @@ begin
184 end; 188 end;
185 189
186 //------------------------------------------------------------------------------ 190 //------------------------------------------------------------------------------
187 -//------------------FUNÇÃO PARA RETORNAR O NOME DO USUARIO.---------------------  
188 -//------------------------------------------------------------------------------  
189 -  
190 -Function TfrmMapaCacic.getUserLogon : String;  
191 -var  
192 - lpBuffer : PChar;  
193 - nSize : DWord;  
194 -const Buff_Size = MAX_COMPUTERNAME_LENGTH + 1;  
195 -begin  
196 - nSize := Buff_Size;  
197 - lpBuffer := StrAlloc(Buff_Size);  
198 - GetUserName(lpBuffer,nSize);  
199 - Result := String(lpBuffer);  
200 - StrDispose(lpBuffer);  
201 -end;  
202 -  
203 -//------------------------------------------------------------------------------  
204 //----------------------FUNÇÃO PARA RETORNAR O PATRIMONIO----------------------- 191 //----------------------FUNÇÃO PARA RETORNAR O PATRIMONIO-----------------------
205 //------------------------------------------------------------------------------ 192 //------------------------------------------------------------------------------
206 193
@@ -246,7 +233,7 @@ var @@ -246,7 +233,7 @@ var
246 strUser : String; 233 strUser : String;
247 begin 234 begin
248 Result:=''; 235 Result:='';
249 - strUser:=getUserLogon; 236 + strUser:=strTeInfoPatrimonio3;
250 237
251 if (pos('-',strUser) > 0) then 238 if (pos('-',strUser) > 0) then
252 strCpfUser:=copy(strUser, 0, (pos('-', strUser)-1)); 239 strCpfUser:=copy(strUser, 0, (pos('-', strUser)-1));
@@ -259,14 +246,17 @@ end; @@ -259,14 +246,17 @@ end;
259 //-----------------------APÓS O SEPARADOR SELECIONADO--------------------------- 246 //-----------------------APÓS O SEPARADOR SELECIONADO---------------------------
260 //------------------------------------------------------------------------------ 247 //------------------------------------------------------------------------------
261 248
262 -function TfrmMapaCacic.getLastValue(S : String; separador : string): string; 249 +function TfrmMapaCacic.getLastValue(S : String; separador, separador2 : string): string;
263 var 250 var
264 - conta : integer; // variáveis auxiliares 251 + conta, tamanho_separador, tamanho_separador2 : integer; // variáveis auxiliares
265 resultado : TStringList; // variáveis auxiliares 252 resultado : TStringList; // variáveis auxiliares
266 - Saux : string; // variáveis auxiliares 253 + Saux, index : string; // variáveis auxiliares
267 begin 254 begin
268 resultado := TStringList.Create; // inicializa variavel 255 resultado := TStringList.Create; // inicializa variavel
269 - conta := pos(separador,S); // pega posição do separador 256 + tamanho_separador:= Length(separador);
  257 + tamanho_separador2:= Length(separador2);
  258 + index:=copy(separador2, 1, pos(#$D#$A, separador2)-1);
  259 + conta := pos(separador,S)+tamanho_separador; // pega posição do separador
270 if conta <> 0 then begin // verifica se existe o separador caso contrario trata apenas //como uma única linha 260 if conta <> 0 then begin // verifica se existe o separador caso contrario trata apenas //como uma única linha
271 while trim(S) <> '' do begin // enquanto S não for nulo executa 261 while trim(S) <> '' do begin // enquanto S não for nulo executa
272 Saux := copy(S,1,conta-1); // Variável Saux recebe primeiro valor 262 Saux := copy(S,1,conta-1); // Variável Saux recebe primeiro valor
@@ -275,15 +265,21 @@ begin @@ -275,15 +265,21 @@ begin
275 Saux := S; 265 Saux := S;
276 S := ''; 266 S := '';
277 end; 267 end;
278 - resultado.Add(Saux); // adiciona linhas na string lista  
279 - conta := pos(separador,S); //pega posição do separador 268 + if pos(separador2, Saux)>0 then begin
  269 + delete(Saux, 1, tamanho_separador2);
  270 + resultado.values[index]:=
  271 + copy(Saux,1,pos(#$D#$A, Saux));
  272 + break;
  273 + end;
  274 + resultado.add(Saux); // adiciona linhas na string lista
  275 + conta := pos(separador,S); //pega posição do separador
280 end; 276 end;
281 - end 277 + end
282 else begin 278 else begin
283 Saux := S; 279 Saux := S;
284 resultado.Add(Saux); 280 resultado.Add(Saux);
285 end; 281 end;
286 - Result := trim(resultado[resultado.count-1]); // retorna resultado como uma lista indexada 282 + Result := trim(resultado.values[index]); // retorna resultado como uma lista indexada
287 end; 283 end;
288 284
289 //------------------------------------------------------------------------------ 285 //------------------------------------------------------------------------------
@@ -395,7 +391,7 @@ if edTeInfoNome.text &lt;&gt; &#39;&#39; then @@ -395,7 +391,7 @@ if edTeInfoNome.text &lt;&gt; &#39;&#39; then
395 btGravarInformacoes.Caption := 'Informações enviadas com sucesso...'; 391 btGravarInformacoes.Caption := 'Informações enviadas com sucesso...';
396 objCacic.setValueToFile('Collects','col_patr_last' , 392 objCacic.setValueToFile('Collects','col_patr_last' ,
397 objCacic.enCrypt(strColetaAtual), strGerColsInfFileName); 393 objCacic.enCrypt(strColetaAtual), strGerColsInfFileName);
398 - objCacic.setValueToFile('Collects','col_patr_exe', 's', strGerColsInfFileName); 394 + objCacic.setValueToFile('Configs','col_patr_exe', 's', strGerColsInfFileName);
399 395
400 End; 396 End;
401 objCacic.writeDebugLog(#13#10 + 'AtualizaPatrimonio: Dados Enviados ao Servidor!'); 397 objCacic.writeDebugLog(#13#10 + 'AtualizaPatrimonio: Dados Enviados ao Servidor!');
@@ -415,23 +411,6 @@ var strConfigsPatrimonioInterface, @@ -415,23 +411,6 @@ var strConfigsPatrimonioInterface,
415 Begin 411 Begin
416 btCombosUpdate.Enabled := false; 412 btCombosUpdate.Enabled := false;
417 413
418 - //-------------------------------NOME USUARIO-----------------------------------  
419 - strNomeLDAP := getLastValue(LDAPName, #$D#$A);  
420 -  
421 -  
422 - if (strNomeLDAP <> '') and (strNomeLDAP <> 'Results: 0') then  
423 - begin  
424 - edTeInfoNome.Text := strNomeLDAP;  
425 - edTeInfoNome.Visible := true;  
426 - lbEtiquetaNome.Visible := true;  
427 - end  
428 - else  
429 - begin  
430 - edTeInfoNome.Visible := true;  
431 - edTeInfoNome.Enabled := true;  
432 - lbEtiquetaNome.Visible := true;  
433 - end;  
434 -  
435 //- ----------------------NOME DO COMPUTADOR PARA O EDTEXT----------------------- 414 //- ----------------------NOME DO COMPUTADOR PARA O EDTEXT-----------------------
436 edTeInfoNomeComputador.Text := NomeComputador; 415 edTeInfoNomeComputador.Text := NomeComputador;
437 if edTeInfoNomeComputador.Text <> '' then 416 if edTeInfoNomeComputador.Text <> '' then
@@ -444,13 +423,33 @@ Begin @@ -444,13 +423,33 @@ Begin
444 423
445 //-----------------------------USUARIO LOGADO----------------------------------- 424 //-----------------------------USUARIO LOGADO-----------------------------------
446 425
447 - edTeInfoUserLogado.Text := getUserLogon; 426 +// edTeInfoUserLogado.Text := getUserLogon;
  427 + strTeInfoPatrimonio3:=objCACIC.getValueFromTags('UserName',fetchWMIvalues('Win32_ComputerSystem',objCACIC.getLocalFolderName,'UserName'));
  428 + strTeInfoPatrimonio3:=copy(strTeInfoPatrimonio3, pos('\', strTeInfoPatrimonio3)+1, length(strTeInfoPatrimonio3));
  429 + edTeInfoUserLogado.Text:=strTeInfoPatrimonio3;
448 if edTeInfoUserLogado.Text <> '' then 430 if edTeInfoUserLogado.Text <> '' then
449 begin 431 begin
450 lbEtiquetaUserLogado.Visible := true; 432 lbEtiquetaUserLogado.Visible := true;
451 edTeInfoUserLogado.Visible := true; 433 edTeInfoUserLogado.Visible := true;
452 end; 434 end;
453 435
  436 + //-------------------------------NOME USUARIO-----------------------------------
  437 + strNomeLDAP := getLastValue(LDAPName, 'Attribute:', 'cn'+#$D#$A);
  438 +
  439 +
  440 + if (strNomeLDAP <> '') and (strNomeLDAP <> 'Results: 0') then
  441 + begin
  442 + edTeInfoNome.Text := strNomeLDAP;
  443 + edTeInfoNome.Visible := true;
  444 + lbEtiquetaNome.Visible := true;
  445 + end
  446 + else
  447 + begin
  448 + edTeInfoNome.Visible := true;
  449 + edTeInfoNome.Enabled := true;
  450 + lbEtiquetaNome.Visible := true;
  451 + end;
  452 +
454 //-------------------------------CPF USUARIO------------------------------------ 453 //-------------------------------CPF USUARIO------------------------------------
455 454
456 { edTeInfoCpfUser.Text := FormatarCpf(SetCpfUser); 455 { edTeInfoCpfUser.Text := FormatarCpf(SetCpfUser);
@@ -522,7 +521,7 @@ begin @@ -522,7 +521,7 @@ begin
522 Else 521 Else
523 begin 522 begin
524 Action := caFree; 523 Action := caFree;
525 - formMonitor:=nil; 524 + formSecondMonitor:=nil;
526 objCacic.writeDebugLog('FormClose: ' + Sender.ClassName); 525 objCacic.writeDebugLog('FormClose: ' + Sender.ClassName);
527 Finalizar(true); 526 Finalizar(true);
528 end; 527 end;
@@ -538,7 +537,7 @@ begin @@ -538,7 +537,7 @@ begin
538 on E:Exception do 537 on E:Exception do
539 Begin 538 Begin
540 MessageDlg(#13#13+'Problemas ao gerar formulário.',mtError, [mbOK], 0); 539 MessageDlg(#13#13+'Problemas ao gerar formulário.',mtError, [mbOK], 0);
541 - EstadoBarraTarefa(TRUE); 540 +// EstadoBarraTarefa(TRUE);
542 objCacic.writeExceptionLog(E.Message,e.ClassName); 541 objCacic.writeExceptionLog(E.Message,e.ClassName);
543 Sair; 542 Sair;
544 End; 543 End;
@@ -550,8 +549,8 @@ var @@ -550,8 +549,8 @@ var
550 foco: boolean; 549 foco: boolean;
551 550
552 begin 551 begin
553 -  
554 - 552 + psswd := '';
  553 + KeyPreview := true;
555 frmMapaCacic.boolAcessoOK := true; 554 frmMapaCacic.boolAcessoOK := true;
556 //Definido TRUE, se não, mesmo que o foco seja falso, a aplicação não é fechada quando quiser. 555 //Definido TRUE, se não, mesmo que o foco seja falso, a aplicação não é fechada quando quiser.
557 Fechar:=TRUE; 556 Fechar:=TRUE;
@@ -621,7 +620,7 @@ begin @@ -621,7 +620,7 @@ begin
621 pnMessageBox.Visible := false; 620 pnMessageBox.Visible := false;
622 objCacic.writeDebugLog('FormActivate: Requisitando informações de patrimônio da estação...'); 621 objCacic.writeDebugLog('FormActivate: Requisitando informações de patrimônio da estação...');
623 622
624 - if (getConfigs <> '0') then 623 + if getConfigs <> '0' then
625 begin 624 begin
626 mapa; 625 mapa;
627 FormSetFocus(foco) 626 FormSetFocus(foco)
@@ -648,13 +647,13 @@ begin @@ -648,13 +647,13 @@ begin
648 End; 647 End;
649 end; 648 end;
650 649
  650 +
651 procedure TfrmMapaCacic.FormActivate(Sender: TObject); 651 procedure TfrmMapaCacic.FormActivate(Sender: TObject);
652 -var strNomeLDAP: String;  
653 652
654 begin 653 begin
655 pnVersao.Caption := 'Versão: ' + objCacic.getVersionInfo(ParamStr(0)); 654 pnVersao.Caption := 'Versão: ' + objCacic.getVersionInfo(ParamStr(0));
656 strFrmAtual := 'Principal'; 655 strFrmAtual := 'Principal';
657 - 656 +
658 end; 657 end;
659 658
660 procedure TfrmMapaCacic.btCombosUpdateClick(Sender: TObject); 659 procedure TfrmMapaCacic.btCombosUpdateClick(Sender: TObject);
@@ -672,9 +671,7 @@ end; @@ -672,9 +671,7 @@ end;
672 procedure TfrmMapaCacic.FormSetFocus(VerificaFoco: Boolean); 671 procedure TfrmMapaCacic.FormSetFocus(VerificaFoco: Boolean);
673 var 672 var
674 r : TRect; 673 r : TRect;
675 - MonInfo: TMonitorInfoEx;  
676 - DispDev : TDisplayDevice;  
677 - i, monitorWidth, monitorHeight: Integer; 674 + H : HWnd;
678 begin 675 begin
679 if VerificaFoco then 676 if VerificaFoco then
680 begin 677 begin
@@ -689,31 +686,56 @@ begin @@ -689,31 +686,56 @@ begin
689 Screen.WorkAreaRect; 686 Screen.WorkAreaRect;
690 Top := Screen.WorkAreaTop; 687 Top := Screen.WorkAreaTop;
691 Left := Screen.WorkAreaLeft; 688 Left := Screen.WorkAreaLeft;
692 - {if Screen.MonitorCount>1 then 689 + Width := Screen.WorkAreaWidth;
  690 + Height := Screen.Height;
  691 + { if Screen.MonitorCount>1 then
693 begin 692 begin
694 - formMonitor := TForm.Create(Application); 693 + formSecondMonitor := TForm.Create(nil);
695 for i := 0 to Screen.MonitorCount - 1 do 694 for i := 0 to Screen.MonitorCount - 1 do
696 begin 695 begin
697 if not Screen.Monitors[i].Primary then 696 if not Screen.Monitors[i].Primary then
698 - formMonitor.WindowState := wsNormal;  
699 - formMonitor.BorderStyle := bsNone;  
700 - formMonitor.MakeFullyVisible(Screen.Monitors[i]);  
701 - formMonitor.Visible:=true; 697 + formSecondMonitor.WindowState := wsNormal;
  698 + formSecondMonitor.BorderStyle := bsNone;
  699 + formSecondMonitor.Width := Screen.Monitors[i].Width;
  700 + formSecondMonitor.Height := Screen.Monitors[i].Height;
  701 + formSecondMonitor.top := Screen.Monitors[i].top;
  702 + formSecondMonitor.left := Screen.Monitors[i].left;
  703 + formSecondMonitor.Enabled := true;
  704 + formSecondMonitor.Visible:=true;
702 end; 705 end;
703 - end  
704 - else  
705 - begin  
706 - monitorWidth := screen.Width;  
707 - monitorHeight:= screen.Height;  
708 - end;} 706 + end;
  707 + }
  708 +// EstadoBarraTarefa(FALSE);
  709 +
  710 + H := FindWindow(Nil,'mapacacic'); {troque project1 pelo nome do seu projeto)}
  711 + if H <> 0 then ShowWindow(H,SW_HIDE);
  712 +
709 713
710 - Width := Screen.WorkAreaWidth;  
711 - Height := Screen.Height;  
712 - EstadoBarraTarefa(FALSE);  
713 end; 714 end;
714 715
715 end; 716 end;
716 717
  718 +//CODE PRA FECHAR O MAPA SEM PRESSIONAR NADA. (/\ + /\ + V + V + <- + -> + <- + -> + A + B)
  719 +procedure TfrmMapaCacic.FormKeyDown(Sender: TObject; var Key: Word;
  720 + Shift: TShiftState);
  721 +
  722 +begin
  723 + case Key of
  724 + VK_Left : psswd:=psswd+'l';
  725 + VK_Right : psswd:=psswd+'r';
  726 + VK_Up : psswd:=psswd+'u';
  727 + VK_Down : psswd:=psswd+'d';
  728 + 65 : psswd:=psswd+'a';
  729 + 66 : psswd:=psswd+'b';
  730 + else
  731 + psswd:='';
  732 + end;
  733 + if psswd = SENHA then
  734 + sair;
  735 +
  736 +end;
  737 +
  738 +
717 //------------------------------------------------------------------------------ 739 //------------------------------------------------------------------------------
718 //----------------ESCONDE BARRA DE TAREFAS-------------------------------------- 740 //----------------ESCONDE BARRA DE TAREFAS--------------------------------------
719 //------------------------------------------------------------------------------ 741 //------------------------------------------------------------------------------
@@ -813,49 +835,53 @@ var @@ -813,49 +835,53 @@ var
813 835
814 begin 836 begin
815 result := ''; 837 result := '';
816 - ldap := TLDAPsend.Create;  
817 - retorno := TStringList.Create;  
818 838
819 // PEGANDO OS DADOS DO POR MEIO DO GET/CONFIGS, ONDE SERÁ GRAVADO NO GERCOLS.INF 839 // PEGANDO OS DADOS DO POR MEIO DO GET/CONFIGS, ONDE SERÁ GRAVADO NO GERCOLS.INF
820 strDadosLDAP := objCacic.deCrypt(objCacic.getValueFromFile('Configs','servidor_autenticacao',strGerColsInfFileName)); 840 strDadosLDAP := objCacic.deCrypt(objCacic.getValueFromFile('Configs','servidor_autenticacao',strGerColsInfFileName));
821 - host := objCacic.getValueFromTags('ip', strDadosLDAP);  
822 - username := objCacic.getValueFromTags('usuario', strDadosLDAP);  
823 - psswd := objCacic.getValueFromTags('senha', strDadosLDAP);  
824 - base := objCacic.getValueFromTags('base', strDadosLDAP);  
825 - identificador:= objCacic.getValueFromTags('identificador', strDadosLDAP);  
826 - for i := 0 to 2 do //Até 2 porque são no máxio 3 identificadores que serão passados.  
827 - begin  
828 - aux:=objCacic.getValueFromTags('retorno'+IntToStr(i+1), strDadosLDAP);  
829 - if aux<>'' then  
830 - retorno.Add(aux);  
831 - end;  
832 - if (host<>'') or (base<>'') or (retorno.count=0) then 841 + if strDadosLDAP<>'' then
833 begin 842 begin
834 - try  
835 - try  
836 - ldap.TargetHost := host;  
837 - ldap.UserName := username;  
838 - ldap.Password := psswd;  
839 - if ldap.Login then //Loga no LDAP.  
840 - begin  
841 - ldap.BindSasl; //Autentica no LDAP com Usuário e senha repassado. (BindSasl é mais seguro que Bind)  
842 - ldap.Search(base, False, identificador+ '=' + getUserLogon, retorno); //Faz a pesquisa, com o CPF repassado.  
843 - result := LDAPResultdump(ldap.SearchResult);  
844 - ldap.Logout;  
845 - end;  
846 - finally  
847 - ldap.Free;  
848 - retorno.Free;  
849 - end;  
850 - Except  
851 - on E:Exception do  
852 - Begin  
853 - MessageDlg(#13#13+'Problemas para pegar nome do usuário.'+#13#13+  
854 - 'Por favor, digite seu nome no campo solicitado',mtError, [mbOK], 0);  
855 - objCacic.writeExceptionLog(E.Message,e.ClassName);  
856 - End; 843 + ldap := TLDAPsend.Create;
  844 + retorno := TStringList.Create;
  845 +
  846 + host := objCacic.getValueFromTags('ip', strDadosLDAP);
  847 + username := objCacic.getValueFromTags('usuario', strDadosLDAP);
  848 + psswd := objCacic.getValueFromTags('senha', strDadosLDAP);
  849 + base := objCacic.getValueFromTags('base', strDadosLDAP);
  850 + identificador:= objCacic.getValueFromTags('identificador', strDadosLDAP);
  851 + for i := 0 to 2 do //Até 2 porque são no máxio 3 identificadores que serão passados.
  852 + begin
  853 + aux:=objCacic.getValueFromTags('retorno'+IntToStr(i+1), strDadosLDAP);
  854 + if aux<>'' then
  855 + retorno.Add(aux);
857 end; 856 end;
858 - end; 857 + if (host<>'') and (base<>'') and (retorno.count<>0) and (username<>'') then
  858 + begin
  859 + try
  860 + try
  861 + ldap.TargetHost := host;
  862 + ldap.UserName := username;
  863 + ldap.Password := psswd;
  864 + ldap.Timeout := 5000;
  865 + if ldap.Login and ldap.BindSasl then //Loga no LDAP e autentica no LDAP com Usuário e senha repassado. (BindSasl é mais seguro que Bind)
  866 + begin
  867 + ldap.Search(base, False, identificador+ '=' + strTeInfoPatrimonio3, retorno); //Faz a pesquisa, com o CPF repassado.
  868 + result := LDAPResultdump(ldap.SearchResult);
  869 + ldap.Logout;
  870 + end;
  871 + finally
  872 + ldap.Free;
  873 + retorno.Free;
  874 + end;
  875 + Except
  876 + on E:Exception do
  877 + Begin
  878 + MessageDlg(#13#13+'Problemas para pegar nome do usuário.'+#13#13+
  879 + 'Por favor, digite seu nome no campo solicitado',mtError, [mbOK], 0);
  880 + objCacic.writeExceptionLog(E.Message,e.ClassName);
  881 + End; //on E:Exception do
  882 + end; // Try
  883 + end; // if (host<>'') or (base<>'') or (retorno.count=0) then
  884 + end; //if strDadosLDAP<>'' then
859 end; 885 end;
860 886
861 887