Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   С/С++, C#, Delphi, .NET, Asm (https://forum.antichat.xyz/forumdisplay.php?f=24)
-   -   Необходима помощь в переводе с C++ на Delphi двух функций (https://forum.antichat.xyz/showthread.php?t=107396)

KIR@PRO 21.02.2009 23:50

Необходима помощь в переводе с C++ на Delphi двух функций
 
Доброго времени суток!
Прошу перевести эти две функции на дэлфи:

Код:

#include <stdio.h>
#include <string.h>


//раз функция
static inline long hash_1(char *arKey, int nKeyLength)
{
        long h = 5381;
        char *arEnd = arKey + nKeyLength;
 
        while (arKey < arEnd) {
                h += (h << 5);
                h += (long) *arKey++;
        }
        return h;
}

//два функция
static inline long hash_2(char *arKey, int nKeyLength)
{
        long h = 5381;
        char *arEnd = arKey + nKeyLength;
 
        while (arKey < arEnd) {
                h += (h << 5);
                h ^= (long) *arKey++;
        }
        return h;
}


//это ненадо это я понимаю)
int main()
{
        char *chr = "GALLERY_BASEDIR";
        int len = strlen(chr)+1;
        printf("%ld\n", hash_php5(chr, len));
        printf("%ld\n", hash_php4(chr, len));
}

ввиду моих плохих знаний в C++ возможности перевести нет поэтому прошу помоч.

criz 22.02.2009 11:40

знаний по делфи у меня мало, хватило только на это:
Код:

function hash_1(var arKey:Pointer, nKeyLength:integer) : LongInt;
var        h: longint;
        arEnd: Pointer;
begin
        h:=5831;
        @arEnd := arKey + nKeyLength;
        while(arKey < arEnd) do
        begin
                h:= h + (h Shl 5);
                h:= @arKey++;
        end;
        result:=h;
end.


function hash_2(var arKey:Pointer, nKeyLength:integer) : LongInt;
var        h: longint;
        arEnd: Pointer;
begin
        h:=5831;
        @arEnd := arKey + nKeyLength;
        while(arKey < arEnd) do
        begin
                h: = h + (h Shl 5);
                h: = h Xor @arKey++;
        end;
        result:=h;
end.

:)

KIR@PRO 22.02.2009 13:39

к сожалению код неверен просьба все еще актуальна ;(

stasoft 23.02.2009 03:51

arKey++ попробуй исправить на inc(arKey)

KIR@PRO 23.02.2009 13:59

Цитата:

Сообщение от stasoft
arKey++ попробуй исправить на inc(arKey)

это понятно а вот где *arEnd непонятно как подно сложить char и longint непонятно ....

неужели нет людей которые знают практически одинаково и delphi и c++??? если есть отзовитесь)

SaiRus 24.02.2009 02:48

KIR@PRO, а arKey это числовой набор в чаре?если да, то попробуй конвертировать форматы вместо long возми int или real...так честно не в курсе к сожалению :(

KIR@PRO 24.02.2009 10:29

Цитата:

Сообщение от SaiRus
KIR@PRO, а arKey это числовой набор в чаре?если да, то попробуй конвертировать форматы вместо long возми int или real...так честно не в курсе к сожалению :(



нет там текст на входе это как MD5 хэширование тока проще.....


Время: 00:29