Le patron de la chaîne de correspondance


Il y a beaucoup de moments où vous avez besoin de comparer deux chaînes de caractères, mais vous voulez utiliser des cartes sauvages dans le match - tous les noms qui commencent par 'St', etc ...
Intervenant: DAVID STIDOLPH
voici un bout de code que j'ai reçu de Sean Stanley à Tallahassee en Floride, en C. je l'ai traduit en Delphi am en le téléchargeant ici à l'usage de tous. Je ne l'ai pas testé extensivly, mais la fonction d'origine a été testé assez thoughly.
j'aimerais des commentaires sur cette routine ou les peuples des modifications. Je veux transmettre à Sean pour obtenir de lui la libération de plus d'anecdotes de ce genre.
{
& nbsp & nbsp Cette fonction prend deux chaînes de caractères et les compare. La première chaîne
& nbsp & nbsp peut être n'importe quoi, mais ne doit pas contenir de motif de caractères (* ou ?).
& nbsp & nbsp La chaîne de modèle peut avoir autant de ces motif de personnages que vous le souhaitez.
& nbsp & nbsp Par exemple: MatchStrings (David Stidolph','*St*') return True.
& nbsp & nbsp Originale code par Sean Stanley en C
& nbsp & nbsp Réécrit en Delphi par David Stidolph
}
fonction de MatchStrings(source, modèle: String): Boolean
var
& nbsp & nbsp pSource: Array [0..255] de Char
& nbsp & nbsp pPattern: Array [0..255] de Char
& nbsp & nbsp fonction MatchPattern(élément, modèle: PChar): Boolean
& ! & ! & ! & nbsp fonction IsPatternWild(modèle: PChar): Boolean
& ! & ! & ! & nbsp var
& ! & ! & ! & ! & ! & nbsp t: Entier
& ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & nbsp Résultat := StrScan(pattern,'*') <> nil

& ! & ! & ! & ! & ! & nbsp si pas de Résultat, alors Result := StrScan(pattern,'?') <> nil
& ! & ! & ! & nbsp fin
& nbsp & nbsp commencer
& ! & ! & ! & nbsp si 0 = StrComp(pattern,'*')
& ! & ! & ! & ! & ! & nbsp Result := True
& ! & ! & ! & nbsp else if (element^ = Chr(0)) et (pattern^ <> Chr(0)) then
& ! & ! & ! & ! & ! & nbsp Result := False
& ! & ! & ! & nbsp else if^ = Chr(0),
& ! & ! & ! & ! & ! & nbsp Résultat := True
& ! & ! & ! & nbsp else begin
& ! & ! & ! & ! & ! & nbsp cas de motif^
& ! & ! & ! & ! & ! & ! '*': si MatchPattern(élément,@pattern[1])
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp Résultat := True
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp else
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp Résultat := MatchPattern(@element[1],modèle)
& ! & ! & ! & ! & ! & ! '?': Résultat := MatchPattern(@element[1],@pattern[1])
& ! & ! & ! & ! & ! & nbsp else
& ! & ! & ! & ! & ! & ! & ! & nbsp si l'élément^ = motif^
& ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp Résultat := MatchPattern(@element[1],@pattern[1])
& ! & ! & ! & ! & ! & ! & ! & nbsp else
& ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp Résultat := False
& ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & nbsp fin
& nbsp & nbsp fin
begin
& nbsp & nbsp StrPCopy(pSource,source)
& nbsp & nbsp StrPCopy(pPattern,modèle)
& nbsp & nbsp Résultat := MatchPattern(pSource,pPattern)
fin









Le patron de la chaîne de correspondance


Le patron de la chaîne de correspondance : Plusieurs milliers de conseils pour vous faciliter la vie.


Il y a beaucoup de moments ou vous avez besoin de comparer deux chaînes de caracteres, mais vous voulez utiliser des cartes sauvages dans le match - tous les noms qui commencent par 'St', etc ...
Intervenant: DAVID STIDOLPH
voici un bout de code que j'ai reçu de Sean Stanley a Tallahassee en Floride, en C. je l'ai traduit en Delphi am en le telechargeant ici a l'usage de tous. Je ne l'ai pas teste extensivly, mais la fonction d'origine a ete teste assez thoughly.
j'aimerais des commentaires sur cette routine ou les peuples des modifications. Je veux transmettre a Sean pour obtenir de lui la liberation de plus d'anecdotes de ce genre.
{
& nbsp & nbsp Cette fonction prend deux chaînes de caracteres et les compare. La premiere chaîne
& nbsp & nbsp peut etre n'importe quoi, mais ne doit pas contenir de motif de caracteres (* ou ?).
& nbsp & nbsp La chaîne de modele peut avoir autant de ces motif de personnages que vous le souhaitez.
& nbsp & nbsp Par exemple: MatchStrings (David Stidolph','*St*') return True.
& nbsp & nbsp Originale code par Sean Stanley en C
& nbsp & nbsp Reecrit en Delphi par David Stidolph
}
fonction de MatchStrings(source, modele: String): Boolean
var
& nbsp & nbsp pSource: Array [0..255] de Char
& nbsp & nbsp pPattern: Array [0..255] de Char
& nbsp & nbsp fonction MatchPattern(element, modele: PChar): Boolean
& ! & ! & ! & nbsp fonction IsPatternWild(modele: PChar): Boolean
& ! & ! & ! & nbsp var
& ! & ! & ! & ! & ! & nbsp t: Entier
& ! & ! & ! & nbsp commencer
& ! & ! & ! & ! & ! & nbsp Resultat := StrScan(pattern,'*') <> nil

& ! & ! & ! & ! & ! & nbsp si pas de Resultat, alors Result := StrScan(pattern,'?') <> nil
& ! & ! & ! & nbsp fin
& nbsp & nbsp commencer
& ! & ! & ! & nbsp si 0 = StrComp(pattern,'*')
& ! & ! & ! & ! & ! & nbsp Result := True
& ! & ! & ! & nbsp else if (element^ = Chr(0)) et (pattern^ <> Chr(0)) then
& ! & ! & ! & ! & ! & nbsp Result := False
& ! & ! & ! & nbsp else if^ = Chr(0),
& ! & ! & ! & ! & ! & nbsp Resultat := True
& ! & ! & ! & nbsp else begin
& ! & ! & ! & ! & ! & nbsp cas de motif^
& ! & ! & ! & ! & ! & ! '*': si MatchPattern(element,@pattern[1])
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp Resultat := True
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp else
& ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp Resultat := MatchPattern(@element[1],modele)
& ! & ! & ! & ! & ! & ! '?': Resultat := MatchPattern(@element[1],@pattern[1])
& ! & ! & ! & ! & ! & nbsp else
& ! & ! & ! & ! & ! & ! & ! & nbsp si l'element^ = motif^
& ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp Resultat := MatchPattern(@element[1],@pattern[1])
& ! & ! & ! & ! & ! & ! & ! & nbsp else
& ! & ! & ! & ! & ! & ! & ! & ! & ! & nbsp Resultat := False
& ! & ! & ! & ! & ! & nbsp fin
& ! & ! & ! & nbsp fin
& nbsp & nbsp fin
begin
& nbsp & nbsp StrPCopy(pSource,source)
& nbsp & nbsp StrPCopy(pPattern,modele)
& nbsp & nbsp Resultat := MatchPattern(pSource,pPattern)
fin


Le patron de la chaîne de correspondance

Le patron de la chaîne de correspondance : Plusieurs milliers de conseils pour vous faciliter la vie.
Recommander aux amis
  • gplus
  • pinterest

Messages récents

Commentaire

Laisser un commentaire

évaluation