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

Вниз

Динамические массивы как параметры   Найти похожие ветки 

 
Turalyon   (2002-03-14 10:00) [0]

Приветствую всех!
У меня такой вопрос "общего назначения". Можно ли передавать процедурам в качестве параметров динамические массивы, и на сколько это корректно... Учитывая то, что эти процедуры будут его изменять (и размеры и значения)...


 
Виктор Щербаков   (2002-03-14 10:07) [1]

Передавать в функции можно, ведь Borland говорит, что
Dynamic-array variables are implicitly pointers and are managed by the same reference-counting technique used for long strings.
И даже приводит пример:
type TDynamicCharArray = array of Char;
function Find(A: TDynamicCharArray): Integer;


 
Turalyon   (2002-03-14 10:18) [2]

Сейчас попробывал сделать вот такую штуку...


procedure MyProc;
var LArr : Array of MyType;
begin
DoSomething(LArr);
end;

...

procedure DoSomething(var LArr : Array of MyType);
var k : integer;
begin
...
SetLength(LArr,k);
...
end;


Ругается говорить несовместимые типы.... Если массив вынести в глобальные переменные, то все работает.


 
Виктор Щербаков   (2002-03-14 10:31) [3]

Типы действительно не совместимые, ты путаешь динамические и открытые массивы. Я ведь не зря пример привел.


 
Turalyon   (2002-03-14 10:43) [4]

Просвети пожалуйста Виктор, а в чем разница? Я так понял, что нельзя изменять размер переменных передаваемых в процедуры?


 
Виктор Щербаков   (2002-03-14 10:46) [5]

Правильно будет так:

type TLArr: Array of MyType;

procedure MyProc;
var LArr : TLArr
begin
DoSomething(LArr);
end;

...

procedure DoSomething(LArr: TLAarr);
var k : integer;
begin
...
SetLength(LArr,k);
...
end;


 
Alx2   (2002-03-14 10:50) [6]

Открытый массив в параметрах, значит, грубо говоря, статический (хотя и не известна заранее его размерность).


 
lipskiy   (2002-03-14 14:37) [7]

Случалось вроде, что (по типу)
procedure DoSomething(LArr: TLAarr);
проходит, а вот
procedure DoSomething(var LArr: TLAarr);
не проходит :(


 
lipskiy   (2002-03-14 23:38) [8]

Я не прав?



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

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

Наверх





Память: 0.45 MB
Время: 0.008 c
14-91066
lel (A)
2002-02-14 12:11
2002.03.28
Поздравляю всех с днем влюбленных!!!!!!!!


3-90759
TOLTEC
2002-03-01 17:44
2002.03.28
номер записи


1-90875
-=Keith Flint=-
2002-03-17 14:52
2002.03.28
Люди добрые, спасите!


1-90902
tovSuhov
2002-03-18 12:35
2002.03.28
ParamStr...


3-90726
Vasyl Bykov
2002-02-28 12:18
2002.03.28
MS Access





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский