Bonjour à tous! J'ai un problème avec un code qui utilise des PChar.
Voici le code :
function TKrnlwinux.Decrypt(_in: AnsiString; var _out: AnsiString; Cle: AnsiString): Boolean;
var BufferLen: Integer;
begin
Alloc(Length(_in));
BufferLen := Length(_in);
if (not CST1decrypt(PChar(_in), Length(_in), _Tmp, BufferLen, PChar(Cle))) then
begin
Result := False;
Exit;
end;
if (BufferLen <> 0) then
begin
SetLength(_out, BufferLen);
StrLCopy(PChar(_out), _Tmp, BufferLen);
end
else
begin
_out := '';
end;
Result := True;
Dispose();
end;
procedure TKrnlwinux.Alloc(Size: Cardinal);
begin
Dispose();
_Tmp := StrAlloc(Size);
end;
procedure TKrnlwinux.Dispose();
begin
if (_Tmp <> nil) then
begin
StrDispose(_Tmp);
_Tmp := nil;
end;
end;
_Tmp est une variable de type PChar initialisé a nil lors de la création de la classe. La fonction CST1decrypt se trouve dans une dll.
Mon problème, c'est que ce code marche, mais parfois, j'ai des erreur 'Opération de pointeurs incorrect' près du StrDispose(_Tmp); et en ce moment, tout marche, mais dès la création de la deuxieme form, j'ai une exception de Win, alors que quand je n'appelle pas la fonction Decrypt, tout marche :(
Où est mon erreur ?
Merci d'avance
\* -- Seb [
Mail] [
Web] -- */