Форум: "Начинающим";
Текущий архив: 2006.04.23;
Скачать: [xml.tar.bz2];
ВнизТребуется создать динамический двумерный массив real Найти похожие ветки
← →
kay © (2006-04-07 16:18) [0]Есть таблица TStringGrid со значениями в текстовом виде
Нужно создать такого же размера массив, чтобы он хранил эти же значения в REAl.
битый час бьюсь с TList, но ничего не получается. прошу помощи.
← →
kay © (2006-04-07 16:23) [1]нужно, чтобы обращение к нему было вроде
CellList.Items[ACol,ARow]:=2.43;
← →
MBo © (2006-04-07 16:23) [2]array of array of Double
← →
kay © (2006-04-07 16:25) [3]это не подойдёт, так как постоянно память выделять надо...
желательно в классе всё устроить.
← →
Desdechado © (2006-04-07 16:28) [4]а обращаться к сетке с преобразованием типа религия не позволяет? так же как и "постоянно память выделять"...
← →
kay © (2006-04-07 16:30) [5]не знаю, религия или нет, но задумал всё сделать с помощью класса TList, вот и решил помощи просить. Может кто делал уже.
← →
kay © (2006-04-07 16:40) [6]Сначала заполняю массив так:
temp:array[0..10] of real;
for i:=0 to ColCount-1 do
CellList.Add(@temp);
а для обращения вроде бы так нужно делать, но не работает:(CellList.Items[ACol]^)[ARow]:=2.234;
← →
MBo © (2006-04-07 16:52) [7]1. Нужно использовать приведение типа к указателю на массив
2. Не раскрыта темы выделения памяти под temp(каждый раз новая?)
← →
kay © (2006-04-07 16:57) [8]
> 1. Нужно использовать приведение типа к указателю на массив
это как? не совсем понял.
> 2. Не раскрыта темы выделения памяти под temp(каждый раз
> новая?)
я temp использую как шаблон.
короче говоря я в дельфи не совсем понимаю как работать с указателями, раньше писал на Си, там проще.
в итоге хочу добиться, чтобы класс был точно такой же как и TStringsGrid, только вместо строк содержал тип real или extended.
← →
kay © (2006-04-07 17:23) [9]неужели никто не знает как это реализовать?
← →
kay © (2006-04-07 17:53) [10]ладно, если использовать SetLength
то по завершению программы надо как-то массив очищать?
← →
Amoeba © (2006-04-07 18:07) [11]Используй DrawGrid + 2-мерный динамический массив.
У DrawGrid установи в Options goEditing
Задай обработчики событий OnDrawCell, OnGetEditText, OnSetEditText, можно и OnGetEditMask
Я лично использую DrawGrid в аналогичной ситуации.
← →
kay © (2006-04-07 18:18) [12]я сделал так:
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;
← →
balepa © (2006-04-08 09:06) [13]
> 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.
Вроде не надо.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.04.23;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.01 c