Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для мобильных телефонов > MidletPascal > Библиотеки

Ответ
 
Опции темы
Старый 28.08.2008, 08:48   #1
odd
Мастер
 
Аватар для odd
 
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений
(для 713 пользователей)
Подмигивание Lib_array2d - Динамический двухмерный массив

По просьбе vitalik1

Библиотека для создания динамических массивов чисел (integer)

Перечень функций:

integer Dim(x: integer; y: integer) - Создать двухмерный массив чисел с размерами X x Y
Функция возвращает 0 если операция прошла успешно или -1 если нет (например, не хватает свободной памяти).
Если x и y равны 0 память очищается (с вызовом Сборщика Мусора).
Если надо сделать одномерный массив, вызывайте, например, так: Dim(1, 100);

integer GetInt(x: integer; y: integer) - Прочитать число из массива из ячейки с адресом (x, y).

PutInt(x: integer; y: integer; val: integer) - Записать число val в массив в ячейку с адресом (x, y).

FillInt(val: integer) - Заполнить весь ваш массив числом val.

Пример программки с использованием библиотеки:

Program arrays_demo;
Uses array2d;
Var  
ijinteger;
Begin
 
 i
:=Dim(67); // Создаем массив
 
 
PutInt(229); // Записываем число 9 для примера 
 
 
for i:=0 to 5 do
 for 
j:=0 to 6 do
 
DrawText(''+GetInt(ij), i*15 15j*15); 
 
RepaintDelay(5000);
 
 
i:=Dim(00); // Очистка памяти
End
Вложения
Тип файла: zip Lib_array2d.zip (1.1 Кб, 941 просмотров)
(Offline)
 
Ответить с цитированием
Эти 5 пользователя(ей) сказали Спасибо odd за это полезное сообщение:
antonio (27.09.2008), Bruteo (10.11.2009), Kalter (16.01.2014), Romanzes (28.08.2008), vitalik1 (29.08.2008)
Старый 28.08.2008, 17:11   #2
beisik
Нуждающийся
 
Аватар для beisik
 
Регистрация: 23.04.2008
Адрес: Брест, Беларусь
Сообщений: 53
Написано 10 полезных сообщений
(для 18 пользователей)
Ответ: Lib_array2d - Динамический двухмерный массив

хм, а в чем динамичность-то? Можно ли делать вот так:
i := Dim(6, 7);
PutInt(2, 2, 9);
Dim(6, 8);
и потом вызвав GetInt(2, 2) мы получим 9?
__________________
diary
(Offline)
 
Ответить с цитированием
Старый 28.08.2008, 20:12   #3
Romanzes
Разработчик
 
Аватар для Romanzes
 
Регистрация: 06.04.2008
Сообщений: 541
Написано 196 полезных сообщений
(для 637 пользователей)
Ответ: Lib_array2d - Динамический двухмерный массив

Клево. Теперь я смогу портировать на тел одну прогу, которую когда-то писал на дельфи.
(Offline)
 
Ответить с цитированием
Старый 28.08.2008, 23:05   #4
Piligrim
Оптимист
 
Регистрация: 07.01.2006
Сообщений: 961
Написано 105 полезных сообщений
(для 259 пользователей)
Ответ: Lib_array2d - Динамический двухмерный массив

Сообщение от beisik Посмотреть сообщение
хм, а в чем динамичность-то? Можно ли делать вот так:
i := Dim(6, 7);
PutInt(2, 2, 9);
Dim(6, 8);
и потом вызвав GetInt(2, 2) мы получим 9?
Это ты загнул. Такого даже в яве нет. При изменении размера массива он создается снова, это надо времянку делать и копировать
(Offline)
 
Ответить с цитированием
Старый 29.08.2008, 00:38   #5
Phantom
Элита
 
Аватар для Phantom
 
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений
(для 1,833 пользователей)
Ответ: Lib_array2d - Динамический двухмерный массив

