![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
Coderr |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 234 Регистрация: 27.1.2006 Где: Vesnet Репутация: 0 Всего: 0 |
Здрасте!
Такая вещь: хочу, чтоб в моей программе файл настроек был зашифрован. Принцип такой: во время первого запуска проги создаётся алфавит, который представляет собой переставленные случайным образом символы таблицы ACSII, то есть что-то типа этого: 32 - - A 33 - ! - J 34 - " - G 35 - # - E 36 - $ - B Разъясню: номер символа в таблице ACSII... - ...и соответствующий ему символ - символ, выбранный случайным образом. Сделал прогу, вот что получилось:
но прога загружает проц на 100%, а доходит лишь максимум до номера 74 из таблицы символов! ПаМаГиТе! --------------------
Кодинг - это стиль жизни! |
|||
|
||||
Palladin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 932 Регистрация: 15.5.2007 Где: Беларусь г.Гомель Репутация: 3 Всего: 17 |
У тебя очень много циклов, попробуй их укомпоновать, ща сам попробую если сделаю выложу здесь код твой
-------------------- Глуп тот кто полагается на истину авторитета, а не на авторитет истины [color=red]KAV&KIS==Evil[/color] |
|||
|
||||
Mechanic |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 228 Регистрация: 5.5.2006 Где: Kharkov, Ukraine Репутация: 6 Всего: 7 |
Ага, а при втором запуске, когда нужно будет вновь создавать алфавит уже для чтения, он будет создан совсем другим, и расшифровать настройки не получится? Чтобы инитить нормально рэндомный генератор с возможностью повторения, не используй Randomize, но сам устанавливай RandSeed на необходимое значение, или же запоминай его вместе с первым созданием алфавита, и при повторных просто считывай в RandSeed. И в твоём алгоритме слишком много холостых проб. Просто используй список, или массив, из которого выбирай случайный элемент, и удаляй его, чтоб исключить повторное попадание. Тогда Random(ТекущаяДлинаСписка) будет гарантированно брать новый элемент на каждом забросе. Или можно метить спец-символом уже выбранный элемент массива, и при попадании на такой просто бежать по массиву до первого "живого" элемента. Тогда массив должен быть кольцевым (врап индекса), но при этом не нужно мувить элементы при удалении очередного. И убери ты этот пикчер на 300К.. ![]() --------------------
Tell me the extensions of the files You backup and I'll tell You who You are.. ©Mch |
|||
|
||||
Coderr |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 234 Регистрация: 27.1.2006 Где: Vesnet Репутация: 0 Всего: 0 |
Не! Не так! алфавит создаётся один раз во время первого запуска только что установленной проги и записывается в файл! А в последующие разы дешифрация происходит по готовому словарю! Это делается для усложнения! =) У каждого разный словарь! Прикольно! =)))
Хорошо, уберу! =) --------------------
Кодинг - это стиль жизни! |
||||
|
|||||
Coderr |
|
||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 234 Регистрация: 27.1.2006 Где: Vesnet Репутация: 0 Всего: 0 |
Mechanic, спасибо за идею! Теперь работает моментально! =) Если кому-нить понадобится, выкладываю код:
Это сообщение отредактировал(а) Coderr - 28.6.2006, 20:58 --------------------
Кодинг - это стиль жизни! |
||||
|
|||||
Mailman |
|
|||
Новичок Профиль Группа: Участник Сообщений: 19 Регистрация: 6.6.2006 Репутация: нет Всего: нет |
Хахаха. Народ, вы чот прошляпили! Ощшибка то была вот тут:
Заметьте, что b тут если сделалось false, то это бесконечный цикл. Потому и проблемы с циклом были )))) |
|||
|
||||
Yanis |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 72 Всего: 111 |
||||
|
||||
Mechanic |
|
||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 228 Регистрация: 5.5.2006 Где: Kharkov, Ukraine Репутация: 6 Всего: 7 |
![]() Всё-таки предложил бы сохранять только Seed генератора, и восстанавливать каждый раз алфавит. Типа:
Только нужно учесть, что повторяемость последовательности Borland'ом не шибко гарантируется при переходе с версии на версию компилера (хотя, если всё происходит в пределах уже скомпиленного в одной версии exe, то вполне сойдёт):
И уж конечно же, убрать Randomize из самого цикла генерации алфавита. ![]()
--------------------
Tell me the extensions of the files You backup and I'll tell You who You are.. ©Mch |
||||||
|
|||||||
Coderr |
|
||||||||||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 234 Регистрация: 27.1.2006 Где: Vesnet Репутация: 0 Всего: 0 |
Лана!Это мелочи...
Тут другая проблема нарисовалась! У моего файла настроек такая структура 1 строка: зашифрованный алфавит; 2 строка: путь к файлу(неважно какой =) ) 3 строка: 0 или 1 может быть (положение чекбокса) 4 строка: порт (у меня прога для работы с сетью...) Замучался короче! Начирикал пять процедур: Процедура №1, загружает настройки:
Процедура №2, сохраняет настройки:
Процедура №3, кодирование:
Процедура №4, декодирование:
Процедура №5, проебразование строки вида %PROGROOT%\Login.bbq(для эдита):
У меня уже голова кругом... Ошибки пачками вылетают... Одну исправлю-новая появляется... Помогите плз! Может есть способ пооригинальней загрузки\сохранения опций? ![]() ![]() Это сообщение отредактировал(а) Coderr - 30.6.2006, 20:55 --------------------
Кодинг - это стиль жизни! |
||||||||||
|
|||||||||||
Palladin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 932 Регистрация: 15.5.2007 Где: Беларусь г.Гомель Репутация: 3 Всего: 17 |
А где именно ошибки(на что компилятор указывает)???
-------------------- Глуп тот кто полагается на истину авторитета, а не на авторитет истины [color=red]KAV&KIS==Evil[/color] |
|||
|
||||
Coderr |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 234 Регистрация: 27.1.2006 Где: Vesnet Репутация: 0 Всего: 0 |
Ошибка raised exception class EStackOverflow with message 'Stack Overflow'. Переполнение буфера, однако...
![]() ![]() Вот процедура OnShow главной формы:
показывает на строку login:=TStringlist.Create; , то есть что-то не так в перечисленных выше процедурах... ![]() Это сообщение отредактировал(а) Coderr - 2.7.2006, 21:26 --------------------
Кодинг - это стиль жизни! |
|||
|
||||
Yanis |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 72 Всего: 111 |
Coderr
Ты хотя бы номер строки скажи где ошибка выскакивает. И вообще, думаешь кому то охота копатся с такой громадой кода? Сначала ты хотел шифровать-дешифровать. А теперь (я посмотрел) какие то сокеты поперли... ![]() Добавлено @ 21:30 Во первых options:TStrings сделай как стринглист! Добавлено @ 21:35 Coderr А потрейсить никак? Попробуй, может узнаешь что-нибудь нового про свой код. |
|||
|
||||
Coderr |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 234 Регистрация: 27.1.2006 Где: Vesnet Репутация: 0 Всего: 0 |
Строка номер 4, а с сокетами я сам разберусь! Они-то как раз и рабатають отлично!
![]() --------------------
Кодинг - это стиль жизни! |
|||
|
||||
Mechanic |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 228 Регистрация: 5.5.2006 Где: Kharkov, Ukraine Репутация: 6 Всего: 7 |
Не буфера, но стека, однако.. ![]() И бывает такое, когда у тебя обработчики вызывают друг друга рекурсивно. Посмотри, что откуда вызывается, и когда пойдешь второй раз в одну функу до выхода из неё - вот это и место, где стак не выдерживает.. ![]() --------------------
Tell me the extensions of the files You backup and I'll tell You who You are.. ©Mch |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |