Текущий архив: 2005.08.14;
Скачать: CL | DM;
Вниз
Delphi -> PHP Найти похожие ветки
← →
Хинт © (2005-07-19 19:24) [0]Функция на Delphi:
function GetCharKey(UserID,CharName:string):string;
var
i:integer;
begin
if Length(CharName)<7 then SetLength(CharName,7);
if Length(CharName)<7 then for i:=Length(CharName)+1 to 7 do CharName:=CharName+CharName[1];
for i:=1 to 7 do Result:=Result+IntToStr(abs(StrToInt(UserID[i])-(Ord(CharName[i]) mod 10)));
end;
Пример использования:
GetCharKey("9197754","Hint");
Попросил человека перевести в PHP получилось:<?php
class DelphiToPHP {
function GetSymbol ($str,$num) {
// получаем символ по его номеру в строке
return substr($str,$num-1,1);
}
function GetCharKey ($userID,$CharName) {
// сама функция
if (strlen($CharName) < 7) {
for ($i = strlen($CharName); $i <= 7; $i++) {
$CharName .= $this->GetSymbol($CharName,1);
}
for ($i = 1; $i <= 7; $i++) {
$toret .= abs($this->GetSymbol($userID,$i)) - ord($this->GetSymbol($CharName,$i) % 10);
}
}
return $toret;
}
}
// пример использования
$d = new DelphiToPHP;
print $d->GetCharKey("9197754","Hint");
?>
Но на PHP выдает совсем другой результат =(
Подскажите где ошибка...
← →
TButton © (2005-07-19 19:29) [1]
if Length(CharName)<7 then SetLength(CharName,7);
if Length(CharName)<7 then ...
вторая строка должна работать???
← →
Хинт © (2005-07-19 19:32) [2]Ндааа...
Должно быть так:
if Length(CharName)>7 then SetLength(CharName,7);
if Length(CharName)<7 then ...
← →
Хинт © (2005-07-19 19:36) [3]Вариант на Delphi:
GetCharKey("1111111","Hint") выдает "1415111"
А на PHP:
-47-47-47-47-47-47-47
← →
Хинт © (2005-07-19 19:40) [4]Все. Проблема решена.
← →
TButton © (2005-07-19 19:43) [5]ну что я могу сказать... ничего =)
скобочки внимательнее ставьте
abs($this->GetSymbol($userID,$i))
abs(StrToInt(UserID[i])-(Ord(CharName[i]) mod 10))
← →
Хинт © (2005-07-19 19:44) [6]Как раз в скобках и была проблема. Сейчас просто скопировал все это в Bred и проследил за скобками.
← →
begin...end © (2005-07-19 20:41) [7]> Хинт © (19.07.05 19:24)
> if Length(CharName)<7 then SetLength(CharName,7);
> if Length(CharName)<7 then ...
Конгениально.
Страницы: 1 вся ветка
Текущий архив: 2005.08.14;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.041 c