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

Вниз

Безразмерные массивы в Pascale   Найти похожие ветки 

 
mod   (2003-06-11 17:41) [0]

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


 
clickmaker   (2003-06-11 17:42) [1]

Dynamic array?
Типа
var A: array of integer;

SetLength(A, 100);


 
Sandman25   (2003-06-11 17:46) [2]

var
Arr: array of integer;
begin
SetLength(Arr, 5);
Arr[4] := 12;
SetLength(Arr, 8);
Arr[5] := 11;
SetLength(Arr, Length(Arr) + 3));
Arr[10] := 9;
end;


 
Anatoly Podgoretsky   (2003-06-11 17:54) [3]

Безразмерные массивы требуют безразмерных ресурсов.
В Дельфи 5+ есть динамические массивы (массивы с неизвестным, неуказанным размером, указывается на этапе использования), но это в Дельфи 5 и выше, а что у тебя и подходят ли тебе динамические массивы?


 
Smithson   (2003-06-11 17:55) [4]

В каком паскале - укажи версию


 
mod   (2003-06-11 17:59) [5]

Необходимо это сделать в Pascale 7.0 есть такой старенький язык


 
Song   (2003-06-11 18:02) [6]

Var Mas: array [0..0] of Integer;


 
mod   (2003-06-11 18:05) [7]

А как изменять размерность?


 
Serginio   (2003-06-11 18:22) [8]

Смотри
Sandman25 © (11.06.03 17:46)
var
Arr: array of integer;
begin
SetLength(Arr, 5); //??????????
Arr[4] := 12;
SetLength(Arr, 8);
Arr[5] := 11;
SetLength(Arr, Length(Arr) + 3)); //??????????
Arr[10] := 9;
end;



 
Song   (2003-06-11 18:24) [9]

GetMem()
Сколько памяти выделишь - вся твоя.


 
mod   (2003-06-11 18:30) [10]

Под размерностью я понемаю кол-во элементов, А как я понял GetMem отводит лишь только память под него.


 
Song   (2003-06-11 18:34) [11]

Ну логично, но если подумать, ты поймёшь, что размер выделенной памяти ты можешь получить простым умножением количества нужных ячеек на размер типа хранимых данных. Потом ты можешь выделить ещё памяти. Хотя тот же SetLength(), только вид сбоку.


 
yaJohn   (2003-06-11 18:36) [12]

Получить размер необходимой памяти по размерности масива можно с помощью операции умножения.


 
DrPass   (2003-06-11 18:57) [13]

Я в свое время делал такие "динамические массивы":
type
x:array[1..20000] of integer (до 64К, не больше!)

var
p:^x;

getmem(p, <сколько нужно>)
Одно только нужно иметь в виду: не использовать индекс массива, который лежит за границами выделенной области, иначе мог быть кирдык.


 
Utwig   (2003-06-11 20:50) [14]

А что, в старом паскале была функция getmem ? Это разве не виндовая ?

Serginio, не знаешь - не советуй


 
Aldor   (2003-06-11 21:20) [15]

2DrPass

var
p: ^x; //??????


 
Palladin   (2003-06-11 21:36) [16]


> Aldor © (11.06.03 21:20)

что впервые видишь этот значек?


 
Anatoly Podgoretsky   (2003-06-11 22:41) [17]

Utwig (11.06.03 20:50)
Не уверен, не обгоняй - это рвзве


 
Chieftain   (2003-06-12 11:08) [18]

2 Utwig
> А что, в старом паскале была функция getmem ? Это разве не виндовая ?

Кажется была. Ну или что-то аналогичное есть обязательно. Только с динамическими переменными немножко уметь работать надо. Чуть что не так сделаешь - будет в лучшем случае утечка ресурсов, а в худшем - кирдык (c) by DrPass



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

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

Наверх





Память: 0.48 MB
Время: 0.034 c
1-84203
NickName
2003-06-12 13:56
2003.06.26
Сброс фокус Memo


1-84305
Ghost
2003-06-13 15:27
2003.06.26
Срочно нужно записать в реестр Бинарный код ! подскажите


7-84776
Andy
2003-04-16 11:47
2003.06.26
Сменить Volume ID


7-84787
Keksis
2003-04-18 01:58
2003.06.26
Мышка


8-84470
handra
2003-03-04 17:08
2003.06.26
коррекция изображения (яркость, контрастность, цвет)





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