Доброго времени суток! Прошу перевести эти две функции на дэлфи: Code: #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++ возможности перевести нет поэтому прошу помоч.
знаний по делфи у меня мало, хватило только на это: Code: 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.
это понятно а вот где *arEnd непонятно как подно сложить char и longint непонятно .... неужели нет людей которые знают практически одинаково и delphi и c++??? если есть отзовитесь)
KIR@PRO, а arKey это числовой набор в чаре?если да, то попробуй конвертировать форматы вместо long возми int или real...так честно не в курсе к сожалению