Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 30.10.2008, 22:38
xo6a xo6a вне форума
Прохожий
 
Регистрация: 30.10.2008
Адрес: Ижевск
Сообщения: 11
Репутация: 10
По умолчанию Глобальные константы и типы

Всем привет.

Объясните мне пожалуйста, как описать глобальные константы и типы данных. У меня не выходит.

Подробности:
у меня есть несколько модулей.
один из них главный (unit1)
в нем я описываю тип данных и константу:

Цитата:
interface
uses
...
type
type1=record
i:integer;
st:string;
end;
...
private
{ Private declarations }
public
{ Public declarations }
end;

Const
const1 = 10000;

как мне определить переменную в других модулях типа "type1", а также другую переменную как константу "const1"?
Ответить с цитированием
  #2  
Старый 30.10.2008, 22:44
Alexo Alexo вне форума
Начинающий
 
Регистрация: 24.01.2007
Сообщения: 191
Репутация: 15
По умолчанию

ты в других модулях подлючил этот модуль где определил тип иконстанту?

Других припядствий нет

type 1 кстати запись, а вот это

Цитата:
private
{ Private declarations }
public
{ Public declarations }
end;

явно не ее.
__________________
Delphi - это лишь инструмент, а что ты сможешь создать при помощи этого инструмента, зависит исключительно от тебя.
Ответить с цитированием
  #3  
Старый 30.10.2008, 22:50
xo6a xo6a вне форума
Прохожий
 
Регистрация: 30.10.2008
Адрес: Ижевск
Сообщения: 11
Репутация: 10
По умолчанию

ДА! Модули я подключил! Обычные переменные описанные после VAR видно в других модулях, а типы данных и константы нет!

Цитата:
private
{ Private declarations }
public
{ Public declarations }
end;
Это я вставил специально для того чтобы было понятно где я описываю константы (там где надо)

ЕЩЕ РАЗ: глобальные перемнные работают. почему не получается сделать тоже самое с типами и константами?
Ответить с цитированием
  #4  
Старый 30.10.2008, 23:03
Alexo Alexo вне форума
Начинающий
 
Регистрация: 24.01.2007
Сообщения: 191
Репутация: 15
По умолчанию

в каком Uses ты подключил модули? (их два один сверху другой ниже) и где пытаешься использовать? (если модуль подключен ниже чем ты пытаешься использовать ты его не увидишь)
__________________
Delphi - это лишь инструмент, а что ты сможешь создать при помощи этого инструмента, зависит исключительно от тебя.
Ответить с цитированием
  #5  
Старый 30.10.2008, 23:14
Drozh Drozh вне форума
Активный
 
Регистрация: 12.06.2008
Сообщения: 313
Репутация: 40
По умолчанию

Нипонимаю в чем проблема? Все работает идеально... Гляди первый Юнит
(специально оставил все)
Код:
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;
const
 Const1 = 2345;
type
  Type1 = record
   i: integer;
   st: string;
  end;
  TForm1 = class(TForm)
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
implementation
{$R *.dfm}
end.
И второй юнит
Код:
unit Unit2;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Unit1; // добавленный юнит
type
  TForm2 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
   D: Type1; // множно использовать здесь
    { Public declarations }
  end;
var
  Form2: TForm2;
  K: Type1; // здесь
implementation

{$R *.dfm}

procedure TForm2.FormCreate(Sender: TObject);
var
 A: Type1; // и здесь
 B: Integer;
begin
 B := Const1;
 A.i := B;
 A.st := 'Ы';

 K.i := 1222;
 K.st := A.st;
end;

end.
 
Ответить с цитированием
  #6  
Старый 31.10.2008, 01:11
xo6a xo6a вне форума
Прохожий
 
Регистрация: 30.10.2008
Адрес: Ижевск
Сообщения: 11
Репутация: 10
По умолчанию

Спасибо большое за пример!
нашел ошибку:

Цитата:
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Unit1; // добавленный юнит
type
TForm2 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
D: Type1; // множно использовать здесь
{ Public declarations }
end;
var
Form2: TForm2;
K: Type1; // здесь
implementation

uses unit1; // неверное добавление юнита!
{$R *.dfm}

объясните пожалуйста разницу, чтобы в будущем не путаться
Ответить с цитированием
  #7  
Старый 31.10.2008, 11:41
AlexSku AlexSku вне форума
Специалист
 
Регистрация: 07.05.2007
Адрес: Москва
Сообщения: 884
Репутация: 21699
По умолчанию

Всё очевидно.
Цитата:
Сообщение от Alexo
(если модуль подключен ниже чем ты пытаешься использовать ты его не увидишь)
Для использования объекта сначала требуется его описание.
Например, название модуля дано в разделе implementation, а выше есть переменная D типа Type1. Компилятор и рад бы понять, что это тип Unit1.Type1, да не успел ещё узнать, что в программе будет такой модуль Unit1. Компилятор перерыл все описанные ранее модули и не нашёл в них такой тип Type1, поэтому выдаст ошибку.

Последний раз редактировалось AlexSku, 31.10.2008 в 11:50.
Ответить с цитированием
  #8  
Старый 31.10.2008, 17:14
xo6a xo6a вне форума
Прохожий
 
Регистрация: 30.10.2008
Адрес: Ижевск
Сообщения: 11
Репутация: 10
По умолчанию

спасибо!
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 15:58.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025