![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
Помогите ответить на вопрос!
Как передать кол-во элементов массива в процессе работы программы. динамический массив в данном случае, как я считаю, не подойдет, так как массив используется в записи, и считка данных в запись происходит по размеру записи, и если сделать массив динамическим, то размер записи будет не правильным - 4 б Последний раз редактировалось Tonyy, 18.10.2010 в 05:12. |
|
#2
|
||||
|
||||
|
А теперь еще раз и подробненько, откуда 4кб взялись, какая запись и т.д. Телепатов нема.
|
|
#3
|
|||
|
|||
|
Извини страдалец не кило а просто 4 байта.
ситуация примерно такая: Код:
procedure TForm1.Button1Click(Sender: TObject); type TData = record diskret: array of single; end; var Data:TData; begin Setlength(data.diskret,1000); edit1.Text:=inttostr(sizeof(data)); end; по идее я объявляю переменную, через 4 байтный формат, затем передаю кол-во элементов 1000, ожидаю что моя переменная будет размером 4000байт (так оно и было бы если бы я описал статичный массив), но она всего 4. какие есть еще способы или хитрости передать кол-во элементов массива в ходе выполнения процедуры? может вместе с установкой кол-ва элементов динамического массива можно как то и объем памяти задавать? Последний раз редактировалось Tonyy, 18.10.2010 в 15:17. |
|
#4
|
||||
|
||||
|
Код:
procedure bla(var dynarr: array of Single);
var
i: Integer;
begin
for i:=0 to Length(dynarr)-1 do
dynarr[i]:=Random(100);
end;
procedure TForm1.FormCreate(Sender: TObject);
var
i: Integer;
begin
SetLength(diskret, 100);
bla(diskret);
for i:=0 to Length(diskret)-1 do
Memo1.Lines.Add(FloatToStr(diskret[i]));
end; |
|
#5
|
|||
|
|||
|
в моем случае это не работает. все равно размер записи остается 4 байта.
|
|
#6
|
||||
|
||||
|
Код:
type
TData = record
dynarr: array of Integer;
end;
var
Data: TData;
begin
SetLength(Data.dynarr, 1000);
Caption:=IntToStr(SizeOf(Data.dynarr)*Length(Data.dynarr));
end; |