![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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; |
|
#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 нет никакого кода, я билдер делал на вписании инфы в хвост проги, а не на изменении свойст объекта, в твоем случае придется менять чексумм иначе прга вывалит критическую ошибку.
и я так и не понял зачем ты патцищ символы? |