Пятница, 03.05.2024, 12:14
Приветствую Вас Гость

KSoft

Меню сайта
Категории раздела
Наш опрос
Оцените мой сайт
Всего ответов: 27
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
Форма входа
Главная » Статьи » Статьи по Delphi » Мультимедиа

Пишем Билдер(Builder)
Ну решил написать статью о создании Builder 
Открываем delphi 7,создаём простой проект и на форму кинем Edit.
В инспекторе объекта Edit ищем Text и вписываем xxxxxxxxxx можете другое написать,не в этом суть,а в количестве х
Так как большее количество мы не изменим и программа просто не запустится(то есть,чем больше х тем лучше).
кликаем по форме два раза и пише следущий код

function del(soure,simvol:string):string;
var
i:integer;
f:string;
begin
f:=soure;
 i:=length(f);
 while f[i]=simvol do
  begin
   delete(f, length(f), 1);
   dec(i);
   result:=f;
   if f='' then exit;
  end;
end;
begin
Edit1.text:=del( Edit1.text,'x');
end;

этот код удаляет лишние "x"
Сохраните проект и компилируйте 
Назовём полученный файл test.exe


Теперь приступим к созданию билдера,который будет изменять надпись в Edit(xxxxxxxxxx) на нужную нам.

Открываем опять delphi 7 и создаём новый проект.

На форму кинем Edit и Button.

Сохраним проект.В папку с сохранённым проектом кинем ранее созданный text.exe

Там же создадим текстовый документ и напишем:

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} пишем две процедуры:
[HIDE="1"]
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;
[/hide]

Теперь нажимаем два раза на Button и пишем:
[HIDE="1"]
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;
[/hide]

Компилируем и проверяем.


Категория: Мультимедиа | Добавил: KL (13.01.2012)
Просмотров: 2330 | Комментарии: 4 | Рейтинг: 0.0/0
Всего комментариев: 4
4 AsstrumNival  
0
Reset ( f, 2 )
меняешь на Reset ( f,1) и все норм я про автух ))

3 KL  
0
да я вроде сделал ссылку а этот ucoz не показал ее кстати на avtuh.ru он плохо работает ошибки есть

2 AsstrumNival  
0
тут интереснеее http://avtuh.ru/2011/06/03/delphi-sozdaem-bilder-builder.html/comment-page-1#comment-5003

1 AsstrumNival  
0
biggrin Думал что выложишь исходникки своего билдера )) мне просто интересно кстати + автору статьи
https://hacker-pro.net/thread/13775/p1.html ))) хотяб выложил ссылку на источник

Имя *:
Email *:
Код *:
Поиск
Друзья сайта