can someone please convert this php - functiones to delphi [Edit]

Giganews Newsgroups
Subject:can someone please convert this php - functiones to delphi [Edit]
Posted by: Ronaldo DeVinche
Date:Fri, 27 Nov 2009

{code:php}
<?php
function abrir($archivo){
    $fp = fopen($archivo,"rb");
    $contenido = fread($fp, filesize($archivo));
    fclose($fp);
    return $contenido;
}

function decoBmd($tipo, $valor){
    switch ($tipo) {
        case 2:
            $resultado = $valor ^ 171;
            break;
        case 1:
            $resultado = $valor ^ 207;
            break;
        case 0:
            $resultado = $valor ^ 252;
            break;
        default:
            $resultado = 0;
            break;
    }
    return $resultado;
}

function decoBmd2($modo, $pasar, $inicio, $cantidad, $arrastre){
    $resultado = '';
    for($i=0;$i<$cantidad;$i++){
        $tipo = ($inicio + $i + $arrastre) % 3;
        $valor =ord($pasar[$i]);
        if($modo == 1){
            $resultado += decoBmd($tipo, $valor)*pow( 256, $i);
            if($resultado>2147483647)
                $resultado -= 4294967296;
        }
        else{
            $res_aux = decoBmd($tipo, $valor);
            if(($res_aux == 0 || $res_aux == 11 || $res_aux == 10))
                break;
            if($res_aux!=255)
                $resultado .= chr($res_aux);
        }
    }
    return $resultado;
}

function decoBmd3($pasar, $cantidad){
    $resultado = '';
    for($i=0;$i<$cantidad;$i++){
        $tipo = ($i) % 3;
        $valor =ord($pasar[$i]);
        $res_aux = decoBmd($tipo, $valor);
//        if($res_aux!=255)
            $resultado .= chr($res_aux);
    }
    return $resultado;
}

function decoWtf($pasar, $cantidad){
    $resultado = '';
    for($i=0;$i<$cantidad;$i++){
        $valor =ord($pasar[$i]);
        $valor = $valor ^ 202;
        $resultado .= chr($valor);
    }
    return $resultado;
}

function encoBmd2($modo, $cambio, $inicio, $cantidad, $arrastre){
    if($modo == 1)
        if($cambio==-1){
            ($cantidad==1) ? ($cambio = 255) : ($cambio = 4294967295);
        }
    for($i=0;$i<$cantidad;$i++){
        if($modo == 0)
            $resultado[$i] = decoBmd(($inicio + $i + $arrastre) % 3, ord($cambio[$i]));
        else{
            $resultado[$i] = decoBmd(($inicio + $i + $arrastre) % 3, calModulo($cambio));
            $cambio        = intval($cambio/256);
        }
    }
    return $resultado;
}

function encoBmd3($cambio, $inicio, $arrastre){
    for($i=0;$i<strlen($cambio);$i++)
        $resultado .= chr(decoBmd(($inicio + $i + $arrastre) % 3, ord($cambio[$i])));
    return $resultado;
}

function pasarHex($numero, $cantidad){
    for($i=0;$i<$cantidad;$i++){
        $a = $numero % 256;
        $numero = intval($numero/256);
        $resultado .= chr($a);
    }
    return $resultado;
}

function cantidad( $contenido, $inicio, $cantidad){
    $resultado = '';
    for($i=0;$i<$cantidad;$i++){
        $valor =ord(substr($contenido, $inicio + $i, 1));
        $resultado += $valor*pow( 256, $i);
    }
    return $resultado;
}

function neg_simple($modo, $valor, $cantidad){
    if($modo == 1)
        ($valor == 255 && $cantidad == 1 || $valor == 65535 && $cantidad == 2) ? ($resultado=  -1) :($resultado = $valor);
    else
        $resultado = str_replace("я", "", $valor);
    return $resultado;
}

function calModulo($valor){
    $resultado = $valor % 256;
    if($resultado<0)
        $resultado += 256;
    return $resultado;
}

function xlsBOF() {
    return pack("vvvvvv", 0x809, 0x8, 0x0, 0x10, 0x0, 0x0);
}
            
function xlsEOF() {
    return pack("ss", 0x0A, 0x00);
}
            
function xlsWriteNumber($Row, $Col, $Value) {
    $a  = pack("sssss", 0x203, 14, $Row, $Col, 0x0);
    $a .= pack("d", $Value);
    return $a;
}

function xlsWriteLabel($Row, $Col, $Value ) {
    $L  = strlen($Value);
    $a  = pack("ssssss", 0x204, 8 + $L, $Row, $Col, 0x0, $L);
    $a .= $Value;
return $a;
}

function convXLS($tipo, $Value, $Row, $Col){
    ($tipo == 1) ? $a = xlsWriteNumber($Row, $Col, $Value) : ($a = xlsWriteLabel($Row, $Col, $Value ));
return $a;
}

function deco_gmu($archivo){
    global $path_oz;
    global $path_graf;
    $nombre = explode(".", $archivo);
    $size = (sizeof($nombre)-1);
    $ext  = strtolower($nombre[$size]);
    switch ($ext) {
        case "ozb":
            $sacar  = 4;
            $formato = "bmp";
        break;
        case "ozj":
            $sacar  = 24;
            $formato = "jpg";
        break;
        case "ozt":
            $sacar  = 4;
            $formato = "tga";
        break;
        default:
        break;
    }
    if(isset($sacar)){
        $contenido = abrir($path_oz.$archivo);
        $contenido = substr($contenido, $sacar, strlen($contenido)-$sacar);
        $fp = fopen($path_graf.$nombre[0].".".$formato,"w+");
        fwrite($fp, $contenido);
        fclose($fp);
    }
}

function enco_gmu($archivo){
    global $path_oz;
    global $path_graf;
    $nombre = explode(".", $archivo);
    $size = (sizeof($nombre)-1);
    $ext  = strtolower($nombre[$size]);
    switch ($ext) {
        case "bmp":
            $poner  = 4;
            $formato = "ozb";
        break;
        case "jpg":
            $poner  = 24;
            $formato = "ozj";
        break;
        case "tga":
            $poner  = 4;
            $formato = "ozt";
        break;
        default:
        break;
    }
    if(isset($poner)){
        $contenido  = abrir($path_graf.$archivo);
        $poner_temp = substr($contenido, 0, $poner);
        $contenido  = $poner_temp.$contenido;
        $fp = fopen($path_oz.$nombre[0].".".$formato,"w+");
        fwrite($fp, $contenido);
        fclose($fp);
    }
}
function version_file($archivo, $file){
    ($archivo==message) ? ($patha="../archivos/wtf/") : ($patha="../archivos/bmd/");
    $largo = filesize($patha.$file);
    switch ($archivo) {
        case "gate":
            switch ($largo) {
                case 6144:
                    return "gate";
                break;
                case 2304:
                    return "gate2";
                break;
                case 900:
                    return "gate2";
                break;
                default:
                    return "gate";
                break;
            }
        break;
        case "item":
            switch ($largo) {
                case 38916:
                    return "item2";
                break;
                case 688132:
                    return "item";
                break;
                default:
                    return "item";
                break;
            }
        break;
        case "itemsetoption":
            switch ($largo) {
                case 4868:
                    return "itemsetoption2";
                break;
                case 6980:
                    return "itemsetoption";
                break;
                default:
                    return "itemsetoption";
                break;
            }
        break;
        case "itemsettype":
            switch ($largo) {
                case 2052:
                    return "itemsettype2";
                break;
                case 32772:
                    return "itemsettype";
                break;
                default:
                    return "itemsettype";
                break;
            }
        break;
        case "message":
            switch ($largo) {
                case 1444:
                    return "message";
                break;
                default:
                    return "message";
                break;
            }
        break;
        case "MonsterSkill":
            switch ($largo) {
                case 1444:
                    return "MonsterSkill";
                break;
                case 452:
                    return "MonsterSkill2";
                break;
                case 228:
                    return "MonsterSkill2";
                break;
                default:
                    return "MonsterSkill";
                break;
            }
        break;
        case "movereq":
            switch ($largo) {
                case 4004:
                    return "movereq";
                break;
                case 2884:
                    return "movereq";
                break;
                default:
                    return "movereq";
                break;
            }
        break;
        case "quest":
            switch ($largo) {
                case 116800:
                    return "questa";
                break;
                case 136000:
                    return "questb";
                break;
                case 142400:
                    return "quest";
                break;
                default:
                    return "quest";
                break;
            }
        break;
        case "quest2":
            switch ($largo) {
                case 116800:
                    return "quest2a";
                break;
                case 136000:
                    return "quest2b";
                break;
                case 142400:
                    return "quest2";
                break;
                default:
                    return "quest2";
                break;
            }
        break;
        case "quest3":
            switch ($largo) {
                case 116800:
                    return "quest3a";
                break;
                case 136000:
                    return "quest3b";
                break;
                case 142400:
                    return "quest3";
                break;
                default:
                    return "quest3";
                break;
            }
        break;
        case "skill":
            switch ($largo) {
                case 48004:
                    return "skill";
                break;
                case 13316:
                    return "skill2";
                break;
                case 15364:
                    return "skill3";
                break;
                case 27204:
                    return "skill4";
                break;
                case 2564:
                    return "skill5";
                break;
                default:
                    return "skill";
                break;
            }
        break;
        case "text":
            switch ($largo) {
                case 299925:
                    return "text2";
                break;
                default:
                    return "text";
                break;
            }
        break;
        default:
            return $archivo;
        break;
    }
}

function CrcCalc($buffer, $CheckVal, $salteo)
{
    $CrcKey = $CheckVal * 512;
    $tmpbuff = 0;
    $var_temp = array(0xFFFFFFFF, 0x7FFFFFFF, 0x3FFFFFFF, 0x1FFFFFFF, 0x0FFFFFFF, 0x07FFFFFF, 0x03FFFFFF, 0x01FFFFFF, 0x00FFFFFF);
    if($salteo>0) $buffer = substr($buffer, 4);
    $size = strlen($buffer);
    for( $i = 0 ; $i <= ($size-8); $i+=4){
        $tmpbuff = cantidad($buffer, $i, 4);
        ((($i / 4) + $CheckVal) % 2) ? ($CrcKey += $tmpbuff) : ($CrcKey ^= $tmpbuff);
        if(($i % 16) == 0) $CrcKey ^= ($CheckVal + $CrcKey) >> ((($i /4) % 8) + 1) & $var_temp[(($i /4) % 8) + 1];
    }
    return $CrcKey;
}

function ver_crc($archivo, $buffer){
    $salteo = 0;
    switch ($archivo) {
        case "BuffEffect":
            $CheckVal = 0xE2F1;
            $salteo  = 4;
        break;
        case "Filter":
            $CheckVal = 0x3E7D;
        break;
        case "FilterName":
            $CheckVal = 0x2BC1;
        break;
        case "item":
            $CheckVal = 0xE2F1;
        break;
        case "itemsetoption":
            $CheckVal = 0xA2F1;
        break;
        case "itemsettype":
            $CheckVal = 0xE5F1;
        break;
        case "shopcategoryitems":
            $CheckVal = 0xE2F1;
        break;
        case "shopui":
            $CheckVal = 0xE2F1;
        break;
        case "skill":
            $CheckVal = 0x5A18;
        break;
        default:
            $CheckVal = 0;
        break;
    }
    if($CheckVal>0){
        $valor = CrcCalc($buffer,$CheckVal, $salteo);
        $datos = "";
        for($i=0;$i<4;$i++){
            $datos .= chr(calModulo($valor));
            $valor  = ($valor) >> (8);
        }
        return $datos;
    }
    else
        return "no";
}
?>
{code}

Thank you!

Edited by: Ronaldo DeVinche on Nov 27, 2009 6:23 AM

Edited by: Ronaldo DeVinche on Nov 27, 2009 6:24 AM

Replies