![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Требуется создать динамический двумерный массив real [D7, XP]
kay © (2006-04-07 16:18:00)Есть таблица TStringGrid со значениями в текстовом виде
Нужно создать такого же размера массив, чтобы он хранил эти же значения в REAl.
битый час бьюсь с TList, но ничего не получается. прошу помощи.
balepa (2006-04-08 09:06:00) [1]
> kay © (07.04.06 17:53) [10]
>
> ладно, если использовать SetLength
> то по завершению программы надо как-то массив очищать?
Finalize(Array)
F1 + Dynamic arrays
Dynamic arrays are automatically released when their reference-count drops to zero.
Вроде не надо.
kay (2006-04-07 18:18:00) [2]я сделал так:
procedure TFrecoupment.GridKey_Press(Sender: TObject; var Key: Char);
begin
if Key='.' then Key:=',';
if Key in ['0'..'9',#8,#13,','] then
begin
if Key=',' then
if Pos(',',TStringGrid(Sender).Cells[Col,Row])=0 then
Key:=','
else
Key:=#0;
end
else
Key:=#0;
if Key=#13 then
begin
Key:=#0;
//calc();
end;
//eko_form.modified:=true;
end;
procedure TFrecoupment.InvestsGridSetEditText(Sender: TObject; ACol,
ARow: Integer; const Value: String);
begin
encode();
end;
procedure TFrecoupment.encode();
var
i,j:integer;
begin
with InvestsGrid do
begin
for i:=0 to ColCount-1 do
for j:=0 to RowCount-2 do
begin
FloatCells[i,j]:=StrToFloatDef(Cells[i,j+1],0);
end;
end;
end;
Amoeba (2006-04-07 18:07:00) [3]Используй DrawGrid + 2-мерный динамический массив.
У DrawGrid установи в Options goEditing
Задай обработчики событий OnDrawCell, OnGetEditText, OnSetEditText, можно и OnGetEditMask
Я лично использую DrawGrid в аналогичной ситуации.
kay (2006-04-07 17:53:00) [4]ладно, если использовать SetLength
то по завершению программы надо как-то массив очищать?
kay (2006-04-07 17:23:00) [5]неужели никто не знает как это реализовать?
kay (2006-04-07 16:57:00) [6]
> 1. Нужно использовать приведение типа к указателю на массив
это как? не совсем понял.
> 2. Не раскрыта темы выделения памяти под temp(каждый раз
> новая?)
я temp использую как шаблон.
короче говоря я в дельфи не совсем понимаю как работать с указателями, раньше писал на Си, там проще.
в итоге хочу добиться, чтобы класс был точно такой же как и TStringsGrid, только вместо строк содержал тип real или extended.
MBo (2006-04-07 16:52:00) [7]1. Нужно использовать приведение типа к указателю на массив
2. Не раскрыта темы выделения памяти под temp(каждый раз новая?)
kay (2006-04-07 16:40:00) [8]Сначала заполняю массив так:
temp:array[0..10] of real;
for i:=0 to ColCount-1 do
CellList.Add(@temp);
а для обращения вроде бы так нужно делать, но не работает:
(CellList.Items[ACol]^)[ARow]:=2.234;
kay (2006-04-07 16:30:00) [9]не знаю, религия или нет, но задумал всё сделать с помощью класса TList, вот и решил помощи просить. Может кто делал уже.
Desdechado (2006-04-07 16:28:00) [10]а обращаться к сетке с преобразованием типа религия не позволяет? так же как и "постоянно память выделять"...
kay (2006-04-07 16:25:00) [11]это не подойдёт, так как постоянно память выделять надо...
желательно в классе всё устроить.
kay (2006-04-07 16:23:00) [12]нужно, чтобы обращение к нему было вроде
CellList.Items[ACol,ARow]:=2.43;
MBo (2006-04-07 16:23:00) [13]array of array of Double