Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Не видит глобальную переменную  [new]
terlalex
Member

Откуда:
Сообщений: 155
описал переменную id_user как глобальную. Но почему-то в других модулях её не видит!!
Не пойму почему!
Вот кусок главного модуля :


+
unit polyclinic;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Data.DB, Data.Win.ADODB, Vcl.DBCtrls,
  Vcl.ComCtrls, System.ImageList, Vcl.ImgList, Vcl.ToolWin, Vcl.StdCtrls,
  Vcl.ExtCtrls;

type
  TForm1 = class(TForm)
    ADOConnection1: TADOConnection;
    ADOTable1: TADOTable;
    DataSource1: TDataSource;
    StatusBar1: TStatusBar;
    ToolBar1: TToolBar;
    ToolButton1: TToolButton;
    ToolButton2: TToolButton;
    ImageList1: TImageList;
    Panel1: TPanel;
    Label1: TLabel;
    DBLookupComboBox1: TDBLookupComboBox;
    Label2: TLabel;
    Edit1: TEdit;
    CheckBox1: TCheckBox;
    Button1: TButton;
    Image1: TImage;
    ToolButton3: TToolButton;
    procedure FormActivate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure CheckBox1Enter(Sender: TObject);
    procedure ToolButton1Click(Sender: TObject);
    procedure ToolButton2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure ToolButton3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  id_user :integer ;

implementation

{$R *.dfm}

uses Unit2, Unit3, Unit4, Unit5;


Модератор: Пользуйтесь тегом (кнопкой) SRC для оформления кода, пожалуйста.
12 янв 18, 19:13    [21102832]     Ответить | Цитировать Сообщить модератору
 Re: Не видит глобальную переменную  [new]
чччД
Guest
terlalex,

модули видят только то, что хотят. Т.обр., добавь "polyclinic" в список uses секции interface каждого модуля.

interface
uses polyclinic, ...;
12 янв 18, 19:20    [21102854]     Ответить | Цитировать Сообщить модератору
 Re: Не видит глобальную переменную  [new]
rgreat
Member

Откуда:
Сообщений: 3860
В каком месте не видит?

Код покажи.
12 янв 18, 19:20    [21102857]     Ответить | Цитировать Сообщить модератору
 Re: Не видит глобальную переменную  [new]
rgreat
Member

Откуда:
Сообщений: 3860
А если ты даже в uses polyclinic не прописал то код можешь не показывать.
12 янв 18, 19:22    [21102860]     Ответить | Цитировать Сообщить модератору
 Re: Не видит глобальную переменную  [new]
terlalex
Member

Откуда:
Сообщений: 155
СПАСИБО!!
Забыл, что юнит назвал нестандартно. )
12 янв 18, 19:25    [21102871]     Ответить | Цитировать Сообщить модератору
 Re: Не видит глобальную переменную  [new]
чччД
Guest
terlalex
СПАСИБО!!
Забыл, что юнит назвал нестандартно. )


"Стандартно" - это "Unit1"?
12 янв 18, 19:28    [21102881]     Ответить | Цитировать Сообщить модератору
 Re: Не видит глобальную переменную  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 44256
terlalex
var
  Form1: TForm1;
  id_user :integer ;

implementation
а за глобальные переменные еще не расстреливают?
12 янв 18, 22:46    [21103498]     Ответить | Цитировать Сообщить модератору
 Re: Не видит глобальную переменную  [new]
DimaBr
Member

Откуда:
Сообщений: 10312
за Application, Screen тоже расстреливать ?
13 янв 18, 02:36    [21103750]     Ответить | Цитировать Сообщить модератору
 Re: Не видит глобальную переменную  [new]
чччД
Guest
DimaBr,

за отрицание священности кода VCL.
13 янв 18, 02:38    [21103751]     Ответить | Цитировать Сообщить модератору
 Re: Не видит глобальную переменную  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 44256
DimaBr
за Application, Screen тоже расстреливать ?

сначала пишут говнокод

а потом возникают советы вида
чччД
terlalex,

модули видят только то, что хотят. Т.обр., добавь "polyclinic" в список uses секции interface каждого модуля.

interface
uses polyclinic, ...;
13 янв 18, 13:00    [21104050]     Ответить | Цитировать Сообщить модератору
 Re: Не видит глобальную переменную  [new]
под ван
Guest
andreymx
DimaBr
за Application, Screen тоже расстреливать ?

сначала пишут говнокод

а потом возникают советы вида
чччД
terlalex,

модули видят только то, что хотят. Т.обр., добавь "polyclinic" в список uses секции interface каждого модуля.

interface
uses polyclinic, ...;

Так ты на личном примере покажи, как надо. Что толку от твоих недовольства и порицания. Борись с говнокодом своим кодом! Всегда. Везде. Даже в Запорожье!
13 янв 18, 13:03    [21104057]     Ответить | Цитировать Сообщить модератору
 Re: Не видит глобальную переменную  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 44256
под глобальные константы и переменные (если они нужны) выделяю один или два модуля
1. DataModule
2. юнит с константами и глобальными функциями-процедурами текущего проекта

ни в одном проекте нет глобальных перемнных типа форма
Ни в одном подчиненном модуле никогда нет ссылок на главную форму или юнит с главной формой
все подчиненные формы вызываются через функции/интерфейсы вида
function Create_New_zayavka(
      p_pred, p_cex, p_kodgr_b, p_id_3123, p_NKS_job_id_nsi3119 : variant
      ) : boolean;