У меня вопрос. Почему во многих языках программирования нет динамических массивов. Типа это как бы позволяет интерпретатору (ну или платформе, на которой программа потом будет выполняться) память лучше распределить? Типа сразу известно, сколько памяти выделять под выполнение программы? Но ведь есть куча других способов загрузить память до предела. Вот взяли и отобрали у разработчиков такую удобную вещь =(
(Offline)
 
Ответить с цитированием
Старый 29.08.2008, 08:04   #6
odd
Мастер
 
Аватар для odd
 
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений
(для 713 пользователей)
Ответ: Lib_array2d - Динамический двухмерный массив

Сообщение от Phantom_wc Посмотреть сообщение
У меня вопрос. Почему во многих языках программирования нет динамических массивов. Типа это как бы позволяет интерпретатору (ну или платформе, на которой программа потом будет выполняться) память лучше распределить? Типа сразу известно, сколько памяти выделять под выполнение программы? Но ведь есть куча других способов загрузить память до предела. Вот взяли и отобрали у разработчиков такую удобную вещь =(
Как раз наоборот. Во всех современных языках типа Java, С# можно объявлять переменную в любом месте кода, это только в MP остался такой пережиток. Там же всё очень просто и удобно. Захотел - объявил массив, что-то там с ним сделал, взял и удалил его. Особенно круто дела на C# обстоят. Там есть очень много классов-коллекций на все случаи жизни и практически всё что тебе нужно уже реализовано. По-этому даже на такие достаточно сложные действия как синхронизация данных с SQL сервером или скажем запись/чтение данных в файл реализуется 1-2 операторами.
(Offline)
 
Ответить с цитированием
Старый 29.08.2008, 10:13   #7
Piligrim
Оптимист
 
Регистрация: 07.01.2006
Сообщений: 961
Написано 105 полезных сообщений
(для 259 пользователей)
Ответ: Lib_array2d - Динамический двухмерный массив

Ага, и тянет за собой километры стандартных библиотек. А потом программисты понятия не имеют как это все работает и удивляются почему их две строчки с ошибкой.
(Offline)
 
Ответить с цитированием
Старый 29.08.2008, 12:44   #8
vitalik1
Оператор ЭВМ
 
Регистрация: 11.11.2007
Сообщений: 26
Написано 6 полезных сообщений
(для 10 пользователей)
Ответ: Lib_array2d - Динамический двухмерный массив

Спасибо за либу odd.
(Offline)
 
Ответить с цитированием
Старый 29.08.2008, 16:35   #9
tyo2005
AnyKey`щик
 
Регистрация: 16.04.2007
Сообщений: 5
Написано 0 полезных сообщений
(для 0 пользователей)
Подмигивание Re: Lib_array2d - Динамический двухмерный массив

Спасибо автору за библиотеку!
По сути, остался один шаг до появления в Мидлет Паскале работы с динамическими объектами? Типа New, Dispose,Mark и т.п?
Это было бы просто здорово!
(Offline)
 
Ответить с цитированием
Старый 30.08.2008, 10:29   #10
odd
Мастер
 
Аватар для odd
 
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений
(для 713 пользователей)
Ответ: Lib_array2d - Динамический двухмерный массив

Ну это может и появится когда-нибудь. Типа просто библиотека для работы с памятью. Я щас попутно пишу библиотеку по работе с RMS. Чтоб туда можно было без проблем запихивать/извлекать картинки, к примеру, и русский текст особенно желательно.
(Offline)
 
Ответить с цитированием
Старый 12.09.2008, 12:18   #11
_Dmitry
AnyKey`щик
 
Регистрация: 12.09.2008
Сообщений: 1
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Lib_array2d - Динамический двухмерный массив

Спасибо за библиотеку!
А можно тоже самое, только для real
(Offline)
 
Ответить с цитированием
Старый 22.09.2008, 13:02   #12
Cliffe Snake
Нуждающийся
 
Аватар для Cliffe Snake
 
Регистрация: 22.09.2008
Сообщений: 74
Написано 8 полезных сообщений
(для 12 пользователей)
Ответ: Lib_array2d - Динамический двухмерный массив

Круто, спасибо за либу. Odd, а можешь включить в неё другие типы данных (real, string и img)? Тогда ваще отпад будет =))
(Offline)
 
Ответить с цитированием
Старый 22.09.2008, 13:38   #13
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Lib_array2d - Динамический двухмерный массив

Сообщение от odd Посмотреть сообщение
Как раз наоборот. Во всех современных языках типа Java, С# можно объявлять переменную в любом месте кода, это только в MP остался такой пережиток.
Не только в современных! в СИ-библиотеке malloc.h есть очень любопытная функция realloc позволяющая перевыделить память без утери текущих значений (сначала попытка расширить размеры контейнера по указанному даресу, в противном случае - создание нового и копирование в него старых значений). Типа:
a=(int *)realloc(a,sizeof(int)*(max_size+1));
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 22.09.2008, 14:08   #14
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений
(для 9,330 пользователей)
Ответ: Lib_array2d - Динамический двухмерный массив

А в уже немолодом VB6.0 (1998г.) динамические массивы объявлялись так:
Private arData() as Integer
т.е. массив без размерности - динамический.
Однако перед его использованием его надо создать уже с указанием размера:
ReDim arData(100)
Кроме того можно изменить нетолько размер но и тип даных!
ReDim arData(100) As String
Чтобы стереть масив: Erase arData
Чтобы переопределить размер масива и сохранить ранее там расположенные данные (если это возможно): ReDim Preserve arData(150)
Отдельно стоит упомянуть о возможности указания первого индекса массива:
ReDim arData(10 To 100) - массив имеет индексы от 10 до 100 включительно.
Вот такой веслый язык
__________________
(Offline)
 
Ответить с цитированием
Старый 23.09.2008, 06:40   #15
odd
Мастер
 
Аватар для odd
 
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений
(для 713 пользователей)
Ответ: Lib_array2d - Динамический двухмерный массив

В C#, при желании, тоже можно расширять массив, хотя на первый взгляд такого нет.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Lib_bytes - Динамический массив байт odd Библиотеки 9 07.03.2011 19:56
Как сделать динамический массив целых чисел? artemff Основной форум 2 31.12.2009 03:51
двухмерный imag'овый массив demon112 MidletPascal 0 29.06.2009 11:26
Динамический массив - способы реализации! ELIAS Blitz3D 21 07.03.2009 22:21
Безразмерный массив Harter 2D-программирование 4 17.01.2009 01:17


Часовой пояс GMT +4, время: 09:44.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com