Мне надо сохранить текст так чтобы он находился не в файле а в самом приложении то есть я например, редактирую в поле текст сохраняю закрываю приложение, а затем открываю и напечатанный ранее текст остаёстя в программе, а не читается из какого нибудь файла.
12 июня 2009 в 22:02
блин, товаришь хочет хочет чтоб прога содержала в себе свой же код
Так это НЕВОЗМОЖНО
точно также как и файл не может содержать собственный хеш, только еще невозможнее
12 июня 2009 в 16:03
#14, даст, но это 98ая винда, насколько я помню. .NET с ней вроде бы даже дружен (Win98 SE).
Но зачем такая головная боль, если есть [де]сериализация?
PS: автор сам не знает, что ему нужно. Думаю, нужно учить мат.часть.
10 июня 2009 в 17:01
Создай внешнюю сборку .NET, в ней – класс со статическим string полем. Потом программно (System.Reflection) открывай ее, правь поле, сохраняй, создавай класс из нее в рантайме и используй. Только опять же – отдельный файл. А модифицировать собственный экзешник программы на ходу тебе винда не даст.
9 июня 2009 в 22:01
Написал бы зачем, а тебе бы тогда посоветовали стоит это делать для твоей задачи или нет. Можно по идее статическое поле у класса создать в дллке и править ее. Для этого используется рефлексия. Но это все равно доп файл. Обычные строки легко можно просмотреть (не зашифрованные) дизассемблером (если дело в безопасности). Я бы в реестре сохранил зашифрованные данные (если секрет), а если не секрет то просто сохранил бы в реестре без шифрования. Ключ для расшифровки я обычно высчтываю в цикле-так его сложнее выдрать дизассемблером, если еще обфускацию пройдет сборка.
9 июня 2009 в 20:04
не, ну чё… конфигураторы пинча и пр…
9 июня 2009 в 20:03
Если имеется ввиду внесение изменений в исполняемый файл, то в теории такое возможно, вот только прийдется обходится без антивирусника ))). Программа получиться не удобной, и очень нестабильной. Гораздо лучше и удобнее использовать отдельный конфигурационный файл.
9 июня 2009 в 19:03
Ну например можно с образом dll поиграться. В dll вынести часть логики. И, не выполняя LoadLibrary() править эту dll. Но это как-то всё по-хакерски, и зачем – неясно. Проблема в том, что обычно программы не модифицируют свои образы на диске.
9 июня 2009 в 14:01
"Если нельзя сохранить без создания ОТДЕЛЬНОГО ФАЙЛА тогда так и напишите."
Проблема в том, что в принципе возможно практически всё что угодно. Вопрос только в количестве затрачиваемых усилий и прочих подобных факторах.
"Если вы знаете как это сделать пишите подробно или не пишите вообще."
Дело в том, что подавляющее большинство задач программирования – уникальны в той или иной степени. Поэтому на конкретный вопрос, как правило, _точно_ ответить никто не может, особенно, если он нечётко сформулирован. Кроме тебя самого – когда ты его сам найдёшь ответ. А примерный ответы других для тебя – источник идей. Кроме того, важно какую цель ты преследуешь. Если отдельный файл – самоцель (например, просто из интереса хочешь именно так сделать), то это одно. Если ты хочешь таким образом поддержать какую-то функцию (например, чтобы текст никто посторонний не мог прочесть) – то это совсем другое дело. Во второй ситуации всегда есть несколько способов решения задачи с разными плюсами и минусами.
Что касается именно отдельного файла, то, имхо, на С# ты этого достичь не сможешь (без фантастических усилий). Самомодифицирующиеся программы вообще не в почёте. Но на динамических интерпретируемых языках (Python, REBOL, Lisp etc) – без проблем, просто модифицируешь аккуратно файл с исходным кодом прямо из программы и всё. А Smalltalk вообще не хранит исходый код в текстовом виде и умеет поддерживать состояние программы между запусками, так что в нём твоя задача тоже решается относительно просто.
9 июня 2009 в 14:00
Ясно "СПАСИБО"
9 июня 2009 в 13:05
отвечаю: то что тебе надо – автоматическая сериализация при завершении работы и десериализация при старте…но это с файлом
в саму программу ты не сохранишь данные…кажется в С++ ты хаками сможешь изменять внутренности "стринг тейбл" тогда не будет тебе файлов…но это бред, так никто не делает…
9 июня 2009 в 13:04
Интересно я тоже таким стану, ничего странного тут я не вижу. Да возможно я не знаю как конкретно задать вопрос. Ребят если вам так нравитсяотвечать на вопросы зачем на них вообще отвечать. Если нельзя сохранить без создания ОТДЕЛЬНОГО ФАЙЛА тогда так и напишите. Если вы знаете как это сделать пишите подробно или не пишите вообще. Если вопрос не понятен я попробую поставить вопрос по другому.
Очень грубо говоря
ВОТ ПРОГРАММА < она же папка
\/
> это код программы
\/
> это форма программы
\/
> это файл куда сохраняется текст
…
Как так сделать чтобы файл был в программе если такое возможно БЕЗ ОТДЕЛЬНОГО ФАЙЛА
9 июня 2009 в 12:04
Толи вопрос не понятно поставлен, толи как… Или люди, которые занимаются программированием уже не знают, что не сохранять невозможно. И зачем нужна ОП и зачем нужен хард… Без обид.
9 июня 2009 в 12:01
это наз. "сериализация"
9 июня 2009 в 11:05
"то есть я например, редактирую в поле текст СОХРАНЯЮ закрываю приложение…"
Сохраняешь ты его в любом случае куда-то. (файл, база данных и т.д) а при открытии автоматически читаешь.
9 июня 2009 в 10:01
Какие странные у людей запросы. Зачем это нужно? В любом случае что-то сохранять да придётся – сгенерённый класс, например, храняший твои данные. Наверняка, для C# существует библиотека, позволяющая генерить классы в рантайме или MSIL код.