Форум » [x]Harbour » Парадокс проверки... или кривой код ? » Ответить

Парадокс проверки... или кривой код ?

Andrey: Всем привет. Столкнулся с пробемой запуска программы месяца 2 назад. Небольшое пояснение: в фирме стоит моя сетевая программа. В качестве антивируса официальный DRWEB на всех компах, обновлется через инет. Проверку моей папки ВООБЩЕ отключили. На 2 компах (98 и ХР) моя прога запускается сразу (меньше минуты), а на других 3 (ХР) - тормоза, запуск примерно минут через 20 !!! Грешил на сеть, свич и т.д. А ларчик просто открылся. Сделал трасировку задачи (написал запись в лог-файл время выполнения всех функций при запуске). И выяснил, что единственный тормоз это функция - Проверки запуска предыдущей копии программы !!! Время ее выполнения 20 мнут в среднем... Почему, непонятно ? Код программы хХарбор 1.0+BCC привожу :http://zalil.ru/30765956 Кто подскажет как исправить систему или код ? Переставлять систему не могу, стоит банк-клиент, бухгалтерская прога и т.д. Все компы рабочие, не тормозят...

Ответов - 51, стр: 1 2 3 All

PSP: Петр пишет: что делает hbDrop() - уже меньше народу сможет (сказать) А что она делает? :)

Dima: DbDrop вижу , HbDrop - нет ;)

Петр: PSP пишет: А что она делает? :) Пока еще ничего, не написали Dima пишет: DbDrop вижу , HbDrop - нет ;) Все правильно DbDrop() или hb_dbDrop() - удаляет таблицу и связанные с ней файлы (мемо, индексы).


PSP: Петр

Петр: PSP пишет: Файл создается со случайным именем, узнать которое невозможно. Можно с помощью dbInfo( DBI_FILEHANDLE ) узнать хэндл файла, а потом с помощью Api и имя Дописано 10 лет спустя Хотя можно сразу dbInfo( DBI_FULLPATH ) воспользоваться (всегда почему-то думал, что DBI_FULLPATH возвращает только путь к таблице..)

Andrey: Опять возвращаюсь к данной теме ! См. выше... Теперь засада на ДВУХ новых, чистых компах с Win7 Home.... Т.е. опять программа грузиться примерно 20 минут. Функция ISEXERUNNING( cExeRun ) из МиниГуи работает очень быстро. Все дело в функции aStart := GetWindowList() // Считать ХЕНДЛ окна и ИМЯ окна - взята из МиниГуи ! которая используется для чтения всех ХЕНДЛОВ окон в системе HB_FUNC( GETWINDOWTEXT ) Она тормозит на таких "особых" компах ! Т.е. мне нужно отказаться от этой функции и все заработает. А эту функцию я использую для определения НОМЕРА ХЕНДЛА уже запущенной моей программы, для переключения её на передний план - MAXIMIZE( nStartHendl ). Для этого встает простая задача найти функцию, которая возвращает НОМЕР ХЕНДЛА окна по НАЗВАНИЮ окна. Есть ли такая функция на хХарборе или МиниГуи? Исходник здесь: http://files.mail.ru/40X51U

Andrey: Добился я нормальной проверки запуска ВТОРОЙ копии программы для хХарбора. В МиниГуи и то проще... Программа проверки запуска второй копии программы ! - Verification Program run a second copy of the program ! Вот мой исходник, кому интересно. http://files.mail.ru/CAFC3DED6EF647599D009563E9C6DF71 Исправления приветствуются ! Очень аккуратно нужно разбираться с титулом окна, если используешь 866 кодировку и терминал GTWVT.

Dima: Andrey пишет: Добился я нормальной проверки запуска ВТОРОЙ копии программы для хХарбора. А что проблемы были ? На Harbour проблемы не увидел у себя , все четко.

Andrey: Dima пишет: А что проблемы были ? Еще какие... ... МиниГуи и Григорий помог.... Дима, а как считать "титул окна задачи" для Харбора ?

Dima: Andrey пишет: Дима, а как считать "титул окна задачи" для Харбора ? для чего ? ps ISEXERUNNING написанный с использованием Mutex замечательно работает.

Andrey: Dima пишет: для чего ? Для вывода в переменную. Просто для себя. Dima пишет: ISEXERUNNING написанный с использованием Mutex замечательно работает. Я и не спорю.



полная версия страницы