ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > С/С++, C#, Delphi, .NET, Asm
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Перевести из С++ в Delphi
  #1  
Старый 08.04.2010, 23:45
=Zeus=
Участник форума
Регистрация: 10.08.2009
Сообщений: 238
Провел на форуме:
724939

Репутация: 108
Отправить сообщение для =Zeus= с помощью ICQ
По умолчанию Перевести из С++ в Delphi

Помогите перевести следующие строки кода из С++ в Delphi. То есть у меня возникла проблема с типами данных и некоторыми функциями. Заранее спасибо.

Код:
void GetHashStr(wchar_t* Password,char *HashStr)
Код:
CryptHashData(hHash, (unsigned char*)Password, (wcslen(Password)+1)*2);
Код:
char TmpBuf[128];
Код:
wsprintf(TmpBuf,”%s%2.2X”, HashStr, c); // c это unsigned char

Последний раз редактировалось =Zeus=; 08.04.2010 в 23:53..
 
Ответить с цитированием

  #2  
Старый 09.04.2010, 00:17
JnK
Участник форума
Регистрация: 30.03.2007
Сообщений: 121
Провел на форуме:
188563

Репутация: 52
По умолчанию

Цитата:
Сообщение от =Zeus=  
Помогите перевести следующие строки кода из С++ в Delphi. То есть у меня возникла проблема с типами данных и некоторыми функциями. Заранее спасибо.
Код:
void GetHashStr(wchar_t* Password,char *HashStr)
PHP код:
Procedure GetHashStr(Password:PWideCharHashStr:char
Код:
CryptHashData(hHash, (unsigned char*)Password, (wcslen(Password)+1)*2);
Это взял из своей функции:
PHP код:
var
  
Password:string;
...
CryptHashData(hHashPByte(Password), length(Password), 0
в Си варианте предлагают length(Password)*2
Код:
char TmpBuf[128];
PHP код:
var
  
TmpBuf:Char[0..128]; 
Код:
wsprintf(TmpBuf,”%s%2.2X”, HashStr, c); // c это unsigned char
Наверное так:
PHP код:
Format('%2.2x', [Ord(PChar(HashStr)[I])]); 
P.s. Как я понял это CryptApi.

Последний раз редактировалось JnK; 09.04.2010 в 00:48..
 
Ответить с цитированием

  #3  
Старый 09.04.2010, 00:42
=Zeus=
Участник форума
Регистрация: 10.08.2009
Сообщений: 238
Провел на форуме:
724939

Репутация: 108
Отправить сообщение для =Zeus= с помощью ICQ
По умолчанию

Цитата:
Сообщение от JnK  
P.s. Как я понял это CryptApi.
Да это из тех степей. Я перевожу функцию для дешифровки логина-пароля из Интернет Експлоера.
Если все получиться - выложу тут готовый вариант.

Password: PWideChar;
А далее ты пишешь
var Password: string;
Password берется из параметра первой процедуры. Все остальные функции вызываются в ней.

Последний раз редактировалось =Zeus=; 09.04.2010 в 00:45..
 
Ответить с цитированием

  #4  
Старый 09.04.2010, 00:43
JnK
Участник форума
Регистрация: 30.03.2007
Сообщений: 121
Провел на форуме:
188563

Репутация: 52
Arrow

Последнее дословно, наверное будет так:
PHP код:
 function wsprintfA(bufpcharformat:pcharparam:char):integercdecl;
 
external user32 name 'wsprintfA';

function 
Jord(I:Char):String;
var
  
buf : array[0..255of char;
begin
  wsprintfA
(buf'%2.2x'i);
  
result:=buf;
end
применять просто в цикле:
str:=str+Jord(TmpBuf[i]);

P.s. Спасибо SLESH дал в свое время мне эти функции
 
Ответить с цитированием

  #5  
Старый 09.04.2010, 09:24
slesh
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


Отправить сообщение для slesh с помощью ICQ
По умолчанию

1) void GetHashStr(wchar_t* Password, char *HashStr) - это
Procedure GetHashStr(Password:PWideChar; HashStr:Pchar) // про * незабываем )

2) CryptHashData(hHash, (unsigned char*)Password, (wcslen(Password)+1)*2);
Тут считается кол-во символов расширенной строки + символ конца строки (0x00) и умножается на 2 чтобы узнать длинну в байтах. По этому более корректно будет так:
CryptHashData(hHash, PByte(Password), (length(Password)+1)*2, 0)
 
Ответить с цитированием

  #6  
Старый 09.04.2010, 17:35
=Zeus=
Участник форума
Регистрация: 10.08.2009
Сообщений: 238
Провел на форуме:
724939

Репутация: 108
Отправить сообщение для =Zeus= с помощью ICQ
По умолчанию

JnK, slesh - спасибо, получилось! Ваши подсказки и метод научного втыка рулят.

Последний раз редактировалось =Zeus=; 09.04.2010 в 17:48..
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Видео уроки Delphi ][imer С/С++, C#, Delphi, .NET, Asm 48 18.04.2010 09:05
Delphi - язык или среда? Seravin Болталка 12 28.03.2010 01:46
Литература Delphi Sams С/С++, C#, Delphi, .NET, Asm 2 19.03.2010 19:46
Скачать Delphi 7, помощь. _casper_ С/С++, C#, Delphi, .NET, Asm 20 08.12.2009 04:54
Virus.Win32.Induc.a или "Снова записки новичка" _=(mac)=_ Защита ОС: вирусы, антивирусы, файрволы. 5 24.08.2009 23:34



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