Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 2 807

/ вопрос открыт /

Здравствуйте, эксперты!
Ответьте пожалуйста новичку.
скомпилировал простенькую программку в .exe, запускаю, в диспетчере задач висит, а на экране пусто.

Приложение:
  1. procedure ShowMessage(const Msg: string);
  2. begin
  3.  
  4. end;
  5.  
  6.  


slava863 Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: slava863 (статус: Посетитель)
Вопрос отправлен: 18 мая 2009, 16:08
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Вадим К

Здравствуйте, slava863!
Логично, что висит. Повисит, повисит и вылетит с переполнением стека. Потому что у Вас классическая рекурсия.
переименуйте, например так

 procedure ShowMessage1(const Msg: string);
begin
  ShowMessage ('привет');
end;
То, что корректно работать будет, не обещаю, но не будет зависать.
Либо (я не знаю, зачем так было задумано), попробуйте написать так
 procedure ShowMessage(const Msg: string);
begin
  Dialogs.ShowMessage ('привет');
end;
Хотя надо хорошо подумать, как пришло в голову писать подобный код.

Ответ отправил: Вадим К (статус: Академик)
Время отправки: 18 мая 2009, 16:23


Мини-форум вопроса

Всего сообщений: 12; последнее сообщение — 18 мая 2009, 18:20; участников в обсуждении: 2.
slava863

slava863 (статус: Посетитель), 18 мая 2009, 16:26 [#1]:

И что в Delphi 2009 надо выбрать чтобы создать .exe без формы, к примеру для вывода строки "привет"(data module, unit, vcl forms application и т.д.)
Вадим К

Вадим К (статус: Академик), 18 мая 2009, 16:28 [#2]:

А как строку решили выводить?
Галочка "подтверждения прочтения" - вселенское зло.
slava863

slava863 (статус: Посетитель), 18 мая 2009, 16:28 [#3]:

Просто не выдаёт сообщение ни в каком виде не пойму в чём проблема
Вадим К

Вадим К (статус: Академик), 18 мая 2009, 16:29 [#4]:

Компилятор не телепат, угадать не может.
Галочка "подтверждения прочтения" - вселенское зло.
slava863

slava863 (статус: Посетитель), 18 мая 2009, 16:31 [#5]:

просто запускаешь exe рисуется окошко с текстом.
вот весь текст проги

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, SvcMgr, Dialogs;

type
TService1 = class(TService)
private
{ Private declarations }
public
function GetServiceController: TServiceController; override;
{ Public declarations }
end;

var
Service1: TService1;

implementation

{$R *.DFM}

procedure ServiceController(CtrlCode: DWord); stdcall;
begin
Service1.Controller(CtrlCode);
end;

function TService1.GetServiceController: TServiceController;
begin
Result := ServiceController;
end;

procedure ShowMessage(const Msg: string);
begin
Dialogs.ShowMessage ('привет');
end;


end.
Вадим К

Вадим К (статус: Академик), 18 мая 2009, 16:44 [#6]:

А вот расскажите мне, кто будет вызывать процедуру ShowMessage?
Во вторых, для чего создавать сервис? Вообще то они не предназначены для работы с рабочим столом.
И в третих, зачем хочеться?
Галочка "подтверждения прочтения" - вселенское зло.
slava863

slava863 (статус: Посетитель), 18 мая 2009, 17:19 [#7]:

а можно пример програмки которая удаляет файл 1.txt в каталоге где находится exe, при этом выдаёт сообщение файл удалён.
а то видимо я чегото не понимаю.
Вадим К

Вадим К (статус: Академик), 18 мая 2009, 17:38 [#8]:

я видимо тоже. Вам консольная подойдет? Или как хочеться?
а так вообще то
if DeleteFile(ExtractFilePath(Application.Exename)+'1.txt'))
  then ShowMessage('удалён')
  else ShowMessage('не удалён');
Галочка "подтверждения прочтения" - вселенское зло.
slava863

slava863 (статус: Посетитель), 18 мая 2009, 17:51 [#9]:

Ещё раз извиняюсь за неграмотность.
а можно весь код целиком с unit до end
Вадим К

Вадим К (статус: Академик), 18 мая 2009, 18:01 [#10]:

Ставим на форму кнопку, кликаем дважды, вставляем указанный выше код. и всё.
Галочка "подтверждения прочтения" - вселенское зло.
slava863

slava863 (статус: Посетитель), 18 мая 2009, 18:14 [#11]:

так в том то и дело что я хочу без формы.
Вадим К

Вадим К (статус: Академик), 18 мая 2009, 18:20 [#12]:

ну тогда надо создать обычный проект, потом удалить текущую форму, дальше Project->View Source.
Там есть Application.run и ещё пара строк подобных. Их удаляем, оставляем только begin end и то, что выше begin.
Между begin end можно писать код.
Галочка "подтверждения прочтения" - вселенское зло.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 5 апреля 2020, 07:42
Выполнено за 0.02 сек.
Рейтинг@Mail.ru