Форум программистов, компьютерный форум, киберфорум
Наши страницы

Delphi для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 39, средняя оценка - 4.77
kravam
быдлокодер
1701 / 888 / 45
Регистрация: 04.06.2008
Сообщений: 5,498
#1

Почему не выполняется вывод в окно (ShowMessage) - Delphi

10.01.2012, 18:39. Просмотров 5635. Ответов 8
Метки нет (Все метки)

Друзья! Ковыряясь с исходником чужой программы, я разведал, что выполняется вот этот код:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
procedure TStringList.Delete(Index: Integer);
begin
 //А вот это вставил я
 ShowMessage ('Я здесь');
  if (Index < 0) or (Index >= FCount) then Error(@SListIndexError, Index);
  Changing;
  Finalize(FList^[Index]);
  Dec(FCount);
  if Index < FCount then
    System.Move(FList^[Index + 1], FList^[Index],
      (FCount - Index) * SizeOf(TStringItem));
  Changed;
end;
ага, а для пущего контроля я вставил в него дианостическую надпись, компильнул без ошибок и без предупреждений и запустил, в надежде увидеть это сообщение, почему? Уж не решает же за меня компилятор, что мне надо, а что не надо!

Так, ладно, я трассировал даже и вот я дотрассировался до строки
Delphi
1
begin
Чё должно прозойти по F7 (в моём случае 2 раза на F7, ибо там коммент)? А должно вывестись диагностическое сообщение. Не выводится, ЧЯДНТ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.01.2012, 18:39
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Почему не выполняется вывод в окно (ShowMessage) (Delphi):

ShowMessage-не компилируется диалоговое окно - Delphi
Здравствуйте! Прошу помощи - возникла проблема: к основной форме создал диалоговое окно TOKRightDlg, в котором запрашиваются данные...

Вывод результата на showmessage - Delphi
Нужно вывести строку из СтрингГрид в showmessage по введённому в Edit1 диагнозу unit Unit1; interface uses Windows,...

Почему при отправке сообщения клиентом, у сервера выскакивает пустой ShowMessage? - Delphi
Привет всем! Есть код: procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); var i:integer; s:...

Почему то не выполняется условие - Delphi
Может я что то непраильно делаю помогите пожалуйста ...

Почему не выполняется условие в программе? - Delphi
Есть программа: http://rghost.ru/6sxJSr7Yt Почему не выполняется условие: if sum2&lt;=10 then...

OnKeyPress - Почему код выполняется с задержкой? - Delphi
Ситуация такая, имеется вот такая конструкция - label1.Caption:=Edit1.Text; Все вводимое в Edit выводится в lable. Проблема вот в чем,...

8
HighPredator
5544 / 1857 / 346
Регистрация: 10.12.2010
Сообщений: 5,479
Записей в блоге: 2
10.01.2012, 23:11 #2
Возможно, что модуль Classes.pas не был откомпилирован, а был использован Classes.dcu
1
kravam
быдлокодер
1701 / 888 / 45
Регистрация: 04.06.2008
Сообщений: 5,498
13.01.2012, 20:24  [ТС] #3
А как мне сделать так, чтобы этот модуль компилился вместе со всем проектом? Отдельно компилить не предлагать, я пробовал из командной строки, получил:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
E:\Borland\Delphi7\Bin>dcc32.exe classes.pas
Borland Delphi Version 15.0
Copyright (c) 1983,2002 Borland Software Corporation
classes.pas(3737) Warning: Symbol 'Added' is deprecated
classes.pas(3922) Warning: Symbol 'Added' is deprecated
classes.pas(3926) Warning: Symbol 'Deleting' is deprecated
classes.pas(3934) Warning: Symbol 'Added' is deprecated
classes.pas(3935) Warning: Symbol 'Deleting' is deprecated
classes.pas(4620) Error: Undeclared identifier: 'ShowMessage'
classes.pas(5092) Warning: Symbol 'Win32Check' is specific to a platform
classes.pas(5259) Warning: Symbol 'HeapAllocFlags' is specific to a platform
classes.pas(5261) Warning: Symbol 'HeapAllocFlags' is specific to a platform
classes.pas(11106)
(я вставлял в classes.pas вызов ShowMessage)
Да вообще каждый раз муторно отдельно компилить этот модуль, лучше жать на F9. Моего ума хватило чтобы исключить слово Classes из списка uses в модуле main.pas и потом проект-Ю добавать в проект-> Classes.pas, после чего получил кучу предупрежждений и одну ошибку:
[Ошибка] classes.pas(4620): Undeclared identifier: 'ShowMessage'

Всё, хорош экспериментов, а то взорвётся у меня компьютер. Надеюсь на указания.
0
Andyc
206 / 183 / 46
Регистрация: 10.01.2011
Сообщений: 302
13.01.2012, 20:41 #4
Цитата Сообщение от kravam Посмотреть сообщение
[Ошибка] classes.pas(4620): Undeclared identifier: 'ShowMessage'
В classes.pas добавить
Delphi
1
uses Dialogs;
0
kravam
быдлокодер
1701 / 888 / 45
Регистрация: 04.06.2008
Сообщений: 5,498
13.01.2012, 21:18  [ТС] #5
НЕ получается, ошибка,
Circular unit reference to 'Classes'

И то верно, вот файл Dialog.pas
uses WinUtils, Windows, Messages, SysUtils, CommDlg, Printers, Classes, Graphics, Controls, Forms, StdCtrls;
0
Andyc
206 / 183 / 46
Регистрация: 10.01.2011
Сообщений: 302
13.01.2012, 21:31 #6
Можно подключить DLL и вызвать диалог непосредственно из WinAPI.

Добавлено через 4 минуты
И да, можно попробовать подключить модуль в блоке Implementation, а не в interface
0
kravam
быдлокодер
1701 / 888 / 45
Регистрация: 04.06.2008
Сообщений: 5,498
13.01.2012, 22:06  [ТС] #7
Мне точно надо как вызвать простой MessageBox из Classes.pas, а то я щас напробовался, вообще ничё не работает, ни с Classes.pas, ни с Classes.dcu, щас вообще всё придётся сносить и переустанавливать, блин, если IDE не даёт править исходники, зачем они вообще идут в комплекте?
0
HighPredator
5544 / 1857 / 346
Регистрация: 10.12.2010
Сообщений: 5,479
Записей в блоге: 2
14.01.2012, 00:28 #8
Попробуйте следующее: создайте папку и туда поместите вашу модифицированную версию файла. В вашем случае Classes.pas. Затем Tools->Environment options->Library path и вот путь к созданной вами папке пометите в самое начало списка. Может сработает.
0
Mawrat
12789 / 5696 / 672
Регистрация: 19.09.2009
Сообщений: 8,838
14.01.2012, 00:49 #9
kravam, то что подвергаются правкам библиотечные модули из дистрибутива - с этим надо быть осторожным. Вообще-то этого желательно избегать. Если уж надо остановить процесс выполнения на каких-то строках в таких модулях - лучше там поставить точку останова и нужные значения проверять с помощью возможностей отладчика. Что это работало, надо в опциях компилятора поставить галочку: "Use Debug DCUs".
0
14.01.2012, 00:49
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.01.2012, 00:49
Привет! Вот еще темы с ответами:

Почему цикл выполняется при любом условии? - Delphi
Доброго времени суток! procedure TForm1.reversPos; var countsPosition: Integer; begin for countsPosition:=1 to 22 do begin...

Почему слетает окно с вставкой assembler? - Delphi
program Project2; {$APPTYPE CONSOLE} uses crt32, {dos, } SysUtils; var xah, xal:byte;

Почему Label1.Caption:=IntToStr(l-max)+'-'+IntToStr(l-1) выполняется дважды? - Delphi
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs,...

Вывод переменных в окно Form1 - Delphi
Как вывести значение переменной в окно Form1?


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru