Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.04.23;
Скачать: CL | DM;

Вниз

Требуется создать динамический двумерный массив 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.057 c
2-1144270250
EvgFobos
2006-04-06 00:50
2006.04.23
Из RichEdit в файл


15-1144123122
Anatolik_
2006-04-04 07:58
2006.04.23
Доброго времени суток, Уважаемые! есть ключ реестра LicenseInfo


3-1141203381
Alex_d
2006-03-01 11:56
2006.04.23
IAppServer


3-1141048241
Supklo
2006-02-27 16:50
2006.04.23
Как подключиться к Transbase


2-1144655319
Der Nechk@ssoff
2006-04-10 11:48
2006.04.23
Перенос файлов