Страница: 1 |
Страница: 1 |
Вопрос: Восстановление проги как спящий режим
Добавлено: 02.04.06 19:53
Автор вопроса: ChemistN1 | Web-сайт:
У меня вопрос: можно ли сохранить содержимое опер. памяти, занимаемой программой, а потом это содержимое загрузить в свободное пространство оп. памяти, как это делает XP в спящем режиме, и полностью востановить тогдашнее состояние системы? Или, если этот способ не годится, есть ли какой другой, который может восстановить состояние закрытой программы?
Ответы
Всего ответов: 10
Номер ответа: 1
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #1
Добавлено: 03.04.06 03:25
например брутфорс перебирая пароли умеет сохранять прогресс чтобы продолжить в слейдущий раз, он что, сохраняет содержимое того куска памяти которую юзает? Или сохраняет текущий пароль и возможно некоторые другие настройки в какой нибуть текстовичёк, ini, реестр... Скорее второе Сделай аналогично...
Номер ответа: 2
Автор ответа:
ChemistN1
Вопросов: 7
Ответов: 43
Web-сайт:
Профиль | | #2
Добавлено: 03.04.06 05:15
Замечательно, а если это не моя программа, прогресс которой надо сохранить? Или если моя, но количество переменных, которые надо сохранить, зашкаливает за 1000000, и постоянно меняется от версии к версии? Какие надо сохранять, какие нет - запомнить невозможно!
Номер ответа: 3
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #3
Добавлено: 03.04.06 12:53
Для этого и был придуман спящий режим...
Номер ответа: 4
Автор ответа:
ChemistN1
Вопросов: 7
Ответов: 43
Web-сайт:
Профиль | | #4
Добавлено: 03.04.06 18:47
Для этого и был придуман спящий режим...
А если комп надо перезагрузить (в смысле повис он например)?
Неправельно организована структра программы, с расебегу аб стенку, и всё переписать...
Угу, весь прикол в том, что этот 1000000 переменных действительно является 1000000 переменных и никак не оптимизируется. Все равно что база данных (считайте, что в ней 100 полей и 10000 записей, причем количество полей и записей постоянно меняется - как вы "организуете структуру программы"?), но не база данных (то бишь лишь похожа). В общем, по другому никак.
У меня другой вопрос: можно ли сохранить значение всех переменных из самой программы (есть ли такая команда), а потом их другой командой загрузить обратно? Это был бы идеальный вариант.
Номер ответа: 5
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #5
Добавлено: 05.04.06 00:07
Массивом это называется, а не 1 млн переменных из БД... ненадо мне
рассказывать что 1 млн переменных и подругому никак, если никак - у
тебя обе руки левые... Сохранить/Загрузить массив любой мерности,
двухмерности итп... можно действительно довольно просто...
Я лабу подруге делал, вот её шмот:
Private Type Goods
NameGoods As String * 50 'Наименование
MoneyGoods As Single 'Цена
End Type
Dim myGoods() As Goods 'Объявили массив пользовательского типа
Private Sub SaveArrayToFile(SaveArray() As Goods, PathFile As String)
'Сохраняет массив пользовательского типа в указанный в параметрых файл
On Error Resume Next 'Если будет ошибка - строка где была ошибка будет пропущена автоматически
Kill PathFile 'удаляем старый файл
Dim n As Byte, i As Integer
n = FreeFile 'первый свободный индекс для открытия файла
Open PathFile For Binary As #n
Put n, , SaveArray
Close #n
End Sub
Private Sub LoadArrayFromFile(PathFile As String, ReturnArray() As Goods)
'Загрузка из файла в массив пользовательского типа данных
On Error Resume Next
Dim n As Byte, i As Integer
n = FreeFile 'первый свободный индекс для открытия файла
Open PathFile For Binary As #n
ReDim ReturnArray(LOF(n) / Len(ReturnArray(0)) - 1) 'Определяем размер массива
Get n, , ReturnArray
Close #n
End Sub
Аналогично можно было сохранить/загрузить не массив структуры а
двухмерный массив любой размерности...
Переменная как правило счётчик или рабочая лошадка, если у тебя
переменная
Dim vasya1 as String
Dim vasya2 as String
Dim vasya3 as String
И в них аналогичные данные, значит обе руки левые...
Номер ответа: 6
Автор ответа:
ChemistN1
Вопросов: 7
Ответов: 43
Web-сайт:
Профиль | | #6
Добавлено: 05.04.06 05:46
Спасибо, однако руки у меня не обе левые. С массивами понятно, их не так много, не больше сотни, а вот как мне несколько тысяч переменных в голове удержать, когда со следующей версией часть сохранять уже не надо, а часть надо?
Номер ответа: 7
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #7
Добавлено: 05.04.06 16:01
Я не верю в приложение созданное на ВБ такого объема что надо было бы
одновременно работать с тысячей, а то и с миллионом переменных! Я тебе
пытаюсь объяснить что если у тебя в приложении действительно столько
переменных, значит ты не продумал структуру всей программы и написана
она до невозможности криво...
Номер ответа: 8
Автор ответа:
LamerOnLine
ICQ: 334781088
Вопросов: 108
Ответов: 2822
Профиль | | #8
Добавлено: 05.04.06 16:36
Ну почему же? Объяви в процедуре несколько переменных и замкни её в тупую рекурсию на саму себя
Номер ответа: 9
Автор ответа:
ChemistN1
Вопросов: 7
Ответов: 43
Web-сайт:
Профиль | | #9
Добавлено: 05.04.06 18:08
А я вот прикидываю - ничего я не загнул. Реально так получается. В общем, если до сих пор не верите, придется сказать - это игровые данные, а в играх постоянное изменение sav'а из-за постоянных изменений кода - головная боль. Только не надо говорить "ну с тобой все понятно". Я и серьещные программы пишу. Иногда...
Номер ответа: 10
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #10
Добавлено: 06.04.06 18:53
Назови мне хоть одну игрушку в которой юзается 1 млн переменных, я
весь диапазон её памяти просканирую на значения через ArtMoney, я
уверен на 99% что дале в ArtMoney (а она показывает далеко больше чем
переменных на самом деле) небудет 1 млн адресов на переменные (P.S. к
тому же там не только на переменные... и всёравно небудет)
По поводу рекурсии. Небуду даже говорить что это плохо, медленно итп
итд... всегда можно обойтись без неё... Но даже если пускай и
рекурсия, тогда на каждом шаге сохранять текущее значение переменной и
уже потом вызывать себя снова...