![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Что я делаю не так?
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]А создавать эти элементы массива кто будет?