-
KolService использует это:
Uses UWrd;
А где его взять?
-
-
Он короткий, поэтому кладу в виде поста: 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.
-
Спасибо за помощь, но теперь при компиляции выдается ошибка:
procedure AfterGeneratePAS( SL: TStringList ); override;
differs from previous declaration.
Смотрю предка - он TKOLDataModule, там оно выглядит как
function AfterGeneratePAS( SL: TStringList ):Boolean; override; - что-то такое. Меняю по тексту это дело.
Тогда ругается на inherited в TKOLServiceEx.AfterGeneratePAS - несовместимые типы.
Что-то не то наверно делаю изначально? Как надо сделать?
-
-
>Download again from...
Ничего не поменялось:
[Error] mckService.pas(59): Declaration of 'AfterGeneratePAS' differs from previous declaration
-
ребилдолу прими.
-
> Тогда ругается на inherited в TKOLServiceEx.AfterGeneratePAS > - несовместимые типы.
inherited AfterGeneratePAS(SL);
-
> ребилдолу прими. Это я не знаю что такое. Звиняйте...
> inherited AfterGeneratePAS(SL); А вот это помогло. Всё работает, спасибо (собственно, это очевидно - просто давно не лазил в Delphi, поэтому малость туплю).
-
P.S. Всё классно, но вот одна неприятность: если запускать службу не с учётной записью LocalSystem, а какого-нибудь реального пользователя (ну, например, чтобы она имела доступ к UNC - ресурсу на чужом диске), то ни окошек нет (что в демке к KolService), ни кнопка остановки в окне "Службы" не активна, т.е. её вообще нельзя остановить. Чего-то всё-таки не хватает по сравнению с "традиционными" службами. Как подправить? Кто-нибудь может разбирался?
|