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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Plz Help Me, динамический массив 
:(
    Опции темы
Liandry
  Дата 14.5.2003, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Привет Всем, прошу помогите!
значит я создаю тип вот такой:
Treport = record
FCount: array [1..6] of word;
TCount: array [1..6] of word;
EXDO : array [1..6] of boolean;
Marks : array [1..6] of byte;
end;
...
//затем объявляю процедуру...
public
{ Public declarations }
Procedure GenerateReport(var report: array of TReport);
end;
implementation

uses ...;

{$R *.DFM}
//описываю её
Procedure Tform1.GenerateReport(var report: array of TReport);
begin
//procedure's body
SetLength(report,N); //error HERE
// etc.
end;

----------------------------------------
Во второй форме в обработчике создаю переменную типа TReport и обращаюсь к процедуре в 1 форме;
var
report : array of TReport;
begin
Form1.GenerateReport(report);
end;

Я так понимаю, я объявил открытый массив в подпрограмме, который "принимает" массив любой длины, НО(!) пучему динамический он "принимает" но не хочет менять его длину... Можно ли как-нибудь это дело реализовать? Заранее спасибо! hmmm.gif
PM MAIL   Вверх
Fedor
Дата 14.5.2003, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Днепрянин
****


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

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



А ты не мог бы сказать тип ошибки (что именно он выдает)?


--------------------
Мы - Днепряне. Мы всех сильней.
PM ICQ   Вверх
<Spawn>
Дата 14.5.2003, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


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

Репутация: 44
Всего: 64



Помоему фукция SetLength предназначена для динамичесих массивов, а не для открытых. А в своей функции ты определяешь открытый массив, передаваемый по ссылке.


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
Liandry
Дата 14.5.2003, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



2Morpheus
[Error] Incompatible types

2<Spawn>
Как мне передать в процедуру динамический массив... (Это главный вопрос)
Да я определяю открытай массив, и сую туда динамический, который должен в этой процедуре сформироваться!
PM MAIL   Вверх
<Spawn>
Дата 14.5.2003, 14:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Око кары:)
****


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

Репутация: 44
Всего: 64



Динамичексий массив можно передать, например так:

Type
TMyMass:array of Integer;

var
Form1: TForm1;
Mas:TMyMass;

implementation

procedure MyMassProc(var Mas:TMyMass);
begin
//Твой код
end;


--------------------
"Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков.
PM MAIL ICQ   Вверх
Song
Дата 14.5.2003, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Sysman.ru
***


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

Репутация: 2
Всего: 4



array of Integer например


--------------------
Прежде чем сказать "Невозможно", подумай, прав ли ты
PM WWW ICQ   Вверх
Liandry
Дата 14.5.2003, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Хорошо попробую! Но по мойму такая конструкция передачи массива будет работать только в одном юните. Если не прудно покажи как это будет выглядеть в public declaration, как в моем примере (помойму нельзя так сделать sad.gif)

Это сообщение отредактировал(а) Liandry - 14.5.2003, 19:30
PM MAIL   Вверх
Song
Дата 14.5.2003, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Sysman.ru
***


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

Репутация: 2
Всего: 4



Procedure Example(Mas: array of Integer);
Begin
// Здесь что-то делаешь с Mas
End;

И два варианта употребления:

Var Arr: array [1..10] of Integer;

...

Example(Arr);

или

Var Arr: array of Integer;

...

SetLength(Arr,...);
Example(Arr);


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

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

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

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

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


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

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


 




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


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

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