Внедряю в прогу шифрование, алгоритмы в dll, запутался в указателях и плагины не работают, если в красной строчке не заменить str2 и pass на str и PChar(Pass), а если заменить то не работает встроенный алгоритм...
Подскажите где нужны указатели, а где просто строки
Вот схема загрузки:
Код:
...
function Plug.DeCodeLine(Line, Pass : PChar) : PChar;//функция для плагина
begin
Result := '';
If @DEC <> nil Then
Result := DEC(Line, Pass);
end;
...
function DeCodeLine(Txt, pass : string) : string;//встроенный алгоритм
Var i,j : Integer;
begin
For i := 1 To Length(Txt) Do
Begin
<шифровать>
End;
Result := Txt;
end;
...
function DeCodeLinePlugin(Txt, Pass, FName : string) : string;
begin
Result := Txt;
If <нужныерасширения> Then//если расширения внутреннего алгоритма
begin
Result := DeCodeLine(Txt, Pass);
Exit;
end;
...
Result := Plug(Form1.PlugList.Items[i]).DeCodeLine(PChar(Txt), PChar(Pass));//если расширение плагина
...
end;
...
repeat
...
AssignFile(InFile, FileName);
Reset(InFile);
Read(InFile, str);
str2 := Copy(str, 1, Length(Str));
CloseFile(InFile);
ns := 'Секретный шифр';
If Pos(ns, DecodeLinePlugin(str2, Pass, FileName))=0 Then
MessageBox(Form1.Handle, 'Неверный пароль!', 'Ошибка', MB_OK Or MB_ICONERROR);
until(Pos(ns, DecodeLinePlugin(str, Pass, FileName))<>0);
...
З.Ы. Алгоритмы в плагинах полностью работоспособны