ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
Массив записей (проблема с доступом) [Delphi] |

29.03.2010, 20:22
|
|
Познающий
Регистрация: 17.07.2009
Сообщений: 47
Провел на форуме: 131272
Репутация:
4
|
|
Массив записей (проблема с доступом) [Delphi]
Вот собственно суть проблемы есть несколько типов:
Код:
//тип 1
type
TTMyType1 = Record
isLinked: SmallInt;
ToT: string;
ToC: Integer;
end;
//тип 2
type
PMyType2 = ^TMyType2;
TMyType2 = record
CNa: string;
CTy: SmallInt;
isa: SmallInt;
Sa: TTMyType1;
end;
//тип 3
type
PMyType3 = ^TMyType3;
TMyType3 = record
ExName: string;
ExParam: array [0..100] of PMyType2;
end;
Вот... далее создаём глобальную переменную типа массив PMyType3, и пытаемся поюзать...
var
qwerty: array [0..10] of PMyType3; //создали массив записей типа PMyType3
и далее где угодно в программе пытаемся поюзать
qwerty[i].ExName:= 'текст_значения';
и так далее, но вот трабл, при таком обращении программка говорит Access violaton бла бла бла, в общем на сколько я понял, объект вроде как есть, но память под него не выделена, хотя он не динамичен, то есть размеры объявлены заранее...
варианты решения проблемы?
заранее спс...
|
|
|

29.03.2010, 22:39
|
|
Постоянный
Регистрация: 13.12.2008
Сообщений: 354
Провел на форуме: 1747641
Репутация:
175
|
|
Нужно выделять память с помощью процедуры New, и освобождать с помощью Dispose.
То есть:
Код:
var
test: PMyType3;
begin
New(test);
test.ExName:= 'текст_значения';
...
Dispose(test);
end;
По моему так должно быть, хотя точно не уверен.
|
|
|

30.03.2010, 00:32
|
|
Новичок
Регистрация: 08.01.2007
Сообщений: 25
Провел на форуме: 25858
Репутация:
5
|
|
Chrome~
Неправильно подсказываешь! Память у него уже выделена.
mr. ZetRikS
проблема в том что ты создаешь массив из указателей на указатели. и пытаешься к нему обратится на прямую.
вот так объяви массив
Код:
qwerty: array [0..10] of TMyType3;
и будет все гуд
ЗЫ Пользуйтесь отладчиками
Последний раз редактировалось maestro-ant; 30.03.2010 в 00:35..
|
|
|

30.03.2010, 01:05
|
|
Постоянный
Регистрация: 13.12.2008
Сообщений: 354
Провел на форуме: 1747641
Репутация:
175
|
|
Да нет же, maestro-ant, это ты не умеешь правильно работать с динамической памятью.
Посмотри, как правильно должно быть реализовано в данном случае:
http://slil.ru/28877453
http://rapidshare.com/files/369686671/Test.rar.html
|
|
|

30.03.2010, 01:40
|
|
Познающий
Регистрация: 17.07.2009
Сообщений: 47
Провел на форуме: 131272
Репутация:
4
|
|
Так и есть, вопрос исчерпан...
правд ещё косяк был, пришлось в типе 3 вместо PMyType2 использовать так же тип, а не указатель на него...
Всегда так работал (за пять лет таких проблем не случалось), а тут подсказали мол лучше использовать указатели на тип... Для чего особо не понял, но вот собственно и парился пару дней, кстати с типом пробовал, но так как в типе 3 есть переменная ууказателя на тип, вот тут косяк и не увидел, только сейчас когда подсказали узрел...
Спасибо что уделили время моей проблеме... поставил + обим...
|
|
|
|
 |
Похожие темы
|
| Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
|
[Delphi] Проблема с символом "&" в post-запросе
|
frxmaster |
С/С++, C#, Delphi, .NET, Asm |
8 |
29.01.2010 03:39 |
|
[delphi] Проблема компиляции
|
R1der23 |
С/С++, C#, Delphi, .NET, Asm |
10 |
20.12.2009 22:24 |
|
Проблема с отображением записей реестра
|
_nic |
С/С++, C#, Delphi, .NET, Asm |
3 |
31.03.2009 02:02 |
|
Ошибки Windows
|
dinar_007 |
Windows |
19 |
01.07.2007 13:32 |
|
Проблема с доступом в закрытый форума Ipb 2.0.3, имея хеш администратора
|
S1nt3z |
Форумы |
17 |
05.06.2005 17:18 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|