Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 16.09.2008, 14:30
Ama Ama вне форума
Активный
 
Регистрация: 15.07.2008
Сообщения: 260
Репутация: 23
По умолчанию Динамический массив

Я объявил в модуле тип: type dArrRe = array of real;
В процедуре я использую переменную этого типа, и когда я хочу узнать размер массива: i:= High(Arr) или i:= Length(Arr) - 1 , у меня происходит ошибка:
Project Project1.exe raised exception class EAccessViolation with message 'Access violation at address 004A2F44 in module 'Project1.exe'. Read of address 00C98854'. Process stopped. Use Step or Run to continue.

Почему? Может я чтото не тк делаю?
Ответить с цитированием
  #2  
Старый 16.09.2008, 16:10
Drozh Drozh вне форума
Активный
 
Регистрация: 12.06.2008
Сообщения: 313
Репутация: 40
По умолчанию

Ты объявил динамический массив! Но длину его не задал. Юзай функцию
Код:
1
SetLingth(Arr, длина)
Ответить с цитированием
  #3  
Старый 16.09.2008, 16:30
Ama Ama вне форума
Активный
 
Регистрация: 15.07.2008
Сообщения: 260
Репутация: 23
По умолчанию

Дело в том что эту переменную я передал процедуре в качестве параметра, а длина массива у меня была определена до вызова процедуры
Ответить с цитированием
  #4  
Старый 17.09.2008, 00:07
Drozh Drozh вне форума
Активный
 
Регистрация: 12.06.2008
Сообщения: 313
Репутация: 40
По умолчанию

Вот такая конструкция работает превосходно
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<b>type</b>
 dArrRe = Array of Real;
 
<b>procedure</b> Proc(Arr: dArrRe);
<b>var</b>
 i: Integer;
 S: <b>String</b>;
<b>begin</b>
 S := '';
 
  <b>for</b> i := 0 <b>to</b> Length(Arr)-1 <b>do</b>
   S := S + FloatToStr(Arr[i]);
 Form1.Edit1.Text := S
<b>end</b>;
 
<b>procedure</b> TForm1.Button1Click(Sender: TObject);
<b>var</b>
 Arr: dArrRe;
 I: Integer;
<b>begin</b>
 SetLength(Arr, 5);
 
   <b>for</b> i := 0 <b>to</b> 4 <b>do</b>
    Arr[i] := i+1;
 
 Proc(Arr);
<b>end</b>;
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 21:56.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025