Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.022 c
11-1105368888
TeNY
2005-01-10 17:54
2005.08.14
А где сайт ?http://kol.mastak.ru/ дает 404!


1-1122083855
Al_jus
2005-07-23 05:57
2005.08.14
проблема с DLL


3-1120485884
DelphiN!
2005-07-04 18:04
2005.08.14
Востановление "удаленных" записей из таблицы СУБД FB 1.5


11-1105533820
nicesc
2005-01-12 15:43
2005.08.14
Edit1.Text - ошибка при попытке присвоить значение


14-1122043909
Piter
2005-07-22 18:51
2005.08.14
Black Sabbath