Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вопрос про кусок кода 
V
    Опции темы
DarlkElfTen
  Дата 13.10.2006, 17:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 153
Регистрация: 16.3.2006

Репутация: нет
Всего: 1



вот мой вопрос:
почему он пишет "[Error] NS.pas(63): Array type required"
вот код:

Код

var
  N:array of real;
...
procedure NFS(n:real);//N First Setting
begin
  N[0]:=n;
end;
примечание: длина массива устанавливается в другой процедуре...что не такЪ?( smile 

Это сообщение отредактировал(а) DarlkElfTen - 13.10.2006, 17:36
--------------------
"Две башни"
PM MAIL ICQ   Вверх
Rennigth
Дата 13.10.2006, 17:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1708
Регистрация: 21.6.2004
Где: Moscow

Репутация: 49
Всего: 76



у тебя и массив и параметр проседуры одинаково называються, наверное из-за этого smile

Код

var
  NDynArray:array of real;
...
procedure NFS(n:real);//N First Setting
begin
  if Length(NDynArray)  > 0 then
    NDynArray[0]:=n;
end;



--------------------
(* Honesta mors turpi vita potior *)
PM MAIL ICQ   Вверх
Zero
Дата 13.10.2006, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: 8
Всего: 24



Во первых, ошибка сама потому что ты имя массива и имя параметры процедуры написал одинаково.
Во вторых, в последующе ты выявиш ещё одну ошибку во время выполнения, т.к. для динамического массива N не выделена память.
Т.е. твой код будет таким:
Код

procedure NFS(r:real);
begin
  SetLength(N,1);
  N[0]:=r;
end;

PM MAIL ICQ   Вверх
DarlkElfTen
Дата 13.10.2006, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 153
Регистрация: 16.3.2006

Репутация: нет
Всего: 1



хм...ща попробую..кстати..не обязательно делать проверку..поверь мне) smile 
УРА КОД КАТТИТЪ
ща выложу если полуится програмку smile 
--------------------
"Две башни"
PM MAIL ICQ   Вверх
smartov
Дата 13.10.2006, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 1
Всего: 259



Паскаль не сфыу-ыутышешмую
Возможно он просто тупит. Назови параметр не n а i например. 
Код

procedure NFS(i:real);//N First Setting
begin
  N[0]:=i;
end;

PM MAIL   Вверх
DarlkElfTen
Дата 13.10.2006, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 153
Регистрация: 16.3.2006

Репутация: нет
Всего: 1



все ясно, 
Цитата

Во вторых, в последующе ты выявиш ещё одну ошибку во время выполнения, т.к. для динамического массива N не выделена память

читай примечание..длина устанавливается в лругой процедуре!
--------------------
"Две башни"
PM MAIL ICQ   Вверх
smartov
Дата 13.10.2006, 17:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 1
Всего: 259



уже написали. smile
PM MAIL   Вверх
DarlkElfTen
Дата 15.10.2006, 20:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 153
Регистрация: 16.3.2006

Репутация: нет
Всего: 1



Решил не создавать еще одной темки и пишу здесь..опять возникла проблема с массивами, проде имена не путал
вотЪ описание класса с которым надо работать(частичное)

Код

type

  TNeiron = class(TObject)
  constructor Create;//Êîíñòðóêòîð

  procedure SetF(Value:real);
  procedure ClearF;
  procedure SetD;
  //Çàùèùåííûå
  protected
    FFunction:real;
  //÷àñòíûå
  private
  //ïàáëèê
  public
    FSCount:integer;
    FT:real;
    FWeight:array of real;
    FD:real;
    property FFunc:real read FFunction write SetF;
  end;


implementation

constructor TNeiron.Create;
var
  i:integer;
begin
  inherited;
  SetLength(Self.FWeight,Self.FSCount);
  for i:=0 to Self.FSCount do
  begin
    Self.FWeight[i]:=RandomRange(-5,i*Random(3));
  end;
  Self.FT:=RandomRange(-5,3);
end;

procedure TNeiron.SetF(value:real);
begin
  Self.FFunction:=Self.FFunction+value;
end;

procedure TNeiron.ClearF;
begin
  Self.FFunction:=0;
end;

procedure TNeiron.SetD;
begin
  if Self.FFunc<=Self.FT then Self.FD:= Self.FFunc else Self.FD:=0;
end;

-с этим все в норме


и далее описание процедуры в которой идет ошибка
[Error] NMain.pas(54): Array type required

Код


...
var
  Form1: TForm1;
  NArray:array of array of TNeiron;
  NX:array of real;

const
  Number=4;
...

procedure NActive;
var
  i,j,h:integer;
begin
  for i:=0 to Length(NArray[0]) do
  begin
    NArray[0,i].FFunc:=NArray[0,i].FWeight[0,i]*NX[i];
  end;

  for i:=1 to Length(NArray) do
    for j:=0 to Length(NArray[i]) do
      for h:=0 to Length(NArray[i-1]) do
      begin
        NArray[i,j].FFunc:=NArray[i,h].FD*NArray[i,j].FWeight[i,h];
      end;
end;

с учетом что у массивов уже задана длина!!!
вот тутЪ
Код

procedure SetNS;
var
  i,j:integer;
begin
  SetLength(NArray,Number+1);
  SetLength(NX,Length(NArray[0]));
  for i:=0 to Number+1 do
  begin
    if i=0 then SetLength(NArray[i],0);
    if i>0 then SetLength(NArray[i],Number-1)
  end;
  //VoidNess
  for i:=0 to Length(NArray) do
    for j:=0 to Length(NArray[i]) do
    begin
      NArray[i,j]:=TNeiron.Create;
    end;
end;




--------------------
"Две башни"
PM MAIL ICQ   Вверх
Демо
Дата 15.10.2006, 21:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 30
Всего: 50



Цитата(DarlkElfTen @  15.10.2006,  20:23 Найти цитируемый пост)
-с этим все в норме


Не в норме.
Индекс выйдет за пределы массива:

Код

 SetLength(Self.FWeight,Self.FSCount);
  for i:=0 to Self.FSCount do


То же самое везде далее.

Где определение NArray?


--------------------
    
PM MAIL ICQ Skype   Вверх
DarlkElfTen
Дата 15.10.2006, 21:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 153
Регистрация: 16.3.2006

Репутация: нет
Всего: 1



установкаразмеров ??? - в отдельной процедуре...
зы: исправил
но ошибка вотЪ тутъ !!!!
 
Код

NArray[0,i].FFunc:=NArray[0,i].FWeight[0,i]*NX[i];



!!! и далее когда я из элемента массива класса вызываю массив риалов smile 
блин..реально стена...

Добавлено @ 21:29 
Код

 SetLength(Self.FWeight,Self.FSCount);
  for i:=0 to Self.FSCount do

это ябы по любому исправил бы при полной отладке)
--------------------
"Две башни"
PM MAIL ICQ   Вверх
bems
Дата 16.10.2006, 00:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 31
Всего: 88



Цитата(DarlkElfTen @  15.10.2006,  20:23 Найти цитируемый пост)
NArray[0,i].FFunc:=NArray[0,i].FWeight[0,i]*NX[i];

а между тем FWeight одномерный
Цитата(DarlkElfTen @  15.10.2006,  20:23 Найти цитируемый пост)
FWeight:array of real;




--------------------
Обижено школьников: 8
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0609 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.