Saudações!!

Estou fazendo alterações em uma aplicação ISAPI em Delphi (Delphi 6,
servidor IIS, banco SQL Server) e estou tendo uns probleminhas com
cookies.

O sistema é dividido em 3 módulos, que rodam em 3 DLLs ISAPI
separadas. Para armazenar certos dados comuns aos 3 programas, estou
armazenando num cookie no usuário (login do usuário, operações que
pode fazer no banco, etc.). A function que verifica a "permissão" que
o usuário tem para determinada operação na base, em qualquer uma das
DLLs principais, roda perfeitamente.

// function TWebModule1.PermissaoOperacao (pProg, pOperacao : string): integer;
// Retorno: 1 - tem permissão, 2 - não tem permissão, 3 - não tem cookie aberto.

O caso é que estou agrupando funções comuns aos 3 módulos em uma DLL
em uma quarta (pra facilitar as coisas). Transferindo a function pra
outra DLL e fazendo a chamada à função externa em uma das DLLs
principais, ocorre Access Violation

Na DLL principal
// function PermissaoOperacao(pProg, pOperacao : ShortString):
integer; stdcall; far; external 'ACHFUNC.DLL' index 1;

Na DLL auxiliar, com as funções comuns:
// function PermissaoOperacao (pProg, pOperacao : ShortString) :
integer; stdcall;
(Lá embaixo, no "exports", estou exportando essa função com index 1.)

Alguém tem alguma dica? Por acaso uma DLL não-ISAPI não pode acessar
os cookies da máquina do usuário?

Abraços.


--
Tito G. S. de Aguiar
Desenvolvimento - T/SPA - PROCEMPA
[EMAIL PROTECTED]
MSN: [EMAIL PROTECTED]

P.S.: segue em anexo a função, pra facilitar.

function PermissaoOperacao (pProg, pOperacao : ShortString) : integer; stdcall;
var

  Request : TWebRequest;

  bAchou : boolean;
  iAux : integer;
  sAux, sCookieUser, sFuncao : ShortString;

begin

  if Request.CookieFields.Values[pProg] = '' then
    Result := 3
  else
  begin

    bAchou := False;
    sAux := Request.CookieFields.Values[pProg];
    iAux := pos('*',sAux);
    sCookieUser := copy(sAux, 1, iAux -1);

    while (iAux < length(sAux)) do
    begin

      sAux := copy(sAux, iAux + 1, length(sAux)- iAux);
      iAux := pos('#',sAux);
      sFuncao := copy(sAux,1,iAux -1);

      if (LowerCase(pOperacao) = LowerCase(sFuncao)) then
      begin
        bAchou := True;
        break;
      end;

    end; // fim do while

    if (bAchou = true) then
      Result := 1
    else
      Result := 2;

  end; // fim do else

end;


-- 
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

<*> Para ver as mensagens antigas, acesse:
    http://br.groups.yahoo.com/group/delphi-br/messages

<*> Para falar com o moderador, envie um e-mail para:
    [EMAIL PROTECTED]
 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/delphi-br/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 


Responder a