Уважаемые эксперты! Я хочу написать сервис под Win2k/XP без формы, который являлся бы сервером TCP (хочу использовать компонент TidTCPserver). В инете натолкнулся на статью "Написание сервисов Windows NT на WinAPI" (http://www.sources.ru/delphi/system/services_in_api.shtml). Но здесь сразу возникнуло несколько проблем: 1) У них в статье есть функция "ServiceInitialization" - она не описана. Как написать ее? 2) Как запускать этот сервис, и сделать так чтобы он прописался в системе, и чтобы удалился из оной (хотя бы куда пихать exeшник, и куда в реестре что прописывать - типа хочу сделать инсталляшку и анинсталляшку этого сервиса)? 3) Хотелось бы достать исходники этого сервиса написанного по этой статье! З.Ы. Delphi 7.
Доброе время суток, New2! Например, сначала можно выделить ячейку, а затем установить её значение (читать можно аналогично): F1book1.Selection:='A3'; F1Book1.Text:='qwer'; Колонки и строчки именуются как в Excel'e. Можно воспользоваться функцией SetActiveCell(nRow,nCol) - она устанавливает выделение на ячейке по её "координатам": f1book1.SetActiveCell(3,2); //эквивалентно F1Book.selection('B3'); Попутного ветра! Ответ отправлен: 02.02.2004, 08:21 Отправитель: samum2000 Отвечает THE_PRO
Доброе время суток, New2! Vot eto i mne interesno... Kak ta davno ya pitalsya razobratsya v etom komponente no... Yedinstvennoye eto F1Book1.LaunchDesighner Ответ отправлен: 30.01.2004, 12:37 Отправитель: THE_PRO
Вопрос № 1286
Здравствуйте, уважаемые эксперты ! Кто знает помогите советом, уже второй раз наблюдаю такую картину :), пишу программу и при очередном запуске она не компилируется, а внизу экрана (где сообщения об ошибках), написана строка, что программа не может быть откомпилирована. Вроде нет никаких ошибок, а ни чего не компилируется. И не перезапуск Делфи и не даже переустановка не помогают, т.е. весь проект псу под хвост. Что за беда ?
Приветствую Вас, Sergey N.! Попробуйте откомпилировать Ваш проект в командной строке: dcc32 Ваш_проект.dpr и посмотреть, какие будут сообщения. Ответ отправлен: 31.01.2004, 03:56 Отправитель: sir henry Отвечает samum2000
Приветствую Вас, Sergey N.! А что-нибудь кроме того, что программа не может быть откомпилирована Delphi пишет? Error или, хотя бы, Warning? Знаете, можно попробовать открыть ранее сохраненные исходники программы (файлы *.bak), т.е. переименовать их в соответсвующие *.pas, и попытаться стартануть проект с ними - иногда это помогает, особенно если ошибка где-то в коде программы. Ответ отправлен: 02.02.2004, 08:21 Отправитель: samum2000 Отвечает THE_PRO
Здравствуйте, Sergey N.! Mojet kakoy-to unit zateryalsya. Ответ отправлен: 30.01.2004, 12:35 Отправитель: THE_PRO Отвечает Boriss
Добрый день, Sergey N.! Для точного ответа нужна более подробная информация: 1) возможно, что пишите на защищенный чем-то диск;(заполненный) 2) второй раз с того же диска ставите? Возможно, что там что-то; 3) Не компилируется самый простой проект или что-то серьезнее? Простой тест - создайте минимальную программу- если нормально, то что-делаете неправильно Вы Ответ отправлен: 30.01.2004, 14:56 Отправитель: Boriss Отвечает CJ
Доброе время суток, Sergey N.! Если не компилиться, значит всетаки есть ошибки, посмотри внимательней. А на каком куске кода останавливается? Попробуй нажимать поочередно F7, и проследи на каком куске кода штопор! там и рой... Ответ отправлен: 30.01.2004, 15:56 Отправитель: CJ Отвечает Pawel
Добрый день, Sergey N.! Либо существует ошибка (например отсутствее фаила ресурсов) либо диск переполнен, защищён от записи, приложение запущенно. Ответ отправлен: 30.01.2004, 18:48 Отправитель: Pawel
Вопрос № 1287
Вот есть у меня в базе таблица (заполненая поуши). Хочу из Delphi прилепить к таблице еще одну колонку с нужным мне еминем (именем тоесть), длиной и типом... КАк можно это сделать ?
Доброе время суток, maDByte! через sql запрос alter table
* EMan1.5: ---===*** The game we play ***===---
Приложение: Ответ отправлен: 31.01.2004, 22:54 Отправитель: Bob Johnson Отвечает sir henry
Добрый день, maDByte! Языком SQL: ALTER TABLE название_таблицы ADD название_столбца тип(размер)
Ответ отправлен: 31.01.2004, 04:07 Отправитель: sir henry Отвечает samum2000
Добрый день, maDByte! Я так поял, что ты не хочешь потерять данные,поэтому предлагаю сделать это через временную таблицу. Для начала надо сохранить всю твою исходную таблицу в другой, временной таблице с любым именем. Затем удаляешь исходную, пересоздаешь её с тем же имененем, но другим набором колонок. После этого данные из временной таблицы возвращаешь в исходную на соответствующие места. Теперь временную можно удалять. Ответ отправлен: 02.02.2004, 08:21 Отправитель: samum2000
Вопрос № 1288
Мужики. Сегодня по невнимательности отправил ответ из Outlook'а! Раньше это не проходило. Спасибо админам :))
Добрый день, Дмитрий! Slushay mi tut ne PHPWorld a DELPHI/C++BUILDER Xperti No sovet dam: Knijka: PHP for Web-Desighners +CD no ona ne dlya tex voobshe nicheqo ne znayet v PHP! Ответ отправлен: 31.01.2004, 11:09 Отправитель: THE_PRO Отвечает CJ
Приветствую Вас, Дмитрий! Это оффтоп! У яндеска спроси! Ответ отправлен: 30.01.2004, 23:42 Отправитель: CJ Отвечает sir henry
Доброе время суток, Дмитрий! И каким боком Ваш вопрос относится к Delphi/Builder? Ответ отправлен: 31.01.2004, 04:09 Отправитель: sir henry Отвечает samum2000
Приветствую Вас, Дмитрий! Вот книга: PHP 4 Руководство разработчика Хьюгс С., Змиевский А., "ДиаСофт" - 2001, 384 стр. А Апач можно взать здесь совершенно бесплатно: ftp://ftp.lexa.ru/pub/apache-rus/apache_1.3.29rusPL30.19.tar.gz Ответ отправлен: 02.02.2004, 08:23 Отправитель: samum2000 Отвечает Tano
Здравствуйте, Дмитрий! Насчет локального WWW-сервера могу посоветовать пакет EasyPHP. Он включает в себя Apache и MySQL сервер, практически не требует настройки после установки. Нужно будет изменить: 1) Язык интерфейса в конфигурации EasyPHP (по умолчанию - французский); 2) В http.conf (В меню называется Configuration->Apache) в строках DocumentRoot "" и чуть ниже прописать путь к той папке на диске, которая станет корневой для сайта. Книгу не подскажу, сам по электронным справочникам разбирался, что чаще всего рекомендуется, так как PHP - постоянно развивающийся язык, поэтому настоятельно рекомендуются электронные справочники с комментариями веб-мастеров (php4rus) хороший справочник на http://script-info.net/ Ответ отправлен: 31.01.2004, 01:05 Отправитель: Tano Отвечает Pawel
Приветствую Вас, Дмитрий! RTFM Тема рассылки: "RusFAQ.ru: Программирование на C++ Builder / Delphi" Ответ отправлен: 31.01.2004, 13:30 Отправитель: Pawel
Вопрос № 1290
Нашел в интернете сайт который предлагает программу для защиты собственных разработок. StarForce Soft 3.0. На сайте нет цены, на софтекее эта программа не представлена. Может кто знает сколько стоит эта программа
Приветствую Вас, Дмитрий! И каким боком Ваш вопрос относится к Delphi/Builder? Ответ отправлен: 31.01.2004, 04:11 Отправитель: sir henry Отвечает Pawel
Приветствую Вас, Дмитрий! StarForce Soft 3.0. - программа(библиотека) для защиты дисков от копирования. Насколько мне известно зашита StarForce Soft 3.0 предпологает не стандартный способ прожига диска, невозможный в домашних условиях. Но каким местом это относится к " Программирование на C++ Builder / Delphi" Ответ отправлен: 31.01.2004, 13:29 Отправитель: Pawel
Вопрос № 1291
Почему когда я хочу из Дельфы запустить прогу, пишет типа Debugger Kernel BORDDBK70.DLL is missing or not registered!
Добрый день, Kirill! U tebya ili setup delphi ne v poryadke, ili je ti chto to ster. Ispolzuy WinExec, ili je ShellExecute iz ShellAPI (unit takoy) Ответ отправлен: 31.01.2004, 11:06 Отправитель: THE_PRO Отвечает sir henry
Доброе время суток, Kirill! Скорее всего так и есть :)). Т.е. Вы компилируете программу с добавлением информации для debug. По всей видимости у Вас или поврежедна эта DLL или Delphi установлен неправильно. Переустановите Дельфи. Ответ отправлен: 31.01.2004, 04:14 Отправитель: sir henry Отвечает samum2000
Доброе время суток, Kirill! Потомучто библиотека BORDDBK70.DLL отсутствует (а может битая), вот Delphi и ругается. Только зачем ему такая? Кстати, у меня она тоже не установлена, но в файлах установки я такую нашел, поэтому если сильно надо - могу поделиться. Попутного ветра! Ответ отправлен: 02.02.2004, 13:53 Отправитель: samum2000 Отвечает Pawel
Здравствуйте, Kirill! У вас повреждена или отсутствует библиотека отладчика BORDDBK70.DLL. Переустановите delphi Ответ отправлен: 31.01.2004, 13:25 Отправитель: Pawel
Вопрос № 1292
Здравствуйте, уважаемые эксперты! У меня такой вопрос. Когда программа, написанная на Delphi, производит какие-то действия (например, вычисление числа "пи" до энного знака после запятой), она становится недоступной для пользователя. Хотелось бы добавить возможность прервать действие в любой момент, но как это сделать? Мне тут в другом месте посоветовали использовать Application.ProcessMessages - кто-нибудь знает, что это за зверь, и с чем его едят?
Приветствую Вас, Русских Денис! Ну ставишь его перед твоим тормозящим кодом, можешь и после поставить. Ответ отправлен: 31.01.2004, 12:27 Отправитель: CJ Отвечает THE_PRO
Приветствую Вас, Русских Денис! On posilayet "Win Msg" oknam i oni prerivayut rabotu progi.
Ответ отправлен: 31.01.2004, 11:05 Отправитель: THE_PRO Отвечает Tano
Приветствую Вас, Русских Денис! Application.ProcessMessages; необходимо написать внутри цикла вычислений, только так, чтобы она вызывалась не каждый шаг цикла иначе вычисления будут сильно тормозиться. Я например так (допустим i - счетчик в цикле, можно специально ввести свой отдельный счетчик): if (i mod 1000)=0 then Application.ProcessMessages; - обработка на каждой 1000-й интерации цикла Эта процедура вызывает обработчик системных собщений к форме, а пока твой цикл считает, сообщения форме накапливаются (такие как нажатые клавиши, команда перерисовки формы и пр.) Ответ отправлен: 31.01.2004, 10:06 Отправитель: Tano Отвечает Pawel
Доброе время суток, Русских Денис! Когда вы работаете в delphi с формами (Tform) то сушествует такой класс, как application, предоставляющий определённые возможности. Application.ProcessMessages - обновление, перерисовка окна, обработка всеш сообшений окна. Позволяет работать с формой при работе цикла(см. прил.)
Приложение: Ответ отправлен: 31.01.2004, 13:22 Отправитель: Pawel Отвечает samum2000
Добрый день, Русских Денис! Этот метод приостанавливает выполнение задачи для обработки всех сообщений Windows, которые накопились к текущему моменту, когда очередь сообщений становится пустой, он возвращает обработку процедуре. Например, если ты заполняешь в цикле Listbox большим количеством значений, то во время работы цикла ты не сможешь изменять размеры формы, прокручивать свой scrollbox и т.п. Если в цикл добавить строку Application.ProcessMessages; то ты сможешь выполнять все вышеописанные действия, т.к. программа остановит выполнение цикла, обработает сообщения, и продолжит выполнение цикла. Попутного ветра! Ответ отправлен: 02.02.2004, 13:50 Отправитель: samum2000 Отвечает Bob Johnson
Здравствуйте, Русских Денис! 1. Используй второй поток для трудоемких вычислений - это наиболее правильный путь. Тогда основной поток продолжает обрабатывать сообщения и программа не "виснет". 2. Да, используй processmessages - когда ты вызываешь эту функцию, твоя программа обрабатывает все сообщения, находящиеся в очереди на данный момент. Если ты будешь делать это регулярно (например, 10 раз в секунду), то программа не будет зависать.
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 31.01.2004, 22:54 Отправитель: Bob Johnson Отвечает Boriss
Добрый день, Русских Денис! Лучше всего в таких случаях использовать потоки Thread (класс TTHread). Есть описание во всех учебниках и в примерах. Идея виндовской многопоточности - каждая программа (сама поток) может создавать потоки, каждый из которых выполняется отдельно. То есть, создаете поток и поручаете ему вычисления, а в это время основной поток делает еще что-то. Хорошей практикой является: поток должен работать с "локальной" копией данных. Программа тогда может их менять
Ответ отправлен: 02.02.2004, 09:16 Отправитель: Boriss
Вопрос № 1293
Добрый вечер! Столкнулся с такой проблемой, требуется помощь. Делфи 5 , функция FileExists - при размещении файла по пути в стандарте DOS (не более одного слова в имени директории) все работает на отлично, но только путь становиться в виде C:Documents and SettingsАдминистраторМои документытарам-пам-пам.... все! False при любом раскладе , что есть по пути файл что его нет :( Help me, please!
Добрый день, sergey! Попробуй передавать длинный путь, заключая его в двойные кавычки. Ответ отправлен: 31.01.2004, 21:16 Отправитель: Tano Отвечает Pawel
Здравствуйте, sergey! Используй WinExec(fileName,SW_...) или ShellExecute(hwnd,0,FileName,0,0,sw_...); Ответ отправлен: 31.01.2004, 20:15 Отправитель: Pawel Отвечает sir henry
Здравствуйте, sergey! А Вы ничего не путаете? Я для проверки собрал такую программку (см. приложение) и у меня все в порядке, работает как с длинными именами, так и с короткими :). Вы кодировку русских символов, случайно, не путаете? Т.е. вместо ср1251 по-русски не dos866 применяете?
Приложение: Ответ отправлен: 02.02.2004, 09:14 Отправитель: sir henry Отвечает THE_PRO
Доброе время суток, sergey! Eto potomu chto ti rabotayesh v WinNT! A vot vopros ya tak i ne ponyal...!
Ответ отправлен: 02.02.2004, 10:27 Отправитель: THE_PRO Отвечает Boriss
Приветствую Вас, sergey! Странно, никогда такой бяки не замечал. Сейчас у меня 7-ой, специально проверил, все работает нормально. Может слэши забываете? Ответ отправлен: 03.02.2004, 12:59 Отправитель: Boriss
Вопрос № 1294
Как по нажатии на кнопку изменить системную дату на 10 дней назад, а по нажатии на вторую вперед!
Здравствуйте, Кирилл! GetSystemTime и SetSystemTime.
* EMan1.5: ---===*** The game we play ***===---
Ответ отправлен: 01.02.2004, 13:45 Отправитель: Bob Johnson Отвечает samum2000
Доброе время суток, Кирилл! См. функцию в приложении. Только там надо делать поправочку на текущий часовой пояс (например, у меня GMT+6, значит отнять надо 6).
Приложение: Ответ отправлен: 02.02.2004, 13:50 Отправитель: samum2000 Отвечает vitya
Здравствуйте, Кирилл! Функция SetSystemTime к вашим услугам. Ответ отправлен: 01.02.2004, 11:44 Отправитель: vitya Отвечает sir henry
Доброе время суток, Кирилл! Установка системного времени: function SetLocalTime(const lpSystemTime: TSystemTime): BOOL; TSystemTime = record wYear: Word; wMonth: Word; wDayOfWeek: Word; wDay: Word; wHour: Word; wMinute: Word; wSecond: Word; wMilliseconds: Word; end; Структура TSystemTime просто превосходна, по сравнению с родной паскалевской и без всякого напряга позволяет проводить любые вычисления с временем. Получить системное время: procedure GetLocalTime(var lpSystemTime: TSystemTime); Ответ отправлен: 02.02.2004, 10:44 Отправитель: sir henry Отвечает Boriss
Здравствуйте, Кирилл! Меняет системное время и дату функция SetSystemTime. Для нее нужно время и дата в своем формате. Есть в SysUtils для этого: procedure DateTimeToSystemTime(DateTime: TDateTime; var SystemTyme: TSystemTime); А можно, например и так, как в приложении
Приложение: Ответ отправлен: 03.02.2004, 13:16 Отправитель: Boriss
Форма отправки вопроса
Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+
или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.