Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
КАРАУЛ, НЕ ДОГОНЯЮ
|
|||
|---|---|---|---|
|
#18+
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; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2003, 06:29 |
|
||
|
КАРАУЛ, НЕ ДОГОНЯЮ
|
|||
|---|---|---|---|
|
#18+
что то запятых между i и j не разглядел ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2003, 06:31 |
|
||
|
КАРАУЛ, НЕ ДОГОНЯЮ
|
|||
|---|---|---|---|
|
#18+
Приглядись они там есть, это точно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2003, 06:33 |
|
||
|
КАРАУЛ, НЕ ДОГОНЯЮ
|
|||
|---|---|---|---|
|
#18+
а точно такая ячейка есть formadd.SGSpisok.Cells[i,j] я вот напиример не понял чему у тебя j равно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2003, 06:43 |
|
||
|
КАРАУЛ, НЕ ДОГОНЯЮ
|
|||
|---|---|---|---|
|
#18+
j:=1 эта переменная объявляется раньше ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2003, 06:46 |
|
||
|
КАРАУЛ, НЕ ДОГОНЯЮ
|
|||
|---|---|---|---|
|
#18+
Проблема была решена: нет необходимость обращаться через formadd. те вместо formadd.SGSpisok.Cells[i,j]:=strData[1]; i:=i+1; надо SGSpisok.Cells[i,j]:=strData[1]; i:=i+1; а вот ктонибудь объяснит? почему так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2003, 07:23 |
|
||
|
КАРАУЛ, НЕ ДОГОНЯЮ
|
|||
|---|---|---|---|
|
#18+
рискну предположить, это из-за того, что ты ее описал в разделе private. опиши ты ее в public, я думаю этой бы ошибки не было ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2003, 08:42 |
|
||
|
КАРАУЛ, НЕ ДОГОНЯЮ
|
|||
|---|---|---|---|
|
#18+
Потому что FormAdd - это переменная, и ей может быть не присвоено значение, а если ты пишешь self.SGSpisok или просто SGSpisok - ты обращаешься прямо к текущему экземпляру формы, для которого вызвана otobragenie ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2003, 09:18 |
|
||
|
КАРАУЛ, НЕ ДОГОНЯЮ
|
|||
|---|---|---|---|
|
#18+
m_kus прав когда Delphi генерирует модуль для формы, то она создаёт соответсвующий класс, например TForm1, а также в интерфейсном разделе var этого модуля объявляется переменная form1:TForm1; Эта переменная будет проинициализирована в модуле проекта (файл .dpr) только если включен флаг автоматического создания формы, либо в свойствах проекта форма находится в списке форм, котоыре создаются автоматически при запуске программы. Иначе перед обращением к форме необходимо написать Form1:=TForm1.Create(Self); либо так, как записано в файле .dpr Application.CreateForm(TForm1, Form1); Первый способ будет работать только если вызов делается внутри метода другой формы. При этом создаваемая форма будет считаться дочерней от той, в методе которой она создана. Во втором случае она как бы независима от других форм, кроме главной. Ручное создание форм обычно приходится применять в больших проектах, когда держать все формы созданными невозможно из-за внутренних ограничений системы Windows (не хватает свободных дескрипторов окон). В общем-то в вашем примере типичная ошибка при работе с классами. При обращении к полям класса внутри методов не следует указывать конкретную переменную данного класса, а нужно просто обращаться к соответсвующему полю. Компилятор это не считает ошибкой и пропускает, поскольку синтакисчески всё правильно. Но потом в работе из-за этого возникает масса проблем. Код будет работать всё время только с данной конкретной переменной и если создать ещё один экземпляр класса TForm1, то в нём никаких изменекий не будет, менятся будет только тот конкретный экземпляр класса, на который вы сослались в своём методе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2003, 13:52 |
|
||
|
КАРАУЛ, НЕ ДОГОНЯЮ
|
|||
|---|---|---|---|
|
#18+
Дмитрий Мыльников писал:Ручное создание форм обычно приходится применять в больших проектах, когда держать все формы созданными невозможно из-за внутренних ограничений системы Windows (не хватает свободных дескрипторов окон). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2003, 13:56 |
|
||
|
КАРАУЛ, НЕ ДОГОНЯЮ
|
|||
|---|---|---|---|
|
#18+
Вот так и рождаются мифы... Дескрипторов дефицит(2млрд) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2003, 14:07 |
|
||
|
КАРАУЛ, НЕ ДОГОНЯЮ
|
|||
|---|---|---|---|
|
#18+
Дарагой этоже сколько в приложениях окон то нужно быдет насоздовать скорее ресурсов не хватит чем дескрипторов окон _____________ __ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2003, 14:07 |
|
||
|
КАРАУЛ, НЕ ДОГОНЯЮ
|
|||
|---|---|---|---|
|
#18+
в <='98 часто было. в какой-то момент выпадала ошибка Win 32 API про недостаток хэндлов. когда разбирались, получалось, что каждая визуальная компонента (а может и не только визуальная) занимала хэндл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2003, 14:20 |
|
||
|
КАРАУЛ, НЕ ДОГОНЯЮ
|
|||
|---|---|---|---|
|
#18+
Да просто дело в том, что если создавать все формы и их много,то будет долго открываться программа. Кстати большинство юзеров будут при этом говорить, что у тебя тормозная программа и вообще полное г... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2003, 14:42 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=32329536&tid=2115825]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
55ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 254ms |
| total: | 413ms |

| 0 / 0 |
