============================================================== Dokumentation zum Modul PatMatch © Bernd Preusing 10-Feb-90 ============================================================== Copyright: ~~~~~~~~~~ Autor dieses Moduls ist Bernd Preusing, Gerhardstr. 16, D-2200 Elmshorn. Dies Modul ist public domain. Es darf nicht ohne meine ausdrückliche Erlaubnis zu kommerziellen Zwecken verwendet werden. Kommerzieller Zweck ist auch der Vertrieb von PD-Disketten für mehr als 8,- DM! Sinn des Moduls: ~~~~~~~~~~~~~~~~ Hiermit kann ein sog. Pattern Matching durchgeführt werden, wie es z.B. von vielen AmigaDos-Programmen bekannt ist. Dies ist meines Wissens das erste M2Amiga-Modul, das 100% kompatibel zu AmigaDos ist. Benutzung des Moduls: ~~~~~~~~~~~~~~~~~~~~~ Die Prozedur CmplPat generiert aus einem Muster ein internes Format, das von der Prozedur Match benötigt wird. Sie braucht für jedes Muster nur einmal aufgerufen zu werden, danach kann beliebig oft mit verschiedenen Vergleichsstrings Match gerufen werden. Pattern ist ein beliebiges Wildcard-Muster, z.B. '#?.mod' oder '#?.(mod|def|obj|sym|ref)' usw. Der genaue Aufbau von Wildcards steht im AmigaDos-Handbuch. Aux ist eine Variable, in die das interne Format geschrieben wird. Sie sollte mindestens so groß wie der größte anzunehmende String sein. Falls FALSE zurückgegeben wird, ist Pattern kein gültiges Muster. PROCEDURE CmplPat(Pat:ARRAY OF CHAR; VAR Aux:ARRAY OF BYTE):BOOLEAN; Match benötigt die beiden Parameter von CmplPat, sowie den String, der auf 'Gleichheit' überprüft werden soll. RETURN-Wert ist TRUE, wenn Str ein gültiger Name für Pat ist, sonst FALSE. PROCEDURE Match(Pat:ARRAY OF CHAR; VAR Aux: ARRAY OF UByte; Str:ARRAY OF CHAR):BOOLEAN; Ein Beispiel: ~~~~~~~~~~~~~ FROM PatMatch IMPORT CmplPat, Match; VAR Buffer: ARRAY [0..100] OF CHAR; (* irgend etwas! *) Pat, Str: ARRAY [0..100] OF CHAR; ... ReadString(Pat); IF CmplPat(Pat,Buffer) THEN LOOP (* bis Stromausfall *) ReadString(Str); IF Match(Pat,Buffer,Str) THEN Write('Passt!') ELSE Write('Passt nicht!') END; END; ELSE Write('Kein gültiges Muster!'); END; ========================== cut ==================================