@GrayL

Конвертировать JavaScript в Delphi?

Здравствуйте, помогите пожалуйста найти ошибку в коде

var a = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMN0PQRSTUVWXYZO123456789+/="
function o(t) {
    if (!t || t.length % 4 == 1)
        return !1;
    for (var i, e, o = 0, s = 0, r = ""; e = t.charAt(s++); ){
        e = a.indexOf(e), ~e && (i = o % 4 ? 64 * i + e : e, o++ % 4) && (r += String.fromCharCode(255 & i >> (-2 * o & 6)));
    }
    return r


function sar32(value, shift: longint): longint;
asm
  mov ecx, edx
  sar eax, cl
  end;

function FromCharCode(ch:array of byte):AnsiString;
var L:Integer;
begin
    L := Length(ch);
    SetLength(result, L);
    if L > 0 then Move(ch[0], result[1], L);
end;

function o(t:string): string;
var
o, s, i, eint :integer;
r :string;
ch : array[0..500] of byte;
ec : char;
const
a : string = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMN0PQRSTUVWXYZO123456789+/=';
begin
o := 0;
i := 0;
if (t = '') or (Length(t) mod 4 = 1) then
  r := 'False';
for s := 1 to Length(t) do
  begin
    eint := AnsiPos(t[s], a) - 1;
    if eint <> -1 then
      begin
        i := ifThen((o mod 4) <> 0, 64 * i + eint, eint);
        o := o + 1;
        ch[s] := (255 and sar32(i, (-2 * o and 6)));
        if inttostr(ch[s]) <> '0' then
          begin
            r := r + FromCharCode(ch[s]);
          end;
      end;
  end;
  result := r;
end;


Пример вызова JS
92c6aca4695c4e4889e49e58cd8bcba7.PNG

а в Delphi не совсем корректно отрабатывает
5f2934c3f94046e9be2fedeb05a2a29d.PNG

ссылка на исходный код js
  • Вопрос задан
  • 418 просмотров
Пригласить эксперта
Ответы на вопрос 2
Rou1997
@Rou1997
Это даже на лабораторную работу не похоже, скорее на проект какого-то бота, поэтому логичный вопрос: я тут все брошу и вам помогать буду, а вы деньги получите?
В помощи вы не нуждаетесь, проблема разрешима, есть как минимум два способа, первое - учиться анализировать и отлаживать, второе - альтернативное, подключить готовый "движок" JS, если бы хотели то решили бы ее быстрее, чем я, поскольку вы в курсе дела, я даже не знаю что это и куда.
И тэг #bytecode здесь ни при чем.
Ответ написан
Комментировать
@GrayL Автор вопроса
разобрался, проблема была и за разницы в функциях
String.fromCharCode(0) // ->> ' '
а в delphi
chr(0) // ничего не возвращает
//заменил на 
chr(32) // ->> ' '
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы