Много видел статей про создания Билдера к трою или вирю и захотел написать свой. Как всегда не чего лучше изучения книг и практики нету(ну возможно просмотр видео
Ты написал свой трой и каждый раз его редактировать в исходниках не удобно, согласись.
(такие параметры на пример как почта или ftp)
Для этого мы и напишем билдер.
Пример будет на замене обычного текста в простой программе.
Открываем delphi 7,создаём простой проект и на форму кинем Edit.
В инспекторе объекта Edit ищем Text и вписываем xxxxxxxxxx можете другое написать ,не в этом суть,а в количестве х
Так как большее количество мы не изменим и программа просто не запустится(то есть, чем больше х тем лучше).
Сохраните проект и компилируйте Назовём полученный файл test.exe
Теперь приступим к созданию билдера,который будет изменять надпись в Edit(xxxxxxxxxx) на нужную нам.
Открываем опять delphi 7 и создаём новый проект.
На форму кинем Edit и Button.
Сохраним проект.В папку с сохранённым проектом кинем ранее созданный text.exe
Там же создадим текстовый документ и напишем:Скрытый текст, требуется 0 сообщение(ий) (сейчас у вас 204):
code: TEST EXEFILE C:\Users\admin\Desktop\test\test.exe
Сохраним его и переименуем в test.rc
Открываем cmd и пишем>brc32.exe C:\\путь до файла\test.rc
У вас получится файл test.res
Открываем наш проект с билдером и находим {$R *.dfm} чуть ниже допишем {$R test.res}
Это мы наш text.exe поместили в ресурсы билдера. Теперь нам нужно прописать его извлечение из ресурсов и замену нашего xxxxxxxxxx
В проекте ниже {$R *.dfm} пишем две процедуры:Скрытый текст, требуется 0 сообщение(ий) (сейчас у вас 204):
code: function ExtractRes(ResType, ResName, ResNewName: string): Boolean; var Res: TResourceStream; begin Res := TResourceStream.Create(Hinstance, Resname, PChar(ResType)); try Res.SavetoFile(ResNewName); Result := True; finally Res.Free; end; end;
procedure ReplaceStr(FileName, OldStr, NewStr: String); var f: file; l: Longint; S: string; begin S := OldStr; AssignFile(f, FileName); Reset(f, 1); for l := 0 to FileSize(f) - Length(OldStr) - 1 do begin Application.ProcessMessages; Seek(f, l); BlockRead(f, OldStr[1], Length(OldStr)); if OldStr = S then begin Seek(f, l); BlockWrite(f, NewStr[1], Length(NewStr)); end; end; CloseFile(f); end;
Теперь нажимаем два раза на Button и пишем:Скрытый текст, требуется 0 сообщение(ий) (сейчас у вас 204):
code: procedure TForm1.Button1Click(Sender: TObject); var StrTest, hTest: String; begin StrTest := Edit1.Text; if StrTest = '' then begin ShowMessage('Введите значение'); Exit; end; hTest := StrTest + #0; begin ExtractRes('EXEFILE', 'TEST', 'test.exe'); ReplaceStr('test.exe', 'xxxxxxxxxx', hTest); ShowMessage('Готово'); end; end;
Компилируем и проверяем.
Ура :yahoo: работает!!!
Вот и ты создал свой первый билдер.
P.S. К сожалению этот код не работает на delphi 2010!!!
|