Мастера DELPHI, Delphi programming community Рейтинг@Mail.ru Титульная страница Поиск, карта сайта Написать письмо 
| Новости |
Новости сайта
Поиск |
Поиск по лучшим сайтам о Delphi
FAQ |
Огромная база часто задаваемых вопросов и, конечно же, ответы к ним ;)
Статьи |
Подборка статей на самые разные темы. Все о DELPHI
Книги |
Новинки книжного рынка
Новости VCL
Обзор свежих компонент со всего мира, по-русски!
|
| Форумы
Здесь вы можете задать свой вопрос и наверняка получите ответ
| ЧАТ |
Место для общения :)
Орешник
Коллекция курьезных вопросов из форумов
Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / rsdn.org

 
Чтобы не потерять эту дискуссию, сделайте закладку « предыдущая ветвь | форум | следующая ветвь »

KOL консольное приложение вылетает при WriteLn


vss-sgpb ©   (28.02.12 11:29

Win 2K, Delphi 6, KOL. При выполнении WriteLn(sOut) в консольном
приложении, приложение завершается. (sOut:KOLstring )


rdnks   (28.02.12 17:08[1]

может быть не "вылетает" а корректно завершается, сделав всё что от нее требовалось? Не пробовали ставить ожидающий ввода readln, или же зациклить программу на keystate?


RusSun ©   (28.02.12 17:16[2]

выложите на файлообменнике урезанный пример "иллюстрирующий" ошибку:)


vss-sgpb ©   (28.02.12 23:23[3]

Видимо, я делаю что-то не так.
Занят приложением, находящемся на флешке актуально.
98,2К, ХР, 7 - это, где отлаживаю свое приложение.
"Вылетает" - корректно завершается.
В приложении нет ReadLn, - на консоль выводится протокол.
Ничего не меняю в исходнике, вставляя флешку на другой комп.
Из свойств убираю в библиотеках SysDcuD6, в Рrogram делаю
// перед  WriteLn и CharToOem, но в Unit-е эти команды не комментирую.
RUN. OK.
Убираю // в Рrogram.
RUN. OK.
+ SysDcuD6
OK
Репите на Win 2K или Win 7 или ... (Везде Delphi 6 и  KOL).

С почтением, VSS


rdnks   (29.02.12 01:46[4]

Описание проблемы ну никак не помогает. Запись в поток вывода в дельфи всепоглощающь. Вылет быть может только в том случае, если переполнен буфер (а там порядка чуть меньше 4 гб) или не назначен стандартный поток вывода. Консоль вообще создана? Есть как минимум три варианта: указать в опциях линковщика Generate console application, добавить ключ в юнит  {$APPTYPE CONSOLE} или вызвать явно AllocConsole.
Какой протокол? Где? Кто? Выложите минимальный исходник, в котором возникает проблема.


vss-sgpb ©   (29.02.12 17:41[5]

program frd;
{$APPTYPE CONSOLE}
uses
 Windows,KOL,
 uTools in 'uTools.pas';

{$R *.res}

var
   FlagStop: Boolean;
Begin
 sOut:=Date2StrFmt('yy.MM.dd',Now)+' '+Time2StrFmt('HH:mm:ss',Now)+'   CTAPT FRD';

 CharToOem(Pchar(sOUT),PChar(sOUT)); // Ошибка. sOUT: string. Глобальная, объявлена в  uTools  

WriteLn(sOut); ..// Вылетает если закомментировать CharToOem
while NOT FlagStop do
begin
  Flag:=ConvertIn();      //Находится в  uTools.pas
  sTe:=Time2StrFmt('HHmmss',Now);
  if sTe>=TimeOut then FlagStop:=True;
end;
End.


Vladimir Kladov ©   (29.02.12 19:31[6]

Ну, вот так не вылетает, хоть комментарь хоть нет. А что такое uTools?


program frd;
{$APPTYPE CONSOLE}
uses
Windows,KOL;

{$R *.res}

var
  FlagStop: Boolean;
  sOut: String;
Begin
sOut:=Date2StrFmt('yy.MM.dd',Now)+' '+Time2StrFmt('HH:mm:ss',Now)+'   CTAPT FRD';

//CharToOem(Pchar(sOUT),PChar(sOUT)); // Ошибка. sOUT: string. //Глобальная, объявлена в  uTools  

WriteLn(sOut); // Вылетает если закомментировать CharToOem
Readln;

End.


vss-sgpb ©   (29.02.12 21:21[7]

1: uTools мониторит папки с поступающими в них время от времени файламаи от Abby FineReadera и преобразует в формат загрузки куда надо

2: Readln завтра проверю

3: А как же
CharToOem(Pchar(sOUT),PChar(sOUT));         ЗДЕСЬ ОШИБКА при запуске в иной ОС
Суть мне кажется в том, чтобы при запуске в другой ОС в каталоге отсутствовали лишние файлы, помнящие о прошлом приложения. Если это так, порекомендуйте минимум.

4. В дальнейшем планирую перейти от вывода в Console в аналог на МСК. Оправдоно ли по памяти и времени? Но консоль добью.

VSS


MTsv DN   (29.02.12 23:43[8]

Отключите замену сис.файлов. Этому багу 100 лет...


Vladimir Kladov ©   (01.03.12 16:01[9]

Попробовал приведенный мной вариант с заменой SysD7 - работает и так и эдак, и с KOL 3.16, и 3.17. Никак не вылетает.


vss-sgpb ©   (01.03.12 21:55[10]

exe-файл maded in Delphi 6, Win 2K, KOL работает в  98, NT, 2K, XP. В 7 не проверял. < 50K, зверь, которого останавливает SLEEP. Я о Compilation. Прав ли MTsvDN: наличиствует столетоизвестная  необходимость отказаться от замены сис.файлов? Склоняюсь,-да :ReadLn,OEMtoCHAR и т.д.


rdnks   (01.03.12 22:32[11]

Господи, да посмотрите вы исходные коды вызываемых функций. CharToOem ссылается на адекватную api, вывод в stdout, как говорилось, поглощает всё, даже файловый поток. Полчаса убил на то, чтобы воплотить вашу ошибку - результат ноль. И в ansi версию CharToOem запихивал юникод и наоборот. Максимум что происходит - выдает в поток непечатаемые символы. Win xp, 7, d7, td с заменой sysdcu и без.


rdnks   (01.03.12 22:35[12]

и в какой другой ос? Какие файлы? Надеюсь у вас не включена компиляция с runtime packages?


GMax   (10.03.12 23:31[13]

в какой-то из версий замены сис. файлов надо было юзать
UseInputOutput;
сразу после begin


vss-sgpb ©   (01.04.12 20:47[14]

Вы правы. Переустановил Delphi. КОЛ, МСК не подводят.
Особенно благодарю Vladimir Kladov


версия для печати

Написать ответ

Ваше имя (регистрация  E-mail 







Разрешается использование тегов форматирования текста:
<b>жирный</b> <i>наклонный</i> <u>подчеркнутый</u>,
а для выделения текста программ, используйте <code> ... </code>
и не забывайте закрывать теги! </b></i></u></code> :)


Наверх

  Рейтинг@Mail.ru     Титульная страница Поиск, карта сайта Написать письмо