Преобразование c функция времени delphi - PullRequest
1 голос
/ 03 апреля 2020

C код выглядит следующим образом;

clock_t clock_start, clock_end;

      clock_start = clock();

      if ((pass = create_pass(100, time(NULL))) == NULL)
         crate_pass_err("passerror");

Какое именно время здесь?

Я делаю с Delphi;

function create_pass(sz:DWORD;Sd:DWORD):Pointer;stdcall;external DLL;

start:=gettickcount;
DecodeTime(now, hours, mins, secs, milliSecs);
timeread:= strtoint(FormatDateTime('NNSSZZZ',time));

    pass:=create_pass(100,timeread); // timeread or millisecs or start ?

Что из этого будет дать тот же результат? Или есть другое решение?

edit: Результаты, которые я получаю в выходных данных программы, не совсем совпадают. Что именно "время" делает в c коде? Я пытаюсь найти это. (вывод c code: "stacksample", вывод delphi code "% Oê ^% O" Я пытаюсь преобразовать мою программу паролей в Delphi)

1 Ответ

3 голосов
/ 03 апреля 2020

time() - это функция C, которая обычно возвращает количество секунд, прошедших с эпохи Unix, 1 января 1970 г. 00:00 UT C (Я говорю обычно , потому что значение, фактически возвращаемое time(), не предписывается стандартом C, но большинство реализаций выполняются таким образом).

A Delphi перевод кода C, который вы показали, будет выглядеть примерно так:

uses
  ..., DateUtils;

var
  clock_start, clock_end: DWORD;
begin
  ...
  clock_start := GetTickCount;
  pass := create_pass(100, DWORD(DateTimeToUnix(Now, False)));
  if (pass = nil) then
    crate_pass_err('passerror');
  ...
  clock_end := GetTickCount;
  ...
end;
...