Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.06.2008, 21:46   #1
Pitbull
детский тренер
Форумчанин
 
Аватар для Pitbull
 
Регистрация: 08.06.2007
Сообщений: 532
По умолчанию проблема с службой

У меня такой вопрос... Я создаю службу(service) на ней располагаю idTCPServer. Хочу,чтобі ,если от клиента приходит определенная команда, то сделать запись в реестре...Но не могу это реализовать... Как-будто не передается фокус ..
вот пример
Код:
procedure TForm2.IdTCPServer1Execute(AThread: TIdPeerThread);
var
 zapros: string;
 i :integer;
begin

reg:=TRegistry.Create();
reg.RootKey:=HKEY_CURRENT_USER;

  begin
    //Читаем запрос
    zapros := ReadLn;
    //Если пользователь хочет разорвать соединение, то делаем это
    if SameText(zapros, 'Quit') then Disconnect
    else
        begin
              //Если пользователь прислал команду backup
     if SameText(Copy(zapros, 1, 7), 'backup ') then
         begin
            if reg.OpenKey('\Software\SQL_Org\Time',true) then
              for i:=0 to 100 do
                if reg.ValueExists(intToStr(i))=true then
                  begin
                      reg.WriteDateTime(intToStr(i),StrToDateTime ('17.06.08 14:46'));
                       break
                  end;
                 if reg.OpenKey('\Software\SQL_Org\doit',true) then
                    reg.WriteString(intToStr(i),'backup');

            end; //if

       end; //else
  writeln('--END backup--');
end;

Reg.CloseKey;
end;
Я злой и страФный серррый воФк, и в пАрАсятах знаю толк - ppp ppp pp p pp pp
Pitbull вне форума Ответить с цитированием
Старый 19.06.2008, 19:19   #2
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

Цитата:
zapros := ReadLn;
и откуда же строка читается ?
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 20.06.2008, 00:16   #3
Pitbull
детский тренер
Форумчанин
 
Аватар для Pitbull
 
Регистрация: 08.06.2007
Сообщений: 532
По умолчанию

ну, я ж написал, что у меня есть клиентская часть и есть серверная часть...
При конекте к серверу - отправляется ответ, с клиента делается запрос, вот я и пишу ReadLN .... Дело в том, что принимает строку, я ее могу вівести... А вот запись в реесть не дает ! не пишет!
Попробовал все тоже сделать,только расположл на форме, а не в службе - все пашет.... Голову ломаю уже 2 день!
Я злой и страФный серррый воФк, и в пАрАсятах знаю толк - ppp ppp pp p pp pp
Pitbull вне форума Ответить с цитированием
Старый 20.06.2008, 00:50   #4
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

Еще раз:
Цитата:
zapros := ReadLn;
и откуда возмется строка ? что читат оператор readln ?
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума Ответить с цитированием
Старый 20.06.2008, 21:38   #5
Pitbull
детский тренер
Форумчанин
 
Аватар для Pitbull
 
Регистрация: 08.06.2007
Сообщений: 532
По умолчанию

Вот сервернаячасть....
Код:
with mainForm.IdTCPClient1 do
 begin
   try
   Host:=organazer.ComboBox1.Text;

    Connect;

    //Выводим приветствие сервера
    otvet:=ReadLn;
    //Отправка запроса
     WriteLn(mainForm.ListView1.Items[mainForm.ListView1.Items.Count - 1].SubItems.Strings[1]);
     otvet := ReadLn;
     
     WriteLn(mainForm.ListView1.Items[mainForm.ListView1.Items.Count - 1].SubItems.Strings[2]);
      //Получение результата
      otvet := ReadLn;
      
      // перелаем имя базы
      WriteLn(organazer.ComboBox2.Text);
      otvet := ReadLn;

      //передаем тип запуска
      WriteLn('allday');
      otvet := ReadLn;
      //if otvet = '' then otvet:='Нет данных';


      //Разрываем соединение с сервером
    WriteLn('Quit');

    finally
      Disconnect;
    end;
 end;//With

alldays.close;

end;
понимаете, на форму вешаю сервер, то все работает... Вашаю на Сервис - не работает...

А вот серверная часть
Код:
 if SameText(zapros, 'Quit') then Disconnect
    else
        begin
             //Если пользователь прислал команду backup
     if SameText(Copy(zapros, 1,length(zapros)), 'Резервное копирование') then
         begin
         writeln('END записи задачи');
         zapros := ReadLn;//Время выполнения
         if reg.OpenKey('\Software\SQL_Org\Time',true) then

              for i:=1 to 100 do
                if reg.ValueExists(intToStr(i))=false then
                  begin
                      reg.WriteString(intToStr(i),zapros);
                       break
                  end;
                 if reg.OpenKey('\Software\SQL_Org\doit',true) then
                    reg.WriteString(intToStr(i),'Резервное копирование');
                    writeln('END backup');

                    zapros:= ReadLn;//имя базы
                     writeln('END BaseName');
                    if reg.OpenKey('\Software\SQL_Org\base',true) then
                        reg.WriteString(intToStr(i),zapros);

                    if reg.OpenKey('\Software\SQL_Org\Type',true) then
                   begin
                      zapros:= ReadLn;//тип запуска
                      reg.WriteString(intToStr(i),zapros);
                    end;
                    
            end; //if
Я злой и страФный серррый воФк, и в пАрАсятах знаю толк - ppp ppp pp p pp pp

Последний раз редактировалось Pitbull; 20.06.2008 в 21:42.
Pitbull вне форума Ответить с цитированием
Старый 21.06.2008, 14:58   #6
Баламут
Баламучу слегка...
Участник клуба
 
Аватар для Баламут
 
Регистрация: 01.11.2006
Сообщений: 1,585
По умолчанию

А как запускается сервис? Разрешить взаимодействие с раб. столом стоит?
Баламут вне форума Ответить с цитированием
Старый 22.06.2008, 19:08   #7
Pitbull
детский тренер
Форумчанин
 
Аватар для Pitbull
 
Регистрация: 08.06.2007
Сообщений: 532
По умолчанию

Цитата:
Сообщение от Баламут Посмотреть сообщение
А как запускается сервис? Разрешить взаимодействие с раб. столом стоит?
да стоит....
Ну я запускаю свой ехе с меткой /install , затем захожу в свойства службі , ставлю галочку управления рабочим столом...
Потом запускаю ее...(или interactive:=true)

Короче, если я пітаюсь сделать запись в реестре на собітии TService1.IdTCPServer1Connect либо TService1.IdTCPServer1Execute, то никакой записи в реестр не получается!!!

Я пробовал, по таймеру в службе делать запись в реестр - получается... Значит служба ж пишет в реестр... А вот из собітия
TService1.IdTCPServer1Connect либо TService1.IdTCPServer1Execute --- не получается
Я злой и страФный серррый воФк, и в пАрАсятах знаю толк - ppp ppp pp p pp pp

Последний раз редактировалось Pitbull; 22.06.2008 в 19:55.
Pitbull вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
И ещё проблема с DLL Altera Общие вопросы Delphi 7 25.06.2008 23:45
Проблема со службой... =LeonZone= Win Api 10 03.11.2007 14:21
проблема bill Свободное общение 7 08.07.2007 21:05
проблема с SQL 5.0.37 Pitbull БД в Delphi 0 15.06.2007 10:31