Главная страница
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.5 MB
Время: 0.041 c
15-1144250298
ArtSin
2006-04-05 19:18
2006.04.23
Delphi 2006


2-1144408170
Farpik
2006-04-07 15:09
2006.04.23
Не знаю как тему назвать!


15-1144222044
Lucefer
2006-04-05 11:27
2006.04.23
Нужен криптографический алгоритм с откр. ключем


9-1128528469
747
2005-10-05 20:07
2006.04.23
Текстовый квест - нужна помощь.


1-1142710002
Volf_555
2006-03-18 22:26
2006.04.23
Как скопировать текст в буффер обмена с минималь. размером файла?