Конференция "KOL" » Про KolService [Delphi]
 
  • Александр 2006 (17.12.07 10:46) [0]
    KolService использует это:

    Uses UWrd;

    А где его взять?
  • Jon © (17.12.07 11:39) [1]
  • Dimaxx © (17.12.07 11:40) [2]
    Он короткий, поэтому кладу в виде поста:

    unit UWrd;

    interface

    function  words  (str:string;d:char):integer;
    function  wordn  (str:string;d:char;n:integer):string ;
    function  wordd  (str:string;d:char;n:integer):string ;
    function  wordp  (str:string;d:char;n:integer):integer;
    function  wordi  (wrd,str:string;d:cHar):boolean;
    function  wordf  (str:string;d:char;n:integer):string ;

    implementation

    function  words;
    var tempstr : string;
           ins : boolean;
           i,j : integer;
    begin
      tempstr := d + str + d;
      ins     := false;
      j       := 0;
      for i := 1 to length(tempstr) do begin
         if ins then
            if tempstr[i] =d then ins:=false
                             else begin end
                else
         if tempstr[i]<>d then begin
            inc(j);ins:=true;
         end;
      end;
      words:=j;
    end;

    function  wordn;
    var i,j:integer;
    tempstr:string;
    begin
      i:=words(str, d);
      if i<n then begin
         wordn:='';
         exit;
      end;
      i:=1;
      while words(copy(str,1,i), d)<n do inc(i);
      j:=i;
      tempstr:=str+d;
      while tempstr[j]<>d do inc(j);
      wordn:=copy(str,i,j-i);
    end;

    function  wordd;
    var i,j:integer;
       sss:string;
    tempstr:string;
    begin
      i:=words(str, d);
      if i<n then begin
         wordd:=str;
         exit;
      end;
      i:=1;
      while words(copy(str,1,i), d)<n do inc(i);
      j:=i;
      tempstr:=str+d;
      while tempstr[j]<>d do inc(j);
      sss  :=copy(str,1,i-1);
      wordd:=sss+copy(str,j+1,length(tempstr)-j);
    end;

    function  wordp;
    var i:integer;
    begin
      i:=words(str, d);
      if i < n then begin
         wordp := 0;
         exit;
      end;
      i:=1;
      while words(copy(str,1,i), d)<n do inc(i);
      wordp   := i;
    end;

    function wordi;
    var i : integer;
    begin
      wordi := true;
      for i := 1 to words(str, d) do
         if wrd = wordn(str, d, i) tHen exit;
      wordi := false;
    end;

    function wordf;
    var i: integer;
    begin
      i := wordp(str, d, n);
      wordf := '';
      if (i > 0) and (i < length(str)) then
         wordf := copy(str, i, length(str) - i + 1);  
    end;

    end.

  • Александр 2006 (17.12.07 14:30) [3]
    Спасибо за помощь, но теперь при компиляции выдается ошибка:

    procedure AfterGeneratePAS( SL: TStringList ); override;

    differs from previous declaration.

    Смотрю предка - он TKOLDataModule, там оно выглядит как

    function AfterGeneratePAS( SL: TStringList ):Boolean; override; -
    что-то такое.
    Меняю по тексту это дело.

    Тогда ругается на inherited в TKOLServiceEx.AfterGeneratePAS - несовместимые типы.

    Что-то не то наверно делаю изначально? Как надо сделать?
  • Jon © (17.12.07 15:39) [4]
    procedure AfterGeneratePAS
    function AfterGeneratePAS

    That is wrong :-(
    Download again from:

    http://kolmck.net/Components/KOLService.zip
  • Александр 2006 (17.12.07 16:00) [5]
    >Download again from...

    Ничего не поменялось:

    [Error] mckService.pas(59): Declaration of 'AfterGeneratePAS' differs from previous declaration
  • Barloggg (17.12.07 17:53) [6]
    ребилдолу прими.
  • Дмитрий К © (17.12.07 18:08) [7]

    > Тогда ругается на inherited в TKOLServiceEx.AfterGeneratePAS
    > - несовместимые типы.

    inherited AfterGeneratePAS(SL);

  • Александр 2006 (18.12.07 11:12) [8]
    > ребилдолу прими.
    Это я не знаю что такое. Звиняйте...

    > inherited AfterGeneratePAS(SL);
    А вот это помогло. Всё работает, спасибо (собственно, это очевидно - просто давно не лазил в Delphi, поэтому малость туплю).
  • Александр 2006 (18.12.07 15:16) [9]
    P.S.
    Всё классно, но вот одна неприятность: если запускать службу не с учётной записью LocalSystem, а какого-нибудь реального пользователя (ну, например, чтобы она имела доступ к UNC - ресурсу на чужом диске), то ни окошек нет (что в демке к KolService), ни кнопка остановки в окне "Службы" не активна, т.е. её вообще нельзя остановить. Чего-то всё-таки не хватает по сравнению с "традиционными" службами.
    Как подправить? Кто-нибудь может разбирался?
 
Конференция "KOL" » Про KolService [Delphi]
Есть новые Нет новых   [134431   +10][b:0][p:0.002]