SU.OS2.FAQ--------------- < Пред. | След. > -- < @ > -- < Сообщ. > -- < Эхи > --
 Nп/п : 39 из 100
 От   : FAQServer                           2:5020/181        24 мар 25 07:37:06
 К    : All                                                   24 мар 25 07:41:01
 Тема : PRG49 - Сопоставление с шаблоном. Звёздочки, вопpосики. Паскаль.
----------------------------------------------------------------------------------
                                                                                 
@MSGID: 2:5020/181 8a7b5ec4
@RFC-Message-ID: 1@mhm.com.lan>
@TZUTC: 0300
[Q]: Сопоставление с шаблоном. Звёздочки, вопpосики. Паскаль.

[A]: Vadim Rumyantsev (2:5030/301)


UNIT UslPatrn;



INTERFACE



function MatchLineOk (pattern, line : string) : boolean;
function MatchFileOk (pattern, name : string) : boolean;



IMPLEMENTATION



uses Dos;



function MatchLineOk;



function SubOk (ppos, lpos : byte) : boolean;

begin

  if ppos > length (pattern) then
    SubOk := lpos > length (line)
  else if lpos > length (line) then
    SubOk := (pattern [ppos] = `*`) and SubOk (ppos+1, lpos)
  else if pattern [ppos] = `*` then begin
    SubOk := false;
    for lpos := length (line) + 1 downto lpos do
      if SubOk (ppos+1, lpos) then begin
        SubOk := true;
        break
      end
  end
  else
    SubOk := ((pattern [ppos] = `?`) or
              (pattern [ppos] = line [lpos])) and
             SubOk (ppos+1, lpos+1)

end;



begin

  MatchLineOk := SubOk (1, 1)

end;



function MatchFileOk;

var
  pd, nd : DirStr;
  pn, nn : NameStr;
  px, nx : ExtStr;

begin

  FSplit (pattern, pd, pn, px);
  FSplit (name,    nd, nn, nx);

  MatchFileOk := ((pd = ``) or (pd = nd)) and
                 MatchLineOk (pn, nn) and
                 MatchLineOk (px, nx)

end;



END.
 
--- INN 2.7.3 (20250201 prerelease)
 * Origin: This echo is READ-ONLY. Send %HELP to FAQSERVER at (2:5020/181)
SEEN-BY: 4500/1 5001/100 5019/40 5020/77 81 101
181 545 848 1042 1941 1955
SEEN-BY: 5020/4441 8086 12000 5030/1081 1900
5060/900 5097/31 6090/1
@PATH: 5020/181 12000 4441



   GoldED+ VK   │                                                 │   09:55:30    
                                                                                
В этой области больше нет сообщений.

Остаться здесь
Перейти к списку сообщений
Перейти к списку эх