Советы по Delphi. Версия 1.0.6
Шрифт:
BEGIN {==TDynArray.GetElement==}
if (N < 1) OR (N > fDimension) then raise EDynArrayRangeError.CreateFMT('Индекс вышел за границы диапазона : %d', [N]);
result:= Elements^[N];
END; {==TDynArray.GetElement==}
Procedure TDynArray.SetElement(N: TDynArrayNDX; const NewValue: TDynArrayBaseType);
BEGIN {==TDynArray.SetElement==}
if (N < 1) OR (N > fDimension) then raise EDynArrayRangeError.CreateFMT('Индекс
вышел за границы диапазона : %d', [N]);
Elements^[N]:= NewValue;
END; {==TDynArray.SetElement==}
(*
--
-- методы TDynaMatrix
--
*)
Constructor TDynaMatrix.Create(NumRows: TDynArrayNDX; NumColumns: TMatrixNDX);
Var col : TMatrixNDX;
BEGIN {==TDynaMatrix.Create==}
inherited Create;
fRows:= NumRows;
fColumns:= NumColumns;
{= выделение памяти для массива указателей (т.е. для массива TDynArrays) =}
GetMem(mtxElements, fColumns*sizeof(TDynArray));
fMemAllocated:= fColumns*sizeof(TDynArray);
{= теперь выделяем память для каждого столбца матрицы =}
for col := 1 to fColumns do BEGIN
mtxElements^[col]:= TDynArray.Create(fRows);
inc(fMemAllocated, mtxElements^[col].fMemAllocated);
END;
END; {==TDynaMatrix.Create==}
Destructor TDynaMatrix.Destroy;
Var col : TMatrixNDX;
BEGIN {==TDynaMatrix.Destroy;==}
for col:= fColumns downto 1 do BEGIN
dec(fMemAllocated, mtxElements^[col].fMemAllocated);
mtxElements^[col].Free;
END;
FreeMem(mtxElements, fMemAllocated);
inherited Destroy;
END; {==TDynaMatrix.Destroy;==}
Function TDynaMatrix.GetElement(row: TDynArrayNDX; column: TMatrixNDX): TDynArrayBaseType;
BEGIN {==TDynaMatrix.GetElement==}
if (row < 1) OR (row > fRows) then raise EDynArrayRangeError.CreateFMT('Индекс строки вышел за границы диапазона : %d', [row]);
if (column < 1) OR (column > fColumns) then raise EDynArrayRangeError.CreateFMT('Индекс столбца вышел за границы диапазона : %d', [column]);
result:= mtxElements^[column].Elements^[row];
END; {==TDynaMatrix.GetElement==}
Procedure TDynaMatrix.SetElement(row: TDynArrayNDX; column: TMatrixNDX; const NewValue: TDynArrayBaseType);
BEGIN {==TDynaMatrix.SetElement==}
if (row < 1) OR (row > fRows) then raise EDynArrayRangeError.CreateFMT('Индекс
строки вышел за границы диапазона : %d', [row]);
if (column < 1) OR (column > fColumns) then raise EDynArrayRangeError.CreateFMT('Индекс столбца вышел за границы диапазона : %d', [column]);
mtxElements^[column].Elements^[row]:= NewValue;
END; {==TDynaMatrix.SetElement==}
END.
– Тестовая программа для модуля DynArray-
uses DynArray, WinCRT;
Const
NumRows: integer = 7;
NumCols: integer = 5;
Var
M: TDynaMatrix;
row, col: integer;
BEGIN
M:= TDynaMatrix.Create(NumRows, NumCols);
for row:= 1 to M.Rows do for col:= 1 to M.Columns do M[row, col]:= row + col/10;
writeln('Матрица');
for row:= 1 to M.Rows do BEGIN
for col:= 1 to M.Columns do write(M[row, col]:5:1);
writeln;
END;
writeln;
writeln('Перемещение');
for col:= 1 to M.Columns do BEGIN
for row:= 1 to M.Rows do write(M[row, col]:5:1);
writeln;
END;
M.Free;
END.
Базы данных
Создание
Создание db-файла во время работы приложения
uses DB, DBTables, StdCtrls;
procedure TForm1.Button1Click(Sender: TObject);
var
tSource, TDest: TTable;
begin
TSource:= TTable.create(self);
with tsTSource do begin
DatabaseName:= 'dbdemos';
TableName:= 'customer.db';
open;
end;
TDest:= TTable.create(self);
with TDest do begin
DatabaseName:= 'dbdemos';
TableName:= 'MyNewTbl.db';
FieldDefs.Assign(TSource.FieldDefs);
Поделиться:
Популярные книги
Черный маг императора 3
3. Черный маг императора
Фантастика:
попаданцы
аниме
5.00
рейтинг книги
Повелитель механического легиона. Том VIII
8. Повелитель механического легиона
Фантастика:
технофэнтези
аниме
фэнтези
5.00
рейтинг книги
Пипец Котенку! 3
3. РОС: Пипец Котенку!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Разбуди меня
7. Серьёзные мальчики в форме
Любовные романы:
современные любовные романы
остросюжетные любовные романы
5.00
рейтинг книги
Боги, пиво и дурак. Том 6
6. Боги, пиво и дурак
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Болотник 2
2. Болотник
Фантастика:
попаданцы
альтернативная история
6.25
рейтинг книги
Ты всё ещё моя
4. Под запретом
Любовные романы:
современные любовные романы
7.00
рейтинг книги
S-T-I-K-S. Пройти через туман
Вселенная S-T-I-K-S
Фантастика:
боевая фантастика
7.00
рейтинг книги
Имя нам Легион. Том 4
4. Меж двух миров
Фантастика:
боевая фантастика
рпг
аниме
5.00
рейтинг книги
Сводный гад
2. Самбисты
Любовные романы:
современные любовные романы
эро литература
5.00
рейтинг книги
Я князь. Книга XVIII
18. Дорогой барон!
Фантастика:
юмористическое фэнтези
попаданцы
аниме
5.00
рейтинг книги
Королевская Академия Магии. Неестественный Отбор
Любовные романы:
любовно-фантастические романы
8.22
рейтинг книги
Последняя Арена 6
6. Последняя Арена
Фантастика:
рпг
постапокалипсис
5.00
рейтинг книги
Жребий некроманта. Надежда рода
1. Жребий некроманта
Фантастика:
фэнтези
попаданцы
6.50