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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Access violation для динамич. созданного memo 
:(
    Опции темы
SergV
Дата 21.10.2006, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Помогите разобраться пожалуста, в чём ошибка. Решил сегодня попробовать денамически создавать закладки и на них компанент memo, ну и вносить в них текст. Вот только для первого мемо всё работает, а в остальные не удаётся занести инфу из файлов. Вот кусок кода, где вылетает ошибка:

Код

.............
var
C: TComponent;
begin
  FileName:=FileOpen1.Dialog.FileName;
  (FindComponent('Memo'+inttostr(n)) as TMemo).Lines.LoadFromFile(filename);
.............


Переменная "n" - в ней хранится номер мемо, стока 6-я, на которой вылетает эта ошибка:
Access violation at address xxxx in module 'xxxx', и т.д..

Переменную проверял, всё нормально подставляется, в зависимости от активной закладки. 

Это сообщение отредактировал(а) SergV - 21.10.2006, 17:33
PM   Вверх
Aleksej
Дата 21.10.2006, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Значит такой Memo не создан. проверь есть ли у тебя заранее созданный MemoN
PM MAIL ICQ   Вверх
Matematik
Дата 21.10.2006, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Код

var
C: TComponent;
M: TMemo;
begin
  FileName:=FileOpen1.Dialog.FileName;
  M := TMemo(FindComponent('Memo'+inttostr(n)));
  if M<>nil then M.Lines.LoadFromFile(filename);

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


Новичок



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

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



Matematik, а зачем обьявление C: TComponent;?
твой вариант не вызовет ошибку, но в нужное мемо ничего не напишет...
PM MAIL ICQ   Вверх
Matematik
Дата 21.10.2006, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



"Мой вариант" только проверяет результат вызова FindComponent().

SergV, имя дин. созданной мемке присваиваешь?
PM MAIL WWW ICQ   Вверх
SergV
Дата 21.10.2006, 17:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Aleksej,ну какже не создан, на всех 10 страницах, и могу в них писать и редактировать, да и проверку делал при создании. Когда компанент создаётся, то я сразу в качестве текста в него заношу имя компанента и индекс закладки. 
А 
Код

C: TComponent

я просто забыл снести.

Matematik, спасибо, щас попробую.

Это сообщение отредактировал(а) SergV - 21.10.2006, 17:59
PM   Вверх
Matematik
Дата 21.10.2006, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Цитата(SergV @  21.10.2006,  18:56 Найти цитируемый пост)
Когда компанент создаётся, то я сразу в качестве текста в него заношу имя компанента и индекс закладки.


А имяприсваиваешь?
PM MAIL WWW ICQ   Вверх
SergV
Дата 21.10.2006, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Matematik, не чего не получилось, ошибка не выскакивает, но и файл не загружается.

Вот как я создаю мемо:
Код

procedure TForm1.memocreate;
var
m: TMemo;
begin
................
m := TMemo.Create(Application);
  with m do
    begin
      Parent := Form1.MemoPage.Pages[n];
      m.Name:='memo'+inttostr(n);
...............

PM   Вверх
Matematik
Дата 21.10.2006, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



Код

var T : TTabSheet;
    M : TMemo;
    k : Integer;
begin
  k := PageControl1.PageCount+1;
  T := TTabSheet.Create(Form1); // ***
  T.Name := 'TabSheet'+IntToStr(k);
  T.PageControl := PageControl1;
  M := TMemo.Create(Form1);     // ***
  M.Name := 'Memo'+IntToStr(k);
  M.Parent := T;
  //---------------------
  m := TMemo(FindComponent('Memo'+IntToStr(k)));
  if m<>nil then
    m.Lines.Add('лалала'+IntToStr(k))


Удачи
 smile 
PM MAIL WWW ICQ   Вверх
SergV
Дата 22.10.2006, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Matematik, спасибо за помощь, уже разобрался. Проблемма лежала в том, что создавал блокнот методом Application, когда поменял на Self, всё заработало как часы.

К стате, в твоём примере, ты наверно имел ввиду не 
Код

k := PageControl1.PageCount+1;

а
Код

k := PageControl1.PageCount-1;

PM   Вверх
Matematik
Дата 22.10.2006, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


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

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



я имел то что имел
а вообще, без разницы
PM MAIL WWW ICQ   Вверх
SergV
Дата 23.10.2006, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Matematik, вобщемто в твоём примере без разницы, а в моём коде, только минус. Но это уже не важно, главное работает.

У меня вот другой вопрос возник, не по теме ошибки, просто другую тему нет желания создовать.
А как можно клонировать уже имеющийся компанент с настройками, чтоб не прописывать для созданного компанента все нужные настройки. У меня на форме уже есть готовый компанент мемо, вот надо при создании нового компанента, получить все его настройки. Такое возможно сделать, без прогона всех настроек по порядку, типа просто клон сделал и всё.
PM   Вверх
Aleksej
Дата 23.10.2006, 21:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Цитата(SergV @  23.10.2006,  19:54 Найти цитируемый пост)
У меня на форме уже есть готовый компанент мемо, вот надо при создании нового компанента, получить все его настройки. 

можно. пользуйся 
Код

newmemo.assign(oldmemo);

PM MAIL ICQ   Вверх
SergV
Дата 24.10.2006, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Aleksej, спасибо, буду пробовать.
PM   Вверх
SergV
Дата 24.10.2006, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Aleksej, вылетает с ошибкой, чтото типа того что не может присвоить. Но это пока не важно, у меня щас возникла другая проблемма.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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