implementation

{$R *.dfm}
function Create_New_zayavka(
      p_pred, p_cex, p_kodgr_b, p_id_3123, p_NKS_job_id_nsi3119 : variant
      ) : boolean;
var
  Zayavka_row_form : TZayavka_row_form;
  msg : string;
begin
  msg := '';
  result := false;

  Zayavka_row_form := TZayavka_row_form.Create(Application);
  try
    Zayavka_row_form.ZayavState := TZS_before_new_doc;
    Zayavka_row_form.p_pred     := p_pred;
    Zayavka_row_form.p_cex      := p_cex;
    Zayavka_row_form.p_kodgr_b  := p_kodgr_b;
    Zayavka_row_form.p_id_3123  := p_id_3123;
    Zayavka_row_form.p_NKS_job_id_nsi3119 := p_NKS_job_id_nsi3119;
    Zayavka_row_form.InitData;
    if Zayavka_row_form.p_error_in_created then exit;
    result := Zayavka_row_form.ShowModal = Mr_ok;
  finally
    Zayavka_row_form.Free;
  end;
end;
13 янв 18, 13:42    [21104120]     Ответить | Цитировать Сообщить модератору
 Re: Не видит глобальную переменную  [new]
alekcvp
Member

Откуда:
Сообщений: 606
andreymx
ни в одном проекте нет глобальных перемнных типа форма
Ни в одном подчиненном модуле никогда нет ссылок на главную форму или юнит с главной формой
все подчиненные формы вызываются через функции/интерфейсы вида

Исходный .dpr сразу под нож или основная форма создаётся где?..
13 янв 18, 14:04    [21104155]     Ответить | Цитировать Сообщить модератору
 Re: Не видит глобальную переменную  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 44256
alekcvp
andreymx
ни в одном проекте нет глобальных перемнных типа форма
Ни в одном подчиненном модуле никогда нет ссылок на главную форму или юнит с главной формой
все подчиненные формы вызываются через функции/интерфейсы вида

Исходный .dpr сразу под нож или основная форма создаётся где?..
сразу правится как надо
13 янв 18, 14:26    [21104191]     Ответить | Цитировать Сообщить модератору
 Re: Не видит глобальную переменную  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 44256
ессно, из методов формы нет ссылок на саму форму вроде MainForm.Caption := 'Моя Фигня'
13 янв 18, 14:29    [21104196]     Ответить | Цитировать Сообщить модератору
 Re: Не видит глобальную переменную  [new]
Сюзанна
Member

Откуда:
Сообщений: 10
andreymx,

Взирая на солнце, прищурь глаза свои, и ты смело разглядишь в нём пятна.
13 янв 18, 14:56    [21104257]     Ответить | Цитировать Сообщить модератору
 Re: Не видит глобальную переменную  [new]
чччД
Guest
andreymx,

чудеса в решете.
13 янв 18, 15:10    [21104281]     Ответить | Цитировать Сообщить модератору
 Re: Не видит глобальную переменную  [new]
rgreat
Member

Откуда:
Сообщений: 3860
andreymx
ессно, из методов формы нет ссылок на саму форму вроде MainForm.Caption := 'Моя Фигня'
Это повод для гордости? ;)
13 янв 18, 15:26    [21104323]     Ответить | Цитировать Сообщить модератору
 Re: Не видит глобальную переменную  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 44256
rgreat
andreymx
ессно, из методов формы нет ссылок на саму форму вроде MainForm.Caption := 'Моя Фигня'
Это повод для гордости? ;)
нет
13 янв 18, 15:36    [21104339]     Ответить | Цитировать Сообщить модератору
 Re: Не видит глобальную переменную  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 44256
чччД
andreymx,

чудеса в решете.
приветствую критические замечания

с уважением, Андрей
13 янв 18, 15:41    [21104348]     Ответить | Цитировать Сообщить модератору
 Re: Не видит глобальную переменную  [new]
чччД
Guest
andreymx,

нет замечаний.
Если код компилируется без ошибок - он прекрасен.
13 янв 18, 15:57    [21104383]     Ответить | Цитировать Сообщить модератору
 Re: Не видит глобальную переменную  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 44256
чччД
andreymx,

нет замечаний.
Если код компилируется без ошибок - он прекрасен.
позвольте с вами не согласится
13 янв 18, 16:15    [21104420]     Ответить | Цитировать Сообщить модератору
 Re: Не видит глобальную переменную  [new]
чччД
Guest
andreymx,

на вас не угодишь.
13 янв 18, 16:20    [21104424]     Ответить | Цитировать Сообщить модератору
 Re: Не видит глобальную переменную  [new]
andreymx
Member

Откуда: Запорожье
Сообщений: 44256
чччД
andreymx,

на вас не угодишь.
и не надо :)
13 янв 18, 16:23    [21104434]     Ответить | Цитировать Сообщить модератору
 Re: Не видит глобальную переменную  [new]
Ваш Кэп
Guest
Делай, делай. Главное, когда бани полезут со всех щелей, опять 'кривая' Delhi виновата не была.
13 янв 18, 16:51    [21104465]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Delphi Ответить