- Delphiartiklar, tips, forum, länksamling - 

      

START | DELPHI | LÄNKARGÄSTBOK 




 Forum

Grundkurs
  »Introduktion
  »Snabbguide
  »Komponenter
  »Händelser
  »Strängar
  »Räkna med Delphi   »Egna typer
  »Selektion
  »Iteration
  »Menyer
  »Funktioner
  »Arraystrukturer

Tips & Tricks
  »Nya tips
  »Blandat
  »Databaser
  »Filer
  »Forms
  »Grafik
  »Internet
  »Komponenter
  »Matematik
  »Multimedia
  »Objekt/ActiveX
  »Skrivare
  »Strängar
  »System
  »Mest lästa tips

Artiklar
  »Delphi och ADO
  »Bygga en DLL
  »Skapa en enkel rapport
  »Hantera registret
  »Enheter, units
  »Klassen TCanvas
  »Använd LookUp Controls

 Nya tips
 Lägg till tips
 Delphilänkar
 Gästbok

 

Matcha ett angivet mönster Kategori: Strängar
Inlagt: 2007-02-19
Läst: 1339
Inlagt av: Staffan Berg
Beskrivning
Denna funktion kontrollerar om en sträng matchar ett angivet mönster.
Kod
uses SysUtils; 
 
function IsLike(AString, Pattern: string ): boolean; 
var 
  j, n, n1, n2: integer ; 
  p1, p2: pchar ; 
label 
  match, nomatch; 
begin 
  AString := UpperCase(AString) ; 
  Pattern := UpperCase(Pattern) ; 
  n1 := Length(AString) ; 
  n2 := Length(Pattern) ; 
  if n1 < n2 then n := n1 else n := n2; 
  p1 := pchar(AString) ; 
  p2 := pchar(Pattern) ; 
  for j := 1 to n do begin 
   if p2^ = '*' then goto match; 
   if (p2^ <> '?') and ( p2^ <> p1^ ) then goto nomatch; 
   inc(p1) ; inc(p2) ; 
  end; 
  if n1 > n2 then begin 
nomatch:  
   Result := False; 
   exit; 
  end else if n1 < n2 then begin 
   for j := n1 + 1 to n2 do begin 
    if not ( p2^ in ['*','?'] ) then goto nomatch ; 
    inc(p2) ; 
   end; 
  end; 
match: 
  Result := True  
end; 
 
 
//anropas så här: 
if IsLike('About Delphi', 'Abo?? Delp*') then 
  ShowMessage('A match!') ; 

 
 
© Copyright 2005 - Staffan Berg
- Alla rättigheter förbehålles -