Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
12 / 12 / 3
Регистрация: 09.05.2010
Сообщений: 384
1

Странный глюк во время отладки...

17.01.2012, 15:30. Показов 1408. Ответов 12
Метки нет (Все метки)

Во время отладки когда захожу в функцию отладчик останавливается на begin а дальше не заходит внутрь по F7 а продолжает работать сам по себе. Дальнейшие Breakpoint-ы ничего не ловят. D7. В чем проблема?
Функция большая - около 100 строк...
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.01.2012, 15:30
Ответы с готовыми решениями:

Отображение значения объекта во время отладки
Здравствуйте! Можно ли в Delphi изменить функцию, выдающую значение объекта по время отладки? Я...

Отладчик во время отладки указывает не на ту строку
Не знаю куда сунуть тему, но суть в том, что отладчик во время отладки указывает не на ту строку,...

Proteus, глюк отладки по коду
Дино: Некая элементарная программа на ассемблере, изготовленная в AVR Studyo. Эленентарная же...

Странный глюк?
Доброго времени суток! Опишу по порядку. У меня ОС: ХП СП3; Антивирус: Др.Вэб В бухгалтерии...

12
5623 / 2223 / 462
Регистрация: 20.11.2009
Сообщений: 7,460
Записей в блоге: 1
17.01.2012, 15:38 2
Цитата Сообщение от AKE Посмотреть сообщение
Функция большая - около 100 строк...

Не по теме:

Он ее боится :jokingly:

ну давай сюда свой код

может у тебя что-то с дельфи, что она не хочет нормально работать?
0
12 / 12 / 3
Регистрация: 09.05.2010
Сообщений: 384
17.01.2012, 15:43  [ТС] 3
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
function readExpression: PTreeElement;
var
 Start: Boolean;
 Stack: TStack;
 AddStack: TStack;
 op: Integer;
 TE: TTreeElement;
 TempTE: PTreeElement;
 del: integer;
 str: string;
 i,j  : integer;
 found: boolean;
 begin
//  до тех пор пока не найдено точки с запятой,
//   end; или until
//    читать выражение
  Start := True;
  ClearStack(Stack);
  while (True) do
   begin
    Roll;
    op := GetCurrentWordIndex(index, Operators)+1;
    if (op = 0) then //not operator
     begin
      del := GetIndexOfDelimiter(Index);
      Str := Copy(Code, Index, del-Index);
      TE.IsOperator := False;
      TE.ChildCount := 0;
      TE.Item       := Str;
      TE.StrNum     := GetStringNumber(index);
      Push(Stack, TE);
      index := del;
      Continue;
     end;
    if (op = 1) or ((27 <= op) and (op  <= 31)) then
     begin
      Break;
     end;
    if (op = 10) then   // ']'
     begin
      found := false;
      for i := Stack.Top to 1 do
       begin
        if Stack.Items[i].Item = '[' then
         begin
          found := True;
          j     := i;
          Break;
         end;
       end;
      if not found then
       begin
        Writeln('"[" is waited...' + IntToStr(GetStringNumber(Index)));
        IsError := True;
        Exit;
       end;
      if j = 1 then
       begin
        Writeln('before "[" array is waited...' + IntToStr(GetStringNumber(Stack.ITems[1].StrNum)));
        IsError := True;
        Exit;
       end;
      if Stack.Items[j-1].IsOperator then
       begin
        Writeln('Must be variable...' + IntToStr(GetStringNumber(Stack.ITems[j-1].StrNum)));
        IsError := True;
        Exit;
       end;
      ClearStack(AddStack);
      for i := j-1 to Stack.Top do
       Push(AddStack, Stack.Items[i]);
      Stack.Top := j-2;
      Push(Stack, MakeTree(AddStack));
      if IsError then exit;
      Inc(Index);
      Continue;
     end;
    if (op = 8) then   // ')'
     begin
      found := false;
      for i := Stack.Top to 1 do
       begin
        if Stack.Items[i].Item = '(' then
         begin
          found := True;
          j     := i;
          Break;
         end;
       end;
      if not found then
       begin
        Writeln('"(" is waited...' + IntToStr(GetStringNumber(Index)));
        IsError := True;
        Exit;
       end;
      ClearStack(AddStack);
      if (j>1) and (not Stack.ITems[j-1].IsOperator) then
       begin
        Push(AddStack, Stack.Items[j-1]);
        Push(AddStack, Stack.Items[j]);
       end;
      for i := j+1 to Stack.Top do
       Push(AddStack, Stack.Items[i]);
      Stack.Top := j-1;
      Push(Stack, MakeTree(AddStack));
      if IsError then Exit;
      Inc(Index);
      Continue;
     end;
     TE.IsOperator := True;
     TE.Item := Trim(Operators[op]);
     TE.StrNum := GetStringNumber(index);
     TE.ChildCount := 0;
     Push(Stack, TE);
     index := index + Length(Operators[op]);
   end; 
   New(TempTE);
   TE := MakeTree(Stack);
   TempTE^ := TE;
   Result := TempTE;
 end;
0
5623 / 2223 / 462
Регистрация: 20.11.2009
Сообщений: 7,460
Записей в блоге: 1
17.01.2012, 15:49 4
а остальной кусок? лучше проектом, что мне самому сидеть придумывать оставшийся код для работы с этой функцией?
0
12 / 12 / 3
Регистрация: 09.05.2010
Сообщений: 384
17.01.2012, 15:51  [ТС] 5
Вот отсюда вызывается
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// Разбор кода
procedure CodeAnalyze(LabelOffset: String; RepeatCycle: Boolean);
var
 op: Integer;
 TE: PTreeElement;
begin
 Index := Index+5;
 Roll;
 while not ((Copy(Code, index, 3) = 'end') and
     (Code[Index+3] in
    [' ', ';', ',', '=', '+', '-', '(', ')', '[', ']', '/', '*','^', '.'])) do
  begin
   op := GetCurrentWordIndex(index, Oper);
   case op of
    0: begin
        TE := readExpression;
       end;
//    1:
//    2:
 //   3:
   // 4:
   // 5:
   // 6:
     else
     begin
      TE := readExpression;
      if IsError then exit;
      EvaluateType(TE);
      if IsError then Exit;
      MakeCode(TE);
      if IsError then exit;
     end;
   end;
  end;
 
end;
Весь код могу скинуть ну там почти 2000 строк + текстовой файл...
0
12 / 12 / 3
Регистрация: 09.05.2010
Сообщений: 384
17.01.2012, 16:02  [ТС] 6
Весь код...
Вложения
Тип файла: txt in.txt (65 байт, 4 просмотров)
Тип файла: rar Code.rar (9.0 Кб, 7 просмотров)
0
12 / 12 / 3
Регистрация: 09.05.2010
Сообщений: 384
17.01.2012, 16:04  [ТС] 7
Проект
Вложения
Тип файла: rar Project.rar (70.8 Кб, 4 просмотров)
0
13077 / 5862 / 1706
Регистрация: 19.09.2009
Сообщений: 8,807
17.01.2012, 16:11 8
AKE, у тебя, возможно, включена оптимизация в настройках проекта. На время отладки отключи оптимизацию:
Delphi - главное меню - Project - Options... - закладка Compiler:
Optimization - убрать галочку.
Debug Information - поставить галочку.
0
12 / 12 / 3
Регистрация: 09.05.2010
Сообщений: 384
17.01.2012, 16:16  [ТС] 9
Mawrat, всё равно не заходит...
0
13077 / 5862 / 1706
Регистрация: 19.09.2009
Сообщений: 8,807
17.01.2012, 16:45 10
AKE, я сейчас посмотрел твой проект - там включена оптимизация. Я же говорю - отключи оптимизацию. Надо сделать те шаги, которые я выше описал. После того, как оптимизацию отключишь - надо заново полностью скомпилировать проект. А потом можно приступать к отладке.
0
12 / 12 / 3
Регистрация: 09.05.2010
Сообщений: 384
17.01.2012, 17:06  [ТС] 11
Сейчас заменил все структуры на указатели - заработало. Видимо delphi не переваривает большие структуры.
Mawrat, Arcor отдельное спасибо...
0
12 / 12 / 3
Регистрация: 09.05.2010
Сообщений: 384
17.01.2012, 17:10  [ТС] 12
Сейчас заменил все структуры на указатели - заработало. Видимо Дельфи не справляется с большими структурами. Mawrat, Arcor спасибо за поддержку...
0
13077 / 5862 / 1706
Регистрация: 19.09.2009
Сообщений: 8,807
17.01.2012, 17:10 13
Цитата Сообщение от AKE Посмотреть сообщение
Видимо delphi не переваривает большие структуры.
Переваривает. Но при включенной оптимизации не во все участки кода можно попасть в пошаговом режиме. Всегда на время отладки надо отключать оптимизацию. В выложенном проекте режим оптимизации не отключен.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.01.2012, 17:10

Странный глюк
Есть небольшая база, самая простая форма в поле которой храниться несколько аттачментов. Доступ у...

Странный глюк
Вроде-бы ни каких процессов нет а проц всё равно загружен а 30%. Знает кто что это такое?

Странный глюк
Перестал работать один простой запрос, все вроде правильно сделал и раньше работало как положено....

Странный глюк
Может кто-нибудь сталкивался? Есть БД, в основе интерфейса фрейм, в одной половине, которого...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru