-
Господа есть функция на Фохпро: FUNCTION decrs LPARAMETERS stroka PRIVATE ALL stro = stroka IF fastdecryptmemory(@stro, @stro, LEN(stro))<>0 RETURN "" ENDIF RETURN stro ENDFUNC
которая импортируется из dll. Задача переписать ее на delphi, подскажите как? У меня получилось пока: function FastDecryptMemory(Value: PAnsiChar; var Key: PAnsiChar; Size: Integer): integer; stdcall; external 'c:\project\neoglite.dll';
function MyFastDecryptMemory(Value, Key: PAnsiChar; Size: Integer): integer; stdcall; var FFile: TStringList; FValue, FKey: string; FInt: integer; begin FFile := TStringList.Create; try FFile.LoadFromFile(GetCurrentDir + '\info.log'); FFile.Add(FormatDateTime('dd:mm:yyyy mm:ss ', now()) + ' Вызов функции: FastDecryptMemory'); try FKey := Value^; FValue := 'test'; FFile.Add(FormatDateTime('dd:mm:yyyy mm:ss ', now()) + ' FastDecryptMemory до: Value: ' + FValue);
if Length(FValue) > 0 then begin FInt := FastDecryptMemory(@FValue, @FKey, Length(FValue));
FFile.Add(FormatDateTime('dd:mm:yyyy mm:ss ', now()) + ' FastDecryptMemory после: Value: ' + string(FValue)); FFile.Add(FormatDateTime('dd:mm:yyyy mm:ss ', now()) + ' FastDecryptMemory после: result=' + string(FInt)); end;
except on e: exception do FFile.Add(FormatDateTime('dd:mm:yyyy mm:ss ', now()) + ' ' + e.message); end;
finally FFile.SaveToFile(GetCurrentDir + '\info.log'); FFile.Free; result := 0; end; end;
но при вызове функции FInt := FastDecryptMemory(@FValue, @FKey, Length(FValue)); выскакивает ошибка 24:04:2011 04:16 Access violation at address 10041CD7 in module 'neoglite.dll'. Read of address 00000000
Подскажите что не так? :(
-
Код эксперементальный, конечно же писал: FInt := FastDecryptMemory(@FValue, @FValue, Length(FValue));
-
господа, неужели нет мыслей? :(
-
function FastDecryptMemory(Value: PAnsiChar; var Key: PAnsiChar; Size: Integer): integer; stdcall; external 'c:\project\neoglite.dll'; зочем ссылку по ссылке отправил? function FastDecryptMemory(Value,Key: : PAnsiChar;Size: Integer): integer; stdcall; external 'c:\project\neoglite.dll';
-
> Value,Key: : PAnsiChar
> FValue, FKey: string; > ... > FKey := Value^; // ???? > FValue := 'test'; // константа !!!!!! > ... > FInt := FastDecryptMemory(@FValue, @FKey, Length(FValue));
|