Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Access violation! 
V
    Опции темы
RemaGe
Дата 14.4.2006, 01:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 14.4.2006

Репутация: нет
Всего: нет



Люди, у меня возникла не5большая проблемма,- данный код вызывает ошибку access violation, но если заменить class на record, то все работает нормально. Может быть кто нибудь знает в чем проблемма?

Код

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);

  end;

TGamer = class
  nam:string[12];
end;

var
  Form1: TForm1;
  PAr:array of TGamer;
implementation

{$R *.dfm}


procedure TForm1.Button1Click(Sender: TObject);
begin
setlength(PAr,10);
PAr[0].nam:='example';
end;

end.


Это сообщение отредактировал(а) Girder - 14.4.2006, 08:32
PM MAIL WWW   Вверх
F1reF0x
Дата 14.4.2006, 01:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 68
Регистрация: 10.10.2005

Репутация: нет
Всего: нет



Код

procedure TForm1.Button1Click(Sender: TObject);
begin
setlength(PAr,10);
PAr[1].nam:='example';
end;


Это сообщение отредактировал(а) Girder - 14.4.2006, 08:32
PM MAIL   Вверх
Vit
Дата 14.4.2006, 06:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 48
Всего: 207



Ага... если вы используете объект то где вы его создаёте?

Вы пытаетесь обратится к объекту PAr[0] класса TGamer- а вы его создали? Пока там пустое место, там ничего нет...


--------------------
With the best wishes, Vit
I have done so much with so little for so long that I am now qualified to do anything with nothing
Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru
PM MAIL WWW ICQ   Вверх
Marlin
Дата 14.4.2006, 07:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 170
Регистрация: 20.2.2006

Репутация: нет
Всего: 1



Зачем ты используешь класс?

Вполне подойдет запись.
--------------------
Программист решает проблемы, о которых пользователь даже не задумывается,способами, о котороых он даже не подозревает.
PM MAIL   Вверх
Matematik
Дата 14.4.2006, 08:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1027
Регистрация: 11.3.2006

Репутация: 17
Всего: 50



1:
Код

setlength(PAr,10);
// Класс НАДО СОЗДАТЬ
PAr[0] := TGamer.Create;
PAr[0].nam:='example';

2:
Код

//  вместо класса исп. запись
type
TGamer = record
nam:string[12];
end;
{...}
setlength(PAr,10);
PAr[0].nam:='example';

3:
Код

var
PAr:array of string[12];
{...}
setlength(PAr,10);
PAr[0]:='example';


PM MAIL WWW ICQ   Вверх
ShadeSt
Дата 14.4.2006, 08:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 256
Регистрация: 9.8.2005
Где: Россия, г. Ставро поль

Репутация: нет
Всего: 7



В приведенном коде действительно нет смысла использовать class, но если очень хочется, то надо бы для начала создать экземпляр класса, а потом удалить его.

Код

Type
  TGame = Class
    Name : String;
  End;
.....


Procedure Chto-to;
Var
  Game : TGame;
Begin
  Game           := TGame.Create;
  Game.Name := 'Test Name';
  .....
  .....

  FreeAndNil(Game);


------------
вот, блин, не успел smile) пока рисовал, меня опередили

Это сообщение отредактировал(а) ShadeSt - 14.4.2006, 08:04


--------------------
It's nice to be importand, but it's more importand to be nice © Scooter
PM MAIL ICQ Jabber   Вверх
RemaGe
Дата 15.4.2006, 03:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 14.4.2006

Репутация: нет
Всего: нет



Спасиб.
Исправлюсь...
P.S. Использовать нужно класс, т.к. я просто лишний код вырезал,- там с record неудобно будет.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0487 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.