Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
Необходима помощь в переводе с C++ на Delphi двух функций |

21.02.2009, 23:50
|
|
Постоянный
Регистрация: 26.12.2007
Сообщений: 353
Провел на форуме: 905389
Репутация:
332
|
|
Необходима помощь в переводе с 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++ возможности перевести нет поэтому прошу помоч.
|
|
|

22.02.2009, 11:40
|
|
Постоянный
Регистрация: 04.11.2007
Сообщений: 303
Провел на форуме: 811764
Репутация:
119
|
|
знаний по делфи у меня мало, хватило только на это:
Код:
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.

|
|
|

22.02.2009, 13:39
|
|
Постоянный
Регистрация: 26.12.2007
Сообщений: 353
Провел на форуме: 905389
Репутация:
332
|
|
к сожалению код неверен просьба все еще актуальна ;(
|
|
|

23.02.2009, 03:51
|
|
Новичок
Регистрация: 03.02.2009
Сообщений: 15
Провел на форуме: 93182
Репутация:
21
|
|
arKey++ попробуй исправить на inc(arKey)
|
|
|

23.02.2009, 13:59
|
|
Постоянный
Регистрация: 26.12.2007
Сообщений: 353
Провел на форуме: 905389
Репутация:
332
|
|
Сообщение от stasoft
arKey++ попробуй исправить на inc(arKey)
это понятно а вот где *arEnd непонятно как подно сложить char и longint непонятно ....
неужели нет людей которые знают практически одинаково и delphi и c++??? если есть отзовитесь)
|
|
|

24.02.2009, 02:48
|
|
Постоянный
Регистрация: 24.11.2008
Сообщений: 416
Провел на форуме: 910902
Репутация:
100
|
|
KIR@PRO, а arKey это числовой набор в чаре?если да, то попробуй конвертировать форматы вместо long возми int или real...так честно не в курсе к сожалению 
|
|
|

24.02.2009, 10:29
|
|
Постоянный
Регистрация: 26.12.2007
Сообщений: 353
Провел на форуме: 905389
Репутация:
332
|
|
Сообщение от SaiRus
KIR@PRO, а arKey это числовой набор в чаре?если да, то попробуй конвертировать форматы вместо long возми int или real...так честно не в курсе к сожалению 
нет там текст на входе это как MD5 хэширование тока проще.....
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|