• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Процедуры и функции

  • Автор темы slavon-x86
  • Дата начала
S

slavon-x86

Delphi.
Код:
Procedure aaa;
Begin
End;

Procedure bbb;
Begin
End;

Из процедуры bbb процедура aaa запускается,
a из aaa процедура bbb не запускается.
Как зделать чтобы можно было из любой процедуры запускать другую ?
 
Z

zubr

В интерфейсной секции модуля объяви прототипы этих процедур и будет тебе счастье.
Код:
unit Unit1;

interface

uses
SysUtils;

Procedure aaa;
Procedure bbb;

implementation

Procedure aaa;
Begin
End;

Procedure bbb;
Begin
End;

end.
 
S

slavon-x86

А вот ещё вопрос:

У меня есть процедура.
Код:
Procedure aaa;
Begin
Form1.Memo1.Lines.add('dfgd');
End;
Как можно зделать, чтобы не дописывать перед каждым компонентом "Form1".
Только НЕ через "With Form1 do".
 
D

DZX

Обьяви процедуру внутри класса формы в private или public как тебе нужнее и не пиши.
 
S

slavon-x86

Код:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;

type
TForm1 = class(TForm)
private
 { Private declarations }
public
 { Public declarations }
 procedure aaa;
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure aaa;
begin
Memo1.Lines.add('xxxxxxxxxx');
end;

end.

Не работает
 
Z

zubr

Правильно вот так:
Код:
procedure TForm1.aaa;
begin
Memo1.Lines.add('xxxxxxxxxx');
end;
Так как процедура aaa - член класса.
З.Ы. Советую почитать литературу по объектно ориентированному программированию.
 
S

slavon-x86

А если процедура ааа находится в другом модуле ?
 
S

Smit

1.В модуле с процедурой aaa находишь раздел uses.
2.Прописываешь туда имя модуля, где описан Memo1.
3.Юзаешь Memo1. Если Memo1 объявлен внутри класса TForm1 то придётся обращаться к Memo1 через него: Form1.Memo1.Lines.Add('text');

Вообще любые переменные и процедуры (функции), если они объявлены в некотором модуле Unit1, в разделах public или published некоторого класса, будут доступны любым другим модулям, в разделе uses которых указано имя модуля Unit1. Имя модуля прописывается в Delphi автоматически, в разделе Unit, и совпадает с именем соответствующего pas-файла.
 
D

DZX

procedure TForm1.aaa;

Вот так надо объявлять членов класса и все заработает.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!