Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Что я делаю не так?


Страницы:   1 2

AZIZE ©   (2007-08-13 14:02:00) 

Есть структура
rcSv=class
   intPerson1:Integer;//Вершина1
   intPerson2:Integer;//Вершина2
   intTypeSv:Integer;//враг(-1), друг(1), неизвестно(0)
   rlMoshnost:Real;//мощность связи
   rlVeroyatnost:Real;//достоверность информации
   rlVes:Real;//вес ребра
   Procedure CopyEL(EL:rcSv);//присвоение элемента
   Function Sravnenie(EL:rcSV):Boolean;//полное сравнение двух элементов (Для поиска)
   Function SravnDublicate(EL:rcSv):Boolean;//сравнение для выявления множественных связей (для удаления дубликатов)
   Procedure DATA(P1,P2,TS:Integer;M,V:Real);
 end;
 arSv=array of rcSv;
где-то далее обьявленно
Var
А:arSv;
и при
SetLength(А,N);
Выдаёт ошибку
Project MDIAPP.exe raised exeption class EAccessViolation with message 'Access violation at address 00406610 in module 'MDIAPP.exe'. Read of address 00000004'
помогите разобраться в ошибке


DVM   (2007-08-13 14:36:00) [21]

специально проверил на BDS2006 - все работает. Равно ка и на D7


AZIZE   (2007-08-13 14:35:00) [22]


> Reindeer Moss Eater ©   (13.08.07 14:30) [16]

MDI тут абсолютно не причём, там просто есть ещё один класс в котором данный массив является одним из элементов, и под него необходимо резервировать память


DVM   (2007-08-13 14:34:00) [23]


> но на D2006 код не пашет

скопируй это в новый проект и удивись!


unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;

type

 rcSv=class
   intPerson1:Integer;//Âåðøèíà1
   intPerson2:Integer;//Âåðøèíà2
   intTypeSv:Integer;//âðàã(-1), äðóã(1), íåèçâåñòíî(0)
   rlMoshnost:Real;//ìîùíîñòü ñâÿçè
   rlVeroyatnost:Real;//äîñòîâåðíîñòü èíôîðìàöèè
   rlVes:Real;//âåñ ðåáðà
   Procedure CopyEL(EL:rcSv);//ïðèñâîåíèå ýëåìåíòà
   Function Sravnenie(EL:rcSV):Boolean;//ïîëíîå ñðàâíåíèå äâóõ ýëåìåíòîâ (Äëÿ ïîèñêà)
   Function SravnDublicate(EL:rcSv):Boolean;//ñðàâíåíèå äëÿ âûÿâëåíèÿ ìíîæåñòâåííûõ ñâÿçåé (äëÿ óäàëåíèÿ äóáëèêàòîâ)
   Procedure DATA(P1,P2,TS:Integer;M,V:Real);
 end;
 arSv=array of rcSv;

 TForm1 = class(TForm)
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;
 a: arSv;

implementation

{$R *.dfm}

Procedure rcSv.CopyEL(EL:rcSv);//ïðèñâîåíèå ýëåìåíòà
begin

end;

Function rcSv.Sravnenie(EL:rcSV):Boolean;//ïîëíîå ñðàâíåíèå äâóõ ýëåìåíòîâ (Äëÿ ïîèñêà)
begin

end;

Function rcSv.SravnDublicate(EL:rcSv):Boolean;//ñðàâíåíèå äëÿ âûÿâëåíèÿ ìíîæåñòâåííûõ ñâÿçåé (äëÿ óäàëåíèÿ äóáëèêàòîâ)
begin

end;

Procedure rcSv.DATA(P1,P2,TS:Integer;M,V:Real);
begin

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 SetLength(a, 100);
end;

end.


AZIZE   (2007-08-13 14:32:00) [24]


> 2) То, что запостили сюда работать не будет в принципе,
> потому что А:arSv;
> написано очевидно русскими буквами.

тут может и русскими т.к. в проге немного подругому а приводить 700 строк кода не вижу смысла
но на D2006 код не пашет


Reindeer Moss Eater   (2007-08-13 14:30:00) [25]

Да у него банальный косяк с неумением работать с MDI чайлдами.
Даю 90 % вероятности что это так.


DVM   (2007-08-13 14:29:00) [26]


> в каком?

В ДНК.

1) У меня этот код работает.
2) То, что запостили сюда работать не будет в принципе, потому что А:arSv;
написано очевидно русскими буквами.


Reindeer Moss Eater   (2007-08-13 14:29:00) [27]

Создай новое пустое приложение, повтори декларацию массива и вызови свой сетленс. И удивись.


Reindeer Moss Eater   (2007-08-13 14:23:00) [28]

Ты тупой что ли?
В ДРУГОМ.

Открой справку и посмотри может ли setlength вызвать AV.


AZIZE   (2007-08-13 14:22:00) [29]


> еще раз: ошибка в другом месте.

в каком?


Reindeer Moss Eater   (2007-08-13 14:21:00) [30]

еще раз: ошибка в другом месте.


AZIZE   (2007-08-13 14:15:00) [31]


> Смех без причины признак дурачины

ответы "лишь бы что-то написать" признак идиотизма


Reindeer Moss Eater   (2007-08-13 14:14:00) [32]

Смех без причины признак дурачины


AZIZE   (2007-08-13 14:13:00) [33]


> Это оптический обман.

очень смешно


Reindeer Moss Eater   (2007-08-13 14:13:00) [34]

Где?
Сказано же в другом!

при  пошаговом выполнении вылетает именно в этом месте
Это оптический обман.


AZIZE   (2007-08-13 14:12:00) [35]


> Ошибка в другом месте. Не на SetLength

Где? при  пошаговом выполнении вылетает именно в этом месте


AZIZE   (2007-08-13 14:11:00) [36]


> А создавать эти элементы массива кто будет?

в смысле?
я пытаюсь выделить память под массив а элементы создавать буду позже


Reindeer Moss Eater   (2007-08-13 14:10:00) [37]

и при
SetLength(А,N);
Выдаёт ошибку


Ошибка в другом месте. Не на SetLength


AZIZE   (2007-08-13 14:09:00) [38]


> это че за объявление?

обьявление динамического массива


Вася Правильный   (2007-08-13 14:08:00) [39]


> arSv=array of rcSv;

это че за объявление?


Elen   (2007-08-13 14:06:00) [40]

А создавать эти элементы массива кто будет?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо