Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Консольное приложение и Чудеса в решете [D7, WinXP]


Ваня Жуков ©   (2004-10-01 11:36:00) 

Вступление.
С помощью File->New->Console Application cоздаем скелет консольного приложения.
Добавляем код, компилируем, получаем готовое приложение.
Для удобства в нем есть модуль данных, так как приложение работает с БД.
Все работает как надо и работа разработчика в основном идет над оптимизацией алгоритма обработки данных.
На определенном этапе в дополнение к ведению текстового лога в код добавляется вывод на консоль с помощью Witeln.
И снова все работает как надо.

Но после очередной сборки проекта вдруг откуда ни возьмись получается приложение, про которое Windows думает что оно не консольное.
Соответственно при запуске с ним не связывается stdout и операция Writeln вываливается в недопустимую операцию.
Если посмотреть в свойства ярлыка на такой билд, то там присутствуют все вкладки свойств характерные для gui прилождения, и ни одной для консольных.

Еще после нескольких билдов все чудесным образом возвращается на круги своя и винда признает в приложении консольную программу.
И так несколько раз подряд.

Список uses не меняется, директива {$APPTYPE CONSOLE} никуда не девается и даже продублирована с горя во всех модулях.
GetStdHahdle(STD_OUTPUT_HANDLE) всегда <> INVALID_HANDLE_VALUE
AllocConsole конечно решает проблему, но хочется при запуске из под фара использовать его консоль для вывода.

Если кто сталкивался и борол или просто знает в чем дело просьба ткнуть куда надо.


PVOzerski   (2004-10-01 11:44:00) [1]

Странная штука... {$apptype console} должно работать однозначно.
А точно нигде не стоит {apptype GUI} и не попало ли {$apptype console} в невыполняемый {$ifdef}? Можно, конечно, пересобрать всё из командной строки с параметром -СС . Но все равно, странно.


Наверх

Титульная страница Поиск, карта сайта Написать письмо