![]() |
|
#1
|
||||
|
||||
![]() Внедряю в прогу шифрование, алгоритмы в 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); ... Последний раз редактировалось KOOL, 06.04.2008 в 22:27. |
#2
|
||||
|
||||
![]() Так везде надо использовать указатели! И лучше использовать указатель на строку, а не PChar. Тогда не запутаешься
Хорошо написанная программа не требует документации ICQ 9-184-668. |