|
Вопрос # 2 807/ вопрос открыт / |
|
Здравствуйте, эксперты!
Ответьте пожалуйста новичку.
скомпилировал простенькую программку в .exe, запускаю, в диспетчере задач висит, а на экране пусто.
 |
Вопрос задал: 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 (статус: Посетитель), 18 мая 2009, 16:26 [#1]:
И что в Delphi 2009 надо выбрать чтобы создать .exe без формы, к примеру для вывода строки "привет"(data module, unit, vcl forms application и т.д.)
|
|
Вадим К (статус: Академик), 18 мая 2009, 16:28 [#2]:
А как строку решили выводить?
Галочка "подтверждения прочтения" - вселенское зло.
|
|
slava863 (статус: Посетитель), 18 мая 2009, 16:28 [#3]:
Просто не выдаёт сообщение ни в каком виде не пойму в чём проблема
|
|
Вадим К (статус: Академик), 18 мая 2009, 16:29 [#4]:
Компилятор не телепат, угадать не может.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
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 (статус: Посетитель), 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 (статус: Посетитель), 18 мая 2009, 17:51 [#9]:
Ещё раз извиняюсь за неграмотность.
а можно весь код целиком с unit до end
|
|
Вадим К (статус: Академик), 18 мая 2009, 18:01 [#10]:
Ставим на форму кнопку, кликаем дважды, вставляем указанный выше код. и всё.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
slava863 (статус: Посетитель), 18 мая 2009, 18:14 [#11]:
так в том то и дело что я хочу без формы.
|
|
Вадим К (статус: Академик), 18 мая 2009, 18:20 [#12]:
ну тогда надо создать обычный проект, потом удалить текущую форму, дальше Project->View Source.
Там есть Application.run и ещё пара строк подобных. Их удаляем, оставляем только begin end и то, что выше begin.
Между begin end можно писать код.
Галочка "подтверждения прочтения" - вселенское зло.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|