Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / КАРАУЛ, НЕ ДОГОНЯЮ / 15 сообщений из 15, страница 1 из 1
20.11.2003, 06:29
    #32329535
Valdemar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАРАУЛ, НЕ ДОГОНЯЮ
private
procedure otobragenie(nomer_oper:byte);

объявляю процедуру в модуле, и в нутри нее обращаюся к компоненту TStringGrid

procedure TFormAdd.otobragenie(nomer_oper:byte)
begin
case nomer_oper of
1:begin
i:=0;
матерится здесь:
formadd.SGSpisok.Cells[i,j]:=strData[1]; i:=i+1;
ошибка обращения по адресу, нет доступа
formadd.SGSpisok.Cells[i,j]:=strData[2]; i:=i+1;
...
Рейтинг: 0 / 0
20.11.2003, 06:31
    #32329536
Aleksey777
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАРАУЛ, НЕ ДОГОНЯЮ
что то запятых между i и j не разглядел
...
Рейтинг: 0 / 0
20.11.2003, 06:33
    #32329537
Valdemar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАРАУЛ, НЕ ДОГОНЯЮ
Приглядись они там есть, это точно.
...
Рейтинг: 0 / 0
20.11.2003, 06:43
    #32329541
dubok
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАРАУЛ, НЕ ДОГОНЯЮ
а точно такая ячейка есть formadd.SGSpisok.Cells[i,j] я вот напиример не понял чему у тебя j равно
...
Рейтинг: 0 / 0
20.11.2003, 06:46
    #32329543
Valdemar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАРАУЛ, НЕ ДОГОНЯЮ
j:=1 эта переменная объявляется раньше
...
Рейтинг: 0 / 0
20.11.2003, 07:23
    #32329551
Valdemar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАРАУЛ, НЕ ДОГОНЯЮ
Проблема была решена: нет необходимость обращаться через formadd.
те вместо
formadd.SGSpisok.Cells[i,j]:=strData[1]; i:=i+1;
надо
SGSpisok.Cells[i,j]:=strData[1]; i:=i+1;

а вот ктонибудь объяснит? почему так?
...
Рейтинг: 0 / 0
20.11.2003, 08:42
    #32329603
Сашка
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАРАУЛ, НЕ ДОГОНЯЮ
рискну предположить, это из-за того, что ты ее описал в разделе private. опиши ты ее в public, я думаю этой бы ошибки не было
...
Рейтинг: 0 / 0
20.11.2003, 09:18
    #32329626
m_kus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАРАУЛ, НЕ ДОГОНЯЮ
Потому что FormAdd - это переменная, и ей может быть не присвоено значение, а если ты пишешь self.SGSpisok или просто SGSpisok - ты обращаешься прямо к текущему экземпляру формы, для которого вызвана otobragenie
...
Рейтинг: 0 / 0
20.11.2003, 13:52
    #32330090
Дмитрий Мыльников
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАРАУЛ, НЕ ДОГОНЯЮ
m_kus прав

когда Delphi генерирует модуль для формы, то она создаёт соответсвующий класс, например TForm1, а также в интерфейсном разделе var этого модуля
объявляется переменная form1:TForm1;

Эта переменная будет проинициализирована в модуле проекта (файл .dpr) только если включен флаг автоматического создания формы, либо в свойствах проекта форма находится в списке форм, котоыре создаются автоматически при запуске программы.

Иначе перед обращением к форме необходимо написать
Form1:=TForm1.Create(Self);

либо так, как записано в файле .dpr

Application.CreateForm(TForm1, Form1);

Первый способ будет работать только если вызов делается внутри метода другой формы. При этом создаваемая форма будет считаться дочерней от той, в методе которой она создана. Во втором случае она как бы независима от других форм, кроме главной.

Ручное создание форм обычно приходится применять в больших проектах, когда держать все формы созданными невозможно из-за внутренних ограничений системы Windows (не хватает свободных дескрипторов окон).

В общем-то в вашем примере типичная ошибка при работе с классами. При обращении к полям класса внутри методов не следует указывать конкретную переменную данного класса, а нужно просто обращаться к соответсвующему полю. Компилятор это не считает ошибкой и пропускает, поскольку синтакисчески всё правильно. Но потом в работе из-за этого возникает масса проблем. Код будет работать всё время только с данной конкретной переменной и если создать ещё один экземпляр класса TForm1, то в нём никаких изменекий не будет, менятся будет только тот конкретный экземпляр класса, на который вы сослались в своём методе.
...
Рейтинг: 0 / 0
20.11.2003, 13:56
    #32330096
Артем1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАРАУЛ, НЕ ДОГОНЯЮ
Дмитрий Мыльников писал:Ручное создание форм обычно приходится применять в больших проектах, когда держать все формы созданными невозможно из-за внутренних ограничений системы Windows (не хватает свободных дескрипторов окон).
...
Рейтинг: 0 / 0
20.11.2003, 14:07
    #32330123
Могун
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАРАУЛ, НЕ ДОГОНЯЮ
Вот так и рождаются мифы... Дескрипторов дефицит(2млрд)
...
Рейтинг: 0 / 0
20.11.2003, 14:07
    #32330124
JibSkeart
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАРАУЛ, НЕ ДОГОНЯЮ
Дарагой этоже сколько в приложениях окон то нужно быдет насоздовать
скорее ресурсов не хватит чем дескрипторов окон
_____________
__
...
Рейтинг: 0 / 0
20.11.2003, 14:20
    #32330149
Luchkin Dmitry
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАРАУЛ, НЕ ДОГОНЯЮ
в <='98 часто было. в какой-то момент выпадала ошибка Win 32 API про недостаток хэндлов. когда разбирались, получалось, что каждая визуальная компонента (а может и не только визуальная) занимала хэндл.
...
Рейтинг: 0 / 0
20.11.2003, 14:42
    #32330195
Cauchy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАРАУЛ, НЕ ДОГОНЯЮ
Да просто дело в том, что если создавать все формы и их много,то будет долго открываться программа. Кстати большинство юзеров будут при этом говорить, что у тебя тормозная программа и вообще полное г...
...
Рейтинг: 0 / 0
20.11.2003, 15:01
    #32330234
Артем1
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
КАРАУЛ, НЕ ДОГОНЯЮ
2 Cauchy
Вот именно, а то тут некоторым дескрипторов нехватает :)
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / КАРАУЛ, НЕ ДОГОНЯЮ / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]