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

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> Массив как входной параметр 
:(
    Опции темы
MaxxSoftware
Дата 25.5.2005, 12:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Не могу сделать массив входным параметром функции...

Задача примерно такая, нужно сассив в котором куча строк запихать в функцию каторая с етим массивом работает и возвращает новый массив...
Ну или пусть хотя бы не возвращет, не суть важно, главное в нее его передать

пишу примерно что то такое:
function func (a:array [0..10] of string):boolean
ругается на скобки квадратные, убераю диапозон - все одно ругается... вообще можно как то это реализовать?
PM MAIL   Вверх
Yanis
Дата 25.5.2005, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(MaxxSoftware @ 25.5.2005, 12:15)
function func (a:array [0..10] of string):boolean

В качестве параметров можно передавать только тип. А массив это не тип. Значит делаем так:
Код

{ ... }
type
  MyArray = array [0..10] of string;
{ ... }
function func (const x: MyArray):boolean;
begin
// work
end;

Добавлено @ 12:32
Цитата(Yanis @ 25.5.2005, 12:26)
В качестве параметров можно передавать только тип.

Немного не корректно. Перефразирую: В качестве параметров можно передавать только переменные определённого типа.
smile


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
Dynamic
Дата 25.5.2005, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Yanis @ 25.5.2005, 12:26)
В качестве параметров можно передавать только переменные определённого типа

А константы и выражения??

Цитата(MaxxSoftware @ 25.5.2005, 12:15)
сделать массив входным параметром функции

Универсальнее так:
Код

function func (a:array of string):boolean;
var i: integer;
begin
  for i := Low(a) to High(a) do
    // что-то делаешь с a[i]
end;

// использовать

var m1: array[1..20] of string;
      m2: array[-5..+5] of string;
begin
  if a(m1) then ....;
  if a(m2) then ....;
end;



--------------------
Было бы о чем молчать, а уж что сказать – всегда найдется...
PM MAIL WWW   Вверх
Yanis
Дата 25.5.2005, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Dynamic @ 25.5.2005, 13:41)
А константы и выражения??

Наверное всё равно они имеют тип. Пускай и не явно smile
Добавлено @ 13:53
Константы точно имеют тип, а что за выражения?


--------------------
user posted image *щёлк*
PM MAIL WWW ICQ   Вверх
Dynamic
Дата 25.5.2005, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Yanis @ 25.5.2005, 13:52)
а что за выражения

Код

ShowMessage('1' + '2');


Хотя вообще-то я прицепился к слову "переменные".
smile


--------------------
Было бы о чем молчать, а уж что сказать – всегда найдется...
PM MAIL WWW   Вверх
Петрович
Дата 26.5.2005, 07:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(MaxxSoftware @ 25.5.2005, 13:15)
пишу примерно что то такое:
function func (a:array [0..10] of string):boolean
ругается на скобки квадратные, убераю диапозон - все одно ругается... вообще можно как то это реализовать?


А суть такова.
Если например определены переменные:
Код

a1,a2 :array [1..10] of Integer;
a3,a4 :array [1..10] of Integer;

То a1 и a2 имеют одинаковый тип и совместимы по присваиванию. А вот a1 и a3 имеют РАЗНЫЙ тип, и по присваиванию НЕ СВМЕСТИМЫ.
А вот если:
Код

type
  ta = array [1..10] of Integer;
  a1 :ta;
  a2 :ta;

Поэтому, если есть:
Код

function func (a:array [0..10] of string):boolean 

то непонятно, где ты еще возмешь переменную такого типа что бы передать ее в качестве параметра. Поэтому, компилятор сразу не допускает такого определения.
Ну а решение тебе уже подсказали.

Это сообщение отредактировал(а) Петрович - 26.5.2005, 07:56


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

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

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

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

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


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

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


 




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


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

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