Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Программа и интерфейс
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 31.12.2009, 14:22
UltraBloxX UltraBloxX вне форума
Новичок
 
Регистрация: 13.05.2009
Сообщения: 66
Репутация: 10
По умолчанию Нужно запихнуть в exe информацию

Вообщем допустим есть скомпиленный exe - мне нужно как-то в него подшить текстовую информацию при этом не побив файл. Как можно сделать?

Вообщем есть проект небольшой. Надо чтобы одна программа могла вшить в exe скрипт, и потом этот exe'шник мог прочитать скрипт с себя.

Последний раз редактировалось UltraBloxX, 31.12.2009 в 14:27.
Ответить с цитированием
  #2  
Старый 31.12.2009, 14:42
Аватар для s0Creator
s0Creator s0Creator вне форума
Местный
 
Регистрация: 20.02.2008
Адрес: Московская область
Сообщения: 420
Репутация: 884
По умолчанию

Дописываете в конец файла скрипт, а затем его длинну.
При считывании, сперва читаете длинну ( последние байты ).
Затем отсчитываете ее от конца файла и читаете.
Ответить с цитированием
  #3  
Старый 31.12.2009, 16:11
UltraBloxX UltraBloxX вне форума
Новичок
 
Регистрация: 13.05.2009
Сообщения: 66
Репутация: 10
По умолчанию

Сейчас попробовал сделать две проги для эксперимента с хранением данных в exe. Записывается в exe вроде нормально, но при чтении вторая прога без звука крэшится. Код записывающей программы:

Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
Script := TStringList.Create;
Script.Add('Test');
AssignFile(F,ExtractFilePath(ParamStr(0)) + 's.exe');
Reset(F);
BufSize := SizeOf(Script);
Seek(F,FileSize(F));
BlockWrite(F,Script,BufSize);
Bf := BufSize;
BufSize := BufSize + 64;
Seek(F,FileSize(F));
BlockWrite(F,Bf,64);
CloseFile(F);
end;

Код считывающей программы:

Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
AssignFile(F,(ParamStr(0)));
FileMode := 0;
Reset(F);
Seek(F,FileSize(F)-64);
BlockRead(F,BufSize,64);
BufSize := BufSize + 64;
Bf := FileSize(F)-BufSize;
Seek(F,Bf);
BlockRead(F,Script,BufSize);
ShowMessage('Script Line 0: ' + Script.Strings[0]);
CloseFile(F);
end;

F - нетипизированный файл

Последний раз редактировалось UltraBloxX, 31.12.2009 в 16:20.
Ответить с цитированием
  #4  
Старый 31.12.2009, 16:47
Аватар для s0Creator
s0Creator s0Creator вне форума
Местный
 
Регистрация: 20.02.2008
Адрес: Московская область
Сообщения: 420
Репутация: 884
По умолчанию

Что-то Ты там намутил. И там и там + 64.
А sizeOf(Integer) = 4 байтам.
Вот несколько ссылок, разбирайся
http://www.cyberforum.ru/delphi-begi...read78060.html
http://www.kansoftware.ru/?did=30
Удачи и с Новым Годом !!!
Ответить с цитированием
  #5  
Старый 31.12.2009, 17:15
UltraBloxX UltraBloxX вне форума
Новичок
 
Регистрация: 13.05.2009
Сообщения: 66
Репутация: 10
По умолчанию

Да, действительно ошибка позорная. Перепутал биты с байтами . У меня BufSize - Int64. Так что выходит 8 байт.
Ответить с цитированием
  #6  
Старый 31.12.2009, 21:32
UltraBloxX UltraBloxX вне форума
Новичок
 
Регистрация: 13.05.2009
Сообщения: 66
Репутация: 10
По умолчанию

Теперь образовалась другая проблема - После считывания Script с себя (TStringList), при обращении к нулевому элементу (Script.Strings[0]) Access Violation, при этом Script создан. Вообщем в каком виде вшивать скрипт следует?
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 13:03.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025