![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
Jovi |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 20.11.2006 Репутация: нет Всего: нет |
Есть такая ситуация:
p : pointer Myprocedure(p^,p^); Эта процедура выполняет определенные действия с "p" и забивает результат обратно в "p". НО! Эта процедура блочная - она обрабатывает за раз только по 8 байт. Задача состоит в следующем: прогнать все данные "p" через эту процедуру, а не только первые 8 байт. Еслиб это был array - другое дело, я бы указал с какого по какой байт мне нужно прогонять и сделал бы это через цикл. А как такое с поинтером сделать - не знаю =( Господа, заранее благодарю! |
|||
|
||||
Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Чтобы поинтер указал на слудеющие 8 байт, сделай так:
|
|||
|
||||
Jovi |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 20.11.2006 Репутация: нет Всего: нет |
TO Snowy: Большое спасибо. Сейчас буду пробывать.
Добавлено @ 19:14 Что-то пока выдает invalid pointer operation =( for I := 1 to 30 do begin MyProcedure(p^,p^); p := pointer(integer(p) + 8); end; Сам поинтер большой - 2000 байт... от 1 до 30 - это я для опыта выбрал... |
|||
|
||||
drkot |
|
||||
![]() Ищущий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1042 Регистрация: 5.5.2006 Репутация: 5 Всего: 8 |
Snowy
все равно быстрее. ![]() Добавлено @ 19:21
![]() поинтер это 4 байта Добавлено @ 19:23 где выдает? в какой строке? -------------------- Ошибка не становится истиной по причине широкого распространения, как и Истина не становится Ошибкой из-за того, что никто её не видит. |
||||
|
|||||
Jovi |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 20.11.2006 Репутация: нет Всего: нет |
Вот такой код.
В итоге он шифрует только первые 8 байт файла. Задача состоит в том, чтобы он шифровал весь файл целиком. Для этого нужно зациклить Crypt на каждые 8 бит. А у меня, к сожалению, не получается.
|
|||
|
||||
drkot |
|
|||
![]() Ищущий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1042 Регистрация: 5.5.2006 Репутация: 5 Всего: 8 |
Ну вопервых необязательно ставить два параметра в процедуре. достаточно 1 и без домиков. Cipher.Decrypt(p). Так как это всеголишь указатель на память. Во вторых: думаю тебе было бы проще использовать потоки для обработки, или создать массив из 8 байт и работать с ним. Либо серьезно разобраться в указателях. -------------------- Ошибка не становится истиной по причине широкого распространения, как и Истина не становится Ошибкой из-за того, что никто её не видит. |
|||
|
||||
Jovi |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 20.11.2006 Репутация: нет Всего: нет |
1. Без домиков выдает ошибку.
2. Насчет двух параметров - первый, что взять и зашифровать, второй - куда положить. Про массив - тоже думал. НО! Что-то никак не могу придумать - как это сделать. Предположим - есть массив: array of byte [0..7] Как мне первые 8 байт памяти, на которую указывает поинтер загнать в этот массив, а потом следующие восемь и т.д.? Добавлено @ 20:12 Да, еще и при BlockRead я бы этот сраный поинтер заменил массивом и проблем бы не имел - вообще не связывался бы с поинтерами. Но при замене его массивом из 8 байт, ругается и не работает =(( |
|||
|
||||
drkot |
|
|||
![]() Ищущий ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1042 Регистрация: 5.5.2006 Репутация: 5 Всего: 8 |
Насколоко я понял это ТВОЯ (написанная тобой) процедура шифрования?
p^ - данные на которые указавает указатель 1 байт p - сам указатель 4 байта. Писать здесь лекцию по использованию указателей нет ни сил ни желания. Возьми книжку (самую элементарную) по пасклю там и почитай раздел об указателях. Это самый логичный ход в данном случае. Подобные темы в книгах освещены очень хорошо. -------------------- Ошибка не становится истиной по причине широкого распространения, как и Истина не становится Ошибкой из-за того, что никто её не видит. |
|||
|
||||
Jovi |
|
|||
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 20.11.2006 Репутация: нет Всего: нет |
Моя-моя. Переделать мона, но не удобно.
|
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |