Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.08.2011, 20:20   #11
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,814
По умолчанию

делай проще - запиши свой EXEшник в конец твоей скомпилированной программы и потом его оттуда читай, а хочешь, то можно и скопировать и запустить. или если файл небольшой, то посимвольно запиши его как константу в исходный код, типа так:
Код:
const file=CHR(72)+Chr(45)+Chr(0)+...
. Так и читается легко и упаковщиком не испоганишь твой драгоценный файл
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума Ответить с цитированием
Старый 31.08.2011, 21:01   #12
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
Сообщение от Manhunt714 Посмотреть сообщение
спс, более менее понятно, а чО за хелп, справка делфийский?)
в главном мененю delphi есть пункт Help тыкаешь его и там для тедя 2 важных пкнкта:
1. Delphi Help с описнием всего и вся в делфи(модули классы компоненты и т.д.)
2/ Windows SDK аналок MSDN только старый.
Человек_Борща вне форума Ответить с цитированием
Старый 31.08.2011, 22:51   #13
asmodey1
Подтвердите свой е-майл
 
Регистрация: 19.12.2010
Сообщений: 808
По умолчанию

Надеюсь, что вы не вирус пишете
Тогда может быть сгодится:
Цитата:
Добавление данных в EXE файл и их чтение

На самом деле это вполне реально сделать с помощью следующего кода. Применение данному методу можно найти массу, решать вам.
Вот процедура, добавляющая какие-либо данные к существующему EXE файлу:

function AttachToFile(const AFileName: string; MemoryStream: TMemoryStream): Boolean;
var
aStream: TFileStream;
iSize: Integer;
begin
Result := False;
if not FileExists(AFileName) then
Exit;
try
aStream := TFileStream.Create(AFileName, fmOpenWrite or fmShareDenyWrite);
MemoryStream.Seek(0, soFromBeginning);
// поиск конца файла
aStream.Seek(0, soFromEnd);
// копируем данные из MemoryStream
aStream.CopyFrom(MemoryStream, 0);
// сохраняем размер потока
iSize := MemoryStream.Size + SizeOf(Integer);
aStream.Write(iSize, SizeOf(iSize));
finally
aStream.Free;
end;
Result := True;
end;

А вот так эти данные можно прочитать:

function LoadFromFile(const AFileName: string; MemoryStream: TMemoryStream): Boolean;
var
aStream: TFileStream;
iSize: Integer;
begin
Result := False;
if not FileExists(AFileName) then
Exit;

try
aStream := TFileStream.Create(AFileName, fmOpenRead or fmShareDenyWrite);
// ищем позицию с которой начинаются сохраненные данные
aStream.Seek(-SizeOf(Integer), soFromEnd);
aStream.Read(iSize, SizeOf(iSize));
if iSize > aStream.Size then
begin
aStream.Free;
Exit;
end;
// ищем позицию сохраненных данных
aStream.Seek(-iSize, soFromEnd);
MemoryStream.SetSize(iSize - SizeOf(Integer));
MemoryStream.CopyFrom(aStream, iSize - SizeOf(iSize));
MemoryStream.Seek(0, soFromBeginning);
finally
aStream.Free;
end;
Result := True;
end;

А вот как это можно использовать:

procedure TForm1.SaveClick(Sender: TObject);
var
aStream: TMemoryStream;
begin
aStream := TMemoryStream.Create;
Memo1.Lines.SaveToStream(aStream);
AttachToFile('Test.exe', aStream);
aStream.Free;
end;

procedure TForm1.LoadClick(Sender: TObject);
var
aStream: TMemoryStream;
begin
aStream := TMemoryStream.Create;
LoadFromFile('Test.exe', aStream);
Memo1.Lines.LoadFromStream(aStream) ;
aStream.Free;
end;

Думаю, что с последними примерами все понятно. В данном случае мы рассмотрели сохранение данных в файле Test.exe из компонента TMemo.
asmodey1 вне форума Ответить с цитированием
Старый 01.09.2011, 07:28   #14
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Цитата:
2/ Windows SDK аналок MSDN только старый.
Надеюсь это вы так шутите.... Поскольку ВинСДК никакой не аналог МСДН и тем более не старый МСДН.
p51x вне форума Ответить с цитированием
Старый 01.09.2011, 09:33   #15
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

я имел ввиду его оффлаин версия.

может мы просто по разному понимаем и используем msdn, т.к. я его использую исключительно как справочник функций предлогаемых системой. А windows SDK из поставки делфи, тоже самое только более старый.
Человек_Борща вне форума Ответить с цитированием
Старый 01.09.2011, 10:31   #16
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,707
По умолчанию

Хоть оффлайн, хоть онлайе... ВинСДК нет онлайн кстати.

Цитата:
Microsoft® Windows® SDK — это набор средств, примеров кода, документации, компиляторов, заголовков и библиотек, которые могут использоваться разработчиками при создании приложений, работающих в операционных системах Microsoft Windows с использованием собственной (Win32) или управляемой (.NET Framework) моделей программирования.
http://msdn.microsoft.com/ru-ru/windows/ff851942

А, MSDN - это именно справочник... и как его можно еще как-то использовать?
И да, он есть онлайн.
p51x вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как компилировать файл программу в exe файл? Vuzy Помощь студентам 11 13.11.2015 18:27
Как 'засунуть' звуковой файл в EXE-шник.чтоб моя прога состояла всего из одного exe betirsolt Общие вопросы Delphi 11 18.04.2010 21:58
Из программы 1.exe создаем пустой файл 2.exe. Как из программы 1 внести API функции в программу 2? X-LEV-X Общие вопросы Delphi 7 09.03.2010 08:33
Как добавить запись в файл через StringGrid Oooooleg Помощь студентам 5 17.05.2009 14:47
Как добавить в файл несколько строк?! zotox Помощь студентам 4 11.09.2008 22:32