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

08.04.2010, 23:45
|
|
Участник форума
Регистрация: 10.08.2009
Сообщений: 238
Провел на форуме: 724939
Репутация:
108
|
|
Перевести из С++ в Delphi
Помогите перевести следующие строки кода из С++ в Delphi. То есть у меня возникла проблема с типами данных и некоторыми функциями. Заранее спасибо.
Код:
void GetHashStr(wchar_t* Password,char *HashStr)
Код:
CryptHashData(hHash, (unsigned char*)Password, (wcslen(Password)+1)*2);
Код:
wsprintf(TmpBuf,”%s%2.2X”, HashStr, c); // c это unsigned char
Последний раз редактировалось =Zeus=; 08.04.2010 в 23:53..
|
|
|

09.04.2010, 00:17
|
|
Участник форума
Регистрация: 30.03.2007
Сообщений: 121
Провел на форуме: 188563
Репутация:
52
|
|
Сообщение от =Zeus=
Помогите перевести следующие строки кода из С++ в Delphi. То есть у меня возникла проблема с типами данных и некоторыми функциями. Заранее спасибо.
Код:
void GetHashStr(wchar_t* Password,char *HashStr)
PHP код:
Procedure GetHashStr(Password:PWideChar; HashStr:char)
Код:
CryptHashData(hHash, (unsigned char*)Password, (wcslen(Password)+1)*2);
Это взял из своей функции:
PHP код:
var
Password:string;
...
CryptHashData(hHash, PByte(Password), length(Password), 0)
в Си варианте предлагают length(Password)*2
Код:
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..
|
|
|

09.04.2010, 00:42
|
|
Участник форума
Регистрация: 10.08.2009
Сообщений: 238
Провел на форуме: 724939
Репутация:
108
|
|
Сообщение от JnK
P.s. Как я понял это CryptApi.
Да это из тех степей. Я перевожу функцию для дешифровки логина-пароля из Интернет Експлоера.
Если все получиться - выложу тут готовый вариант.
Password: PWideChar;
А далее ты пишешь
var Password: string;
Password берется из параметра первой процедуры. Все остальные функции вызываются в ней.
Последний раз редактировалось =Zeus=; 09.04.2010 в 00:45..
|
|
|

09.04.2010, 00:43
|
|
Участник форума
Регистрация: 30.03.2007
Сообщений: 121
Провел на форуме: 188563
Репутация:
52
|
|
Последнее дословно, наверное будет так:
PHP код:
function wsprintfA(buf: pchar; format:pchar; param:char):integer; cdecl;
external user32 name 'wsprintfA';
function Jord(I:Char):String;
var
buf : array[0..255] of char;
begin
wsprintfA(buf, '%2.2x', i);
result:=buf;
end;
применять просто в цикле:
str:=str+Jord(TmpBuf[i]);
P.s. Спасибо SLESH дал в свое время мне эти функции 
|
|
|

09.04.2010, 09:24
|
|
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
3349
|
|
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)
|
|
|

09.04.2010, 17:35
|
|
Участник форума
Регистрация: 10.08.2009
Сообщений: 238
Провел на форуме: 724939
Репутация:
108
|
|
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)
|
|
|
|