Работа с массивами
Вот несколько функций для операций с двухмерными массивами. Самый простой путь для создания собственной библиотеки. Процедуры SetV и GetV позволяют читать и сохранять элементы массива VArray (его Вы можете объявить как угодно). Например:
- Подробности
- Родительская категория: Язык программирования Дельфи
- Категория: Работа с массивами
Возможно ли создание массива компонентов? Для показа статуса я использую набор LED-компонентов и хотел бы иметь к ним доступ, используя массив.
Прежде всего необходимо объявить массив:
- Подробности
- Родительская категория: Язык программирования Дельфи
- Категория: Работа с массивами
Code: |
function Among(N: Integer; const Values: arrayof Integer): LongBool; asm push ebx xor ebx, ebx @@10: test ecx, ecx jl @@30 cmp eax, [edx] jne @@20 not ebx jmp @@30 @@20: add edx, 4 dec ecx jmp @@10 @@30: mov eax, ebx pop ebx end; Пример использования:
Among(N, [1, 2, 3, 4, 5])
|
- Подробности
- Родительская категория: Язык программирования Дельфи
- Категория: Работа с массивами
MaxIntValue Возвращает наибольшее значение целочисленного массива.
MaxValue Возвращает наибольшее значение числового массива.
Mean Вычисляет среднее арифметическое всех значений массива.
MeanAndStdDev Вычисляет среднее арифметическое всех значений массива, и среднее отклонение.
MinIntValue Возвращает наименьшее значение целочисленного массива.
MinValue Возвращает наименьшее значение числового массива.
MomentSkewKurtosis Вычисляет среднее значение, дисперсию, отклонение и периодичность.
Norm Возвращает Евклидову норму для всех значений массива.
PopnStdDev Вычисляет среднеквадратичное отклонение для совокупности данных.
PopnVariance Вычисляет дисперсию совокупности данных.
StdDev Вычисляет стандартное среднеквадратичное отклонение элементов массива.
Sum Вычисляет сумму значений всех элементов числового массива.
SumInt Вычисляет сумму значений всех элементов целочисленного массива.
SumOfSquares Вычисляет сумму квадратов всех элементов числового массива.
SumsAndSquares Возвращает сумму элементов и сумму квадратов всех элементов числового массива.
TotalVariance Вычисляет статистическую дисперсию.
Variance Вычисляет типовую дисперсию всех значений массива.
- Подробности
- Родительская категория: Язык программирования Дельфи
- Категория: Работа с массивами
Распределите память кучи с помощью GetMem. Если вы имеете:
Code: |
var a, b: array[0..30000]: Integer; |
то попробуйте:
Code: |
type TBigArray = array[0..30000] of Integer; var a, b: ^TBigArray; |
и во внешнем блоке сделайте:
Code: |
GetMem(a, SizeOf(TBigArray)); GetMem(b, SizeOf(TBigArray)); |
- Подробности
- Родительская категория: Язык программирования Дельфи
- Категория: Работа с массивами
Задачу поиска минимального элемента массива рассмотрим на примере массива целых чисел.
Алгоритм поиска минимального (максимального) элемента массива довольно очевиден: сначала делается предположение, что первый элемент массива является минимальным (максимальным), затем остальные элементы массива последовательно сравниваются с этим элементом. Если во время очередной проверки обнаруживается, что проверяемый элемент меньше (больше) принятого за минимальный (максимальный), то этот элемент становится минимальным (максимальным) и продолжается проверка оставшихся элементов.
- Подробности
- Родительская категория: Язык программирования Дельфи
- Категория: Работа с массивами
Code: |
type T2DBooleanArray = arrayofarrayof Boolean;
procedure Save2DBooleanArray(const A: T2DBooleanArray; S: TStream); var writer: TWriter; i: Integer; begin |
- Подробности
- Родительская категория: Язык программирования Дельфи
- Категория: Работа с массивами
"Array of const" это массив переменных, декларированных как константы. Непосредственно они представлены структурой TVarRec. Скобки просто ограничивают массив. Массив констант дает вам возможность передавать процедуре переменное количество параметров type-safe (безопасным) способом. Вот пример:
- Подробности
- Родительская категория: Язык программирования Дельфи
- Категория: Работа с массивами
Я решил проблему записи массива TBitmap в файл и его повторного чтения.
Идея заключается в загрузке каждого TBitmap во временный TMemoryStream. Член TMemoryStream.Size информирует о размере данных, которые нужно сохранить на диске. Затем мы пишем размер и сопровождаем его данными типа TFileStream. Эту манипуляцию мы проделываем для каждого TBitmap в массиве.
Для процедуры чтения сначала мы должны считать из потока размер данных TBitmap. Затем мы распределяем область для типа TMemoryStream полученного размера и считываем данные. Затем переписываем из TFileStream в TMemoryStream. И, наконец, мы читает из TMemoryStream сам TBitmap. Эту манипуляцию мы проделываем для каждого TBitmap в массиве.
Ниже я привел код, который я реально использовал. Код из игры Bingo, которую я разрабатываю, имеет сетку 5x5, чьи ячейки содержат изображение.
- Подробности
- Родительская категория: Язык программирования Дельфи
- Категория: Работа с массивами
Очень простой пример...
Code: |
const MaxBooleans = (High(Cardinal) - $F) div sizeof(boolean);
type TBoolArray = array[1..MaxBooleans] of boolean; PBoolArray = ^TBoolArray;
var B: PBoolArray; N: integer;
begin N := 63579; {= получение памяти под динамический массив.. =} GetMem(B, N * sizeof(boolean)); {= работа с массивом... =} B^[3477] := FALSE; {= возвращение памяти в кучу =} {$IFDEF VER80} FreeMem(B, N * sizeof(boolean)); {$ELSE} FreeMem(B); {$ENDIF} end. |
- Подробности
- Родительская категория: Язык программирования Дельфи
- Категория: Работа с массивами
Code: |
type TArrayString = arrayofstring;
procedure DeleteArrayIndex(var X: TArrayString; Index: Integer); begin ifIndex > High(X) then Exit; ifIndex < Low(X) then Exit; ifIndex = High(X) then begin SetLength(X, Length(X) - 1); Exit; end; Finalize(X[Index]); System.Move(X[Index +1], X[Index], (Length(X) - Index -1) * SizeOf(string) + 1); SetLength(X, Length(X) - 1); end;
// Example : Delete the second item from array a // Beispiel : Losche das 2. Element vom array a
procedure TForm1.Button2Click(Sender: TObject); var a: TArrayString; begin DeleteArrayIndex(a, 2); end; |
Взято с сайтаhttps://www.swissdelphicenter.ch/en/tipsindex.php
- Подробности
- Родительская категория: Язык программирования Дельфи
- Категория: Работа с массивами
Страница 2 из 2