Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.09.2007, 16:08   #1
Gorin
Пользователь
 
Регистрация: 26.06.2007
Сообщений: 36
По умолчанию Объявление собственной глобальной процедуры

Скажите, возможно ли объявление своей глобальной процедуры в основном юните или обязательно надо создавать отдельный. Спасибо.
Gorin вне форума Ответить с цитированием
Старый 19.09.2007, 16:15   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

ну вообще возможно, как обычно обьявляй и все. Как в паскале обычном
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.09.2007, 16:16   #3
Iceman
Форумчанин
 
Регистрация: 08.07.2007
Сообщений: 154
По умолчанию

не. можно и в юните с формой. ток "type" луче не пиши.
Iceman вне форума Ответить с цитированием
Старый 19.09.2007, 16:24   #4
Gorin
Пользователь
 
Регистрация: 26.06.2007
Сообщений: 36
По умолчанию

Тогда непонятно. Пытаюсь объявить
Код:
unit Unit1;
 
interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms...;
type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid
      ...
procedure FormCreate(Sender: TObject);
   procedure Button2Click(Sender: TObject)
...    
Procedure BaseLoad //соотвественно моя
 
private
 
  public
 
end;
 
var
Form1: TForm1;
...

implementation
 
uses Unit2, Unit5, Unit6;
 
Procedure BaseLoad;
begin
ShowMessage('65');
end;

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
...
Получаю 199
[Error] Unit1.pas(199): Unsatisfied forward or external declaration: 'TForm1.BaseLoad'
Gorin вне форума Ответить с цитированием
Старый 19.09.2007, 16:33   #5
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

создавай её после дерективы {$R *.dfm}
SERG1980 вне форума Ответить с цитированием
Старый 19.09.2007, 16:35   #6
Gorin
Пользователь
 
Регистрация: 26.06.2007
Сообщений: 36
По умолчанию

Это, к сожалению, никак не влияет.
Gorin вне форума Ответить с цитированием
Старый 19.09.2007, 16:48   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Gorin, ты не верно истолковал понятие Глобальности :

Вот форма с которой описана процедурка, достаточно глобальная

unit Unit1;

interface

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

type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;
procedure rr;
var
Form1: TForm1;

implementation

{$R *.dfm}
//********* PROCEDURE**********
procedure rr;
//const
//Var
begin
ShowMessage('dsdsd');
end;
//********* END PROCEDURE******* {}


end.


А вот другой модуль в котором нуна ее вызвать :

unit Unit2;

interface

uses unit1, // Вот тут мы подключаем тот модуль
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm2 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);
begin
rr; // И вызываем из него процедуру.
end;

procedure TForm2.FormCreate(Sender: TObject);
begin
show;
end;

end.


Делов то...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 19.09.2007, 16:55   #8
Gorin
Пользователь
 
Регистрация: 26.06.2007
Сообщений: 36
По умолчанию

Да, спасибо. А я ,видать, пытался присобачить свою процедуру к форме, лепил до end;
Gorin вне форума Ответить с цитированием
Старый 19.09.2007, 23:31   #9
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

это далеко не единственный способ, со временем разберешься как тебе удобнее
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 06.11.2007, 16:53   #10
mahovik
Новичок
Джуниор
 
Регистрация: 06.11.2007
Сообщений: 1
По умолчанию

Подскажите пожалуйста как следующую конструкцию сделать глобальной, т.е. что бы в любом месте проги я ее мог вызвать

procedure sozdanie_tablicy(tablename,fields_t able:string);
var CommADO:TADOCommand;
ADOConnection1: TADOConnection;//без этой строки ругается Delphi
begin
CommADO:=TADOCommand.Create(nil);
CommADO.Connection:=AdoConnection1;//на эту строку
CommADO.CommandText:='CREATE TABLE '+tablename+fields_table;
CommADO.Connection.BeginTrans;
CommADO.Execute;
CommADO.Connection.CommitTrans;
end;
А если в процедуре объявляю переменную
ADOConnection1: TADOConnection;
то потом прога не идет выдает ошибку
---------------------------
Debugger Exception Notification
---------------------------
Project proga.exe raised exception class EAccessViolation with message 'Access violation at address 004C98B9 in module 'proga.exe'. Read of address 0000006C'. Process stopped. Use Step or Run to continue.

Где я не так объявляю процедуру?
mahovik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разработка собственной ОС BOBAH13 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 150 31.12.2020 15:14
объявление множества BESS Общие вопросы Delphi 7 07.08.2008 15:24
Как изменить цвет шрифта кнопки + объявление OnClick Yury Общие вопросы Delphi 7 04.05.2007 04:55