Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.04.14;
Скачать: [xml.tar.bz2];

Вниз

Как передать функции управление динамическим массивом?   Найти похожие ветки 

 
Vopros01   (2003-04-03 09:42) [0]

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


 
Anatoly Podgoretsky   (2003-04-03 09:47) [1]

SetLength


 
Skier   (2003-04-03 09:48) [2]

>Vopros01
1) модификатор var у формального параметра
2) SetLength(...)


 
vopros01   (2003-04-03 10:37) [3]

Извините, неправильно поставил вопрос.
Пример:

var
SpisSearch: array of Integer; // список найденного
CountSearch: Word; // количество найденного

begin

Search(CountSearch, SpisSearch);

// Далее обработка полученного списка


end;

Процедура Search должна мне вернуть сформированные SpisSearch и CountSearch

Procedure Search(Spis: array of Integer; Count: Word);
begin

// вычисление количества элементов
...

// назначить размерность динамического массива
SetLength(Spis, Count);

// присвоить значения элементам массива
...

end;

Процедура Search лежит в другом модуле (если это имеет значение)

Так вот, такая схема не работает! Компилятор выдает ошибку на строке
SetLength(Spis, Count);

Help!


 
AlexSV   (2003-04-03 10:49) [4]


> vopros01
> Так вот, такая схема не работает

А что при этом говорит?

ИМХО
Сделать объявление типа
type TIntArray: array of Integer;

а потом использовать:
var
SpisSearch: TIntArray;
...
Procedure Search(Spis: TIntArray; Count: Word);


 
vopros01   (2003-04-03 10:49) [5]

Help!


 
Skier   (2003-04-03 10:51) [6]

>vopros01
1) type TIntArray: array of Integer;
2) Procedure Search(var Spis: TIntArray; var Count: Word);
(если я правильно понял...)



 
AlexSV   (2003-04-03 10:54) [7]


> Skier ©


Списываем? ;-)))


 
vopros01   (2003-04-03 10:54) [8]

> Сделать объявление типа
> type TIntArray: array of Integer;
AlexSV, поясните где сделать? В модуле с вызываемой процедурой или в вызывающей?



 
Skier   (2003-04-03 10:56) [9]

>AlexSV
Ну...я бы сказал так : "заимствуем разумные вещи"
И потом...надо вовремя оформлять copyright. :)))


 
AlexSV   (2003-04-03 10:57) [10]

Объявление типа делаем в модуле, где находится процедура разделе interface


 
vopros01   (2003-04-03 11:20) [11]

Спасибо. Буду пробовать.
Блин! У меня сейчас рухнул комп. Выдал ошибку записи на винт.
После Reset винт не был обнаружен! Только после полного выключения компа я смог облегченно выдохнуть. Извиняюсь за отступление...:)


 
vopros01   (2003-04-03 12:21) [12]

Всем спасибо! Работает! (пару дней бился, пытаясь врубиться самостоятельно)



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.04.14;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.009 c
1-44116
Shirson
2003-04-03 08:54
2003.04.14
Как определить размер блока, полученного в pByte?


1-44142
Spartak
2003-04-03 14:09
2003.04.14
Срочно ! как сделать messagebox в несколько строк ?


3-43987
RDA
2003-03-24 11:36
2003.04.14
Проблемы с MS Jet и ADO


7-44479
SergoMasky
2003-02-19 21:52
2003.04.14
Возможен ли следующий вариант работы с COM-портом


1-44147
Spartak
2003-04-03 14:28
2003.04.14
Как записать в edit значениеиспользуемое в компоненте HotKey ?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский