Форум программистов
 
О проблемах с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 09.02.2011, 18:03   #11
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

люди помогите, неуж то никто не знает как с етим справица
как правельно удалить компонент?
и еше, хочу уточнить ошибку
Tekst_x_1, Tekst_x_2, Tekst_x_3 :My Labels Name;
удаляя Tekst_x_2 и переименовывая Tekst_x_3 в Tekst_x_2, при обрашении к Tekst_x_2 идет запрос в память старои Tekst_x_2?
я верно понимаю свою ошибку?
VirusN13
ArtGrek вне форума Ответить с цитированием
Старый 09.02.2011, 18:46   #12
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Приведи последний вариант кода, строчку с ошибкой и стек вызова.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 09.02.2011, 18:57   #13
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

Код:
procedure TForm2.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
  i_EKD: integer;
  c_EKD: Integer;
begin
  if (Key=VK_DELETE) and (TLabel(TekstS) <> nil) then
  begin
    c_EKD := 0;
    TLabel(TekstS).Free;
    if StrToInt(TekstKol[List[8].IndexOf(ImSender)]) > 0 then
      for i_EKD := 1 to StrToInt(TekstKol[List[8].IndexOf(ImSender)]) do
        if FindComponent('Tekst_' + IntToStr(List[8].IndexOf(ImSender)) + '_' + IntToStr(i_EKD)) <> nil then
        begin
          inc(c_EKD);
          TLabel(FindComponent('Tekst_' + IntToStr(List[8].IndexOf(ImSender)) + '_' + IntToStr(i_EKD))).Caption :=
            'Tekst_' + IntToStr(List[8].IndexOf(ImSender)) + '_' + IntToStr(c_EKD);  
//Access violation at address 00447E73 in modul Project.exe. Read of address 00000057.
        end;
    TekstKol[List[8].IndexOf(ImSender)] := IntToStr(StrToInt(TekstKol[List[8].IndexOf(ImSender)]) - 1);
    Image1Click(Image1);
  end;
end;
VirusN13
ArtGrek вне форума Ответить с цитированием
Старый 09.02.2011, 19:09   #14
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Включи в опциях Use Debug DCUs и сделай Build (не Compile).

И дай стек вызова при ошибке.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 09.02.2011, 19:24   #15
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

Project -> Options -> Compiler -> Use Debug DCUs
Project -> Build Project1
что должно произоити?
VirusN13
ArtGrek вне форума Ответить с цитированием
Старый 09.02.2011, 19:36   #16
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

Код:
procedure TControl.SetVisible(Value: Boolean);
begin
  if FVisible <> Value then  //курсор был здесь
  begin
    VisibleChanging;
    FVisible := Value;
    Perform(CM_VISIBLECHANGED, Ord(Value), 0);
    RequestAlign;
  end;
end;
зделал build во время ошибки

P.S. Могу дать весь проект
VirusN13

Последний раз редактировалось ArtGrek; 09.02.2011 в 19:46.
ArtGrek вне форума Ответить с цитированием
Старый 09.02.2011, 19:53   #17
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

я как говорил Stilet в OnClose добавил проверку
if FindComponent('Tekst_' + IntToStr(List[8].IndexOf(ImSender)) + '_' + IntToStr(i_FCl)) <> nil then
и ошибка не выходит, но ето не решает проблемы
если у меня было 7 лабелов и 5-и я удалю, а потом поставлю в цикле 6 раз
TLabel(FindComponent('Tekst_1_' + IntToStr(i)).Caption := ....
имена поменяюца только у 5 из 6 оставшихся лабелов, потому что 5(удаленыи) находица, но не проходит проверки и до 6 просто не доходит очеред
VirusN13
ArtGrek вне форума Ответить с цитированием
Старый 09.02.2011, 20:10   #18
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Стек вызова при ошибке ты скоро выложишь?
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 09.02.2011, 20:17   #19
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

не могу его получить
view -> debug windows -> call stack
Process is not accessible
VirusN13
ArtGrek вне форума Ответить с цитированием
Старый 09.02.2011, 20:20   #20
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Ну так ты делай это когда процесс стоит на паузе. Да не просто на паузе, а когда ошибка возникла.

Вот появилось сообщение об AV - ты жми на OK/Break и снимай стек.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Ответ
Купить рекламу на форуме от 7000 рублей в месяц



Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Access violation at address 00478D0E in module 'Project1.exe'. Write of address 00000000 fondreykus-1 Общие вопросы Delphi 5 27.01.2010 14:25
Access violation at address 00456215 in module Autorun.exe. alexandrov28 Свободное общение 4 30.09.2009 20:41
Access violation at address... Ralf_ru Помощь студентам 13 05.04.2009 04:20
Access violation at address.. RegentM Общие вопросы Delphi 4 01.11.2007 03:46
Ошибка: "Access violation at address 00454F01 in module 'Project1.exe'. Read of address 00000000. Fen1x Общие вопросы Delphi 8 13.10.2007 19:13


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS
Скидки на курсы GeekBrains 40%, выбирайте программу для себя