Перейти к содержанию

Drakon3

Стажёры
  • Постов

    8
  • Зарегистрирован

  • Посещение

Сообщения, опубликованные Drakon3

  1. function AOBScan(L: PLua_state): integer; cdecl;

    var

    parameters: integer;

    i,b: integer;

    scanstring: string;

    protectionflags: string;

    alignmentparam: string;

    alignmenttype: TFastScanMethod;

    list: tstringlist;

    begin

    result:=0;

    parameters:=lua_gettop(L);

    if parameters=0 then exit;

    protectionflags:='';

    alignmenttype:=fsmNotAligned;

    alignmentparam:='1';

    if (parameters>=1) and (lua_isstring(L,-parameters)) then

    begin

    //it's a scanstring, optional call

    scanstring:=Lua_ToString(L, -parameters);

    if parameters>=2 then

    protectionflags:=Lua_ToString(L, -parameters+1);

    if parameters>=3 then

    alignmenttype:=TFastScanMethod(lua_tointeger(L, -parameters+2));

    if parameters>=4 then

    alignmentparam:=Lua_ToString(L, -parameters+3);

    end

    else

    begin

    //buildup the scanstring

    scanstring:='';

    for i:=-parameters to -1 do

    begin

    b:=lua_tointeger(L,i);

    if (b>255) then scanstring:=scanstring+'* '

    else

    if b=0 then

    begin

    if not lua_isnumber(L,i) then

    scanstring:=scanstring+'* '

    else

    scanstring:=scanstring+'00 '

    end

    else scanstring:=scanstring+inttohex(b,2)+' ';

    end;

    end;

    lua_pop(L, lua_gettop(L));

    list:=tstringlist.create;

    if getaoblist(scanstring, list, protectionflags, alignmenttype, alignmentparam) then

    begin

    result:=1;

    lua_pushlightuserdata(L, list);

    end

    else

    begin

    list.free;

    end;

    end;

×
×
  • Создать...

Важная информация

Находясь на нашем сайте, Вы автоматически соглашаетесь соблюдать наши Условия использования.