|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Помогите с билдером
Подскажите как сделать программу что-бы когда пользователь вводит в Edit1 и нажимаем на кнопку ОК, то создается программа где в Edit написан тот текст, которой пользователь писал в билреде
|
#2
|
||||
|
||||
Самый простой вариант.
Т.к тебе необходимо вписать строку в исполняемый файл можно поступить следующим образом, просто напросто вписав ее в конец исполняемого файла. Вот как это можно сделать. Код:
var Dest:TMemoryStream; Text:ShortString; begin Dest:=TMemoryStream.Create; Dest.LoadFromFile('Имя исполняемого файла'); Dest.Position:=Dest.Size; Dest.Write(Text,$FF); Dest.SaveToFile('Имя куда следует сохранить'); Dest.Free; end; Код:
var _Self:TFileStream; Text:ShortString; begin _Self:=TFileStream.Create(Application.Exename,fmOpenRead); _Self.Position:=_Self.Size-$FF;//это важно _Self.Read(Text,$FF); _Self.Free; SHowMessahe(Text); end; — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#3
|
|||
|
|||
Что-бы не создавать новую тему хочю задать еще один вопрос:
билдер: Код:
unit Unit2; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; fileName :string; //иия файла mes :string; //112 f :thandle; fils :integer; BytesRead :DWORD; c :byte; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin filename:= '1.exe'; mes:= Edit1.Text; f:=fileopen(fileName,fmOpenReadWrite); fils:=Windows.GetFileSize(f,nil); c:=ord(char(pchar(mes[1]))); //патчим первий символ SetFilePointer(f, $3B81C, nil, 0); WriteFile(f, c, SizeOf(c), BytesRead, nil); c:=ord(char(pchar(mes[2]))); //патчим второй (2) символ SetFilePointer(f, $3B81D, nil, 0); WriteFile(f, c, SizeOf(c), BytesRead, nil); c:=ord(char(pchar(mes[3]))); //патчим 3 символ SetFilePointer(f, $3B81E, nil, 0); WriteFile(f, c, SizeOf(c), BytesRead, nil); c:=ord(char(pchar(mes[4]))); //патчим 4 символ; SetFilePointer(f, $3B81F, nil, 0); WriteFile(f, c, SizeOf(c), BytesRead, nil); c:=ord(char(pchar(mes[5]))); //патчим 5 символ SetFilePointer(f, $3B820, nil, 0); WriteFile(f, c, SizeOf(c), BytesRead, nil); c:=ord(char(pchar(mes[6]))); //патчим 6 символ SetFilePointer(f, $3B821, nil, 0); WriteFile(f, c, SizeOf(c), BytesRead, nil); c:=ord(char(pchar(mes[7]))); //патчим 7 символ SetFilePointer(f, $3B822, nil, 0); WriteFile(f, c, SizeOf(c), BytesRead, nil); c:=ord(char(pchar(mes[8]))); //патчим 8 символ SetFilePointer(f, $3B823, nil, 0); WriteFile(f, c, SizeOf(c), BytesRead, nil); c:=ord(char(pchar(mes[9]))); //патчим 9 символ SetFilePointer(f, $3B824, nil, 0); WriteFile(f, c, SizeOf(c), BytesRead, nil); FileClose(f); end; end. Файл: Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} end. Я хотел что-бы Edit можно было менять. Пользовался программой WinHex. Вопрос; почему Edit не меняет текст _____________________ M.A.D.M.A.N., можно пожалуйста немного поподробней, я в Delphi новичек, поэтому почти не че не понял |
#4
|
||||
|
||||
Потому что в коде Unit1 нет никакого кода, я билдер делал на вписании инфы в хвост проги, а не на изменении свойст объекта, в твоем случае придется менять чексумм иначе прга вывалит критическую ошибку.
и я так и не понял зачем ты патцищ символы? — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |