| 
| 
 | Вопрос # 6 118/ вопрос открыт / | 
 |  Здравствуйте, эксперты!Мне надо хранить переменную типа String  внутри исполняемого файла (exe). Вся загвоздка в том, что по завершении работы мне надо изменить данные, а при следующем включении прочитать.  Читал про хранение файлов и переменных в ресурсов, но как изменять ресурсы изнутри не нашел. Подскажите, пожалуйста!
 
|  |   Вопрос задал: Данилыч (статус: Посетитель)Вопрос отправлен: 6 мая 2012, 15:45
 Состояние вопроса: открыт, ответов: 0.
 |  
 Мини-форум вопросаВсего сообщений: 8; последнее сообщение — 10 мая 2012, 21:58; участников в обсуждении: 3. 
|   | min@y™ (статус: Доктор наук), 6 мая 2012, 17:09 [#1]:А вот так пробовал? Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Данилыч (статус: Посетитель), 7 мая 2012, 20:01 [#2]:Пробовал, ничего толкового, везде создание ресурсов, извлечение их, вшитие в другой exe...   Вот нашёл более краткое использование ресурсов
 
 resourcestring  DataString = 'Начальный текс';
 
procedure TForm1.HookResourceString(rs: PResStringRec; newStr: PChar);
var
 oldprotect: DWORD;
begin
VirtualProtect(rs, SizeOf(rs^),PAGE_EXECUTE_READWRITE,@oldProtect);
rs^.Identifier := Integer(newStr);
VirtualProtect(rs, SizeOf(rs^), oldProtect, @oldProtect);
end;
 
procedure TForm1.FormClose(Sender: TObject; var Action:TCloseAction); //изменение строкового ресурса
begin
HookResourceString(@DataString,PChar('Нейкое число подсчитаное программой во время выполнения'));
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
Label1.Caption:=DataString;
end;Работает, если изменить ресурс до закрытия программы(не в FormClose), а после закрытия он снова становится 'Начальный текс'
   Как сохранить?
 |  
|   | Phantom (статус: Посетитель), 10 мая 2012, 14:22 [#4]:Здравствуйте! Могу дать вам один "детский" совет. Можно при выполнении программы записать значение переменной в нетипизированный файл, а при следующем включении считать оттуда. Удачи! |  
|   | min@y™ (статус: Доктор наук), 10 мая 2012, 14:30 [#5]: Цитата (Phantom): Могу дать вам один "детский" совет. Можно при выполнении программы записать значение переменной в нетипизированный файл, а при следующем включении считать оттуда. Гениально! И чо мы сразу не догадались, а?
 Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп! |  
|   | Данилыч (статус: Посетитель), 10 мая 2012, 20:53 [#6]: Могу дать вам один "детский" совет. Можно при выполнении программы записать значение переменной в нетипизированный файл,
а при следующем включении считать оттуда. Некомпактно. Всегда удобней иметь один большой exe чем маленький exe и много файлов. Тем более что мне надо записать 3 переменных по байту, создовать ради токого txt или dat просто стыдно
   |  
|   | Phantom (статус: Посетитель), 10 мая 2012, 21:50 [#7]:Проблема в том, что после компиляции переменные автоматически инициализируются нулями. Во время выполнения программы их можно проинициализировать нужными значениями, но по выходу из проги, они содержат снова null. В данной проблеме сам разобраться не могу. Может, есть специальные APIшные функции? |  
|   | Данилыч (статус: Посетитель), 10 мая 2012, 21:58 [#8]:exe ведь самый обычный файл, в него можно записывать и читать Информацию. пример в ссылке выше. Другое дело что пока файл исполняется его изменить нельзя. В этом вся проблема |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |