MODULE test12; IMPORT strUtils, InOut, Strings; CONST CR = 0DH; LF = 0AH; VAR chaine : ARRAY[0..15] OF CHAR; taille, longueur : CARDINAL; i : CARDINAL; PROCEDURE testassign; BEGIN END testassign; PROCEDURE testpos; BEGIN END testpos; PROCEDURE testappendLFCR; BEGIN (* test des valeurs *) InOut.WriteHex(0DH,2); InOut.WriteLn; InOut.WriteHex(0AH,2); InOut.WriteLn; InOut.WriteHex(0CH,2); InOut.WriteLn; (* we have several cases here : - the length of the string is <= length of the array -3 so, we have space to append the 3 endline characters - the length of the array is not long enough : so, we do nothing, but there are more solutions available *) InOut.WriteString("test1 : y'a de la place"); InOut.WriteLn; chaine := "et voila"; longueur := Strings.Length(chaine); taille := HIGH(chaine); InOut.WriteCard(longueur,5); InOut.WriteLn; InOut.WriteCard(taille,5); InOut.WriteLn; strUtils.appendLFCR(chaine); FOR i := 0 TO longueur -1 DO IF chaine[i] = 0C THEN InOut.WriteString("0C"); ELSIF chaine[i] = CHR(LF) THEN InOut.WriteString("LF"); ELSIF chaine[i] = CHR(CR) THEN InOut.WriteString("CR"); ELSE InOut.Write(chaine[i]); END; END; InOut.WriteLn; END testappendLFCR; PROCEDURE testisalnum; BEGIN InOut.WriteString("test IN "); InOut.WriteLn; InOut.WriteString("test isalnum"); chaine := "estvoila"; InOut.WriteLn; IF strUtils.isalnum(chaine) THEN InOut.WriteString("tout est alphanum"); ELSE InOut.WriteString("Y'a un caractère étranger"); END; InOut.WriteLn; chaine := "sdkjhqslkf#$"; IF strUtils.isalnum(chaine) THEN InOut.WriteString("tout est alphanum"); ELSE InOut.WriteString("Y'a un caractère étranger"); END; InOut.WriteLn; END testisalnum; PROCEDURE testisalpha; BEGIN InOut.WriteString("test isalpha"); chaine := "estvoila"; InOut.WriteLn; IF strUtils.isalpha(chaine) THEN InOut.WriteString("tout est alpha"); ELSE InOut.WriteString("Y'a un caractère étranger"); END; InOut.WriteLn; chaine := "sdkjhqs1"; IF strUtils.isalpha(chaine) THEN InOut.WriteString("tout est alpha"); ELSE InOut.WriteString("Y'a un caractère étranger"); END; InOut.WriteLn; END testisalpha; PROCEDURE testisascii; BEGIN InOut.WriteString("test isascii"); chaine := "estvoila"; InOut.WriteLn; IF strUtils.isalpha(chaine) THEN InOut.WriteString("tout est ascii"); ELSE InOut.WriteString("Y'a un caractère étranger"); END; InOut.WriteLn; chaine := "sdkjùhqs"; IF strUtils.isalpha(chaine) THEN InOut.WriteString("tout est ascii"); ELSE InOut.WriteString("Y'a un caractère étranger"); END; InOut.WriteLn; END testisascii; PROCEDURE testisdigit; BEGIN InOut.WriteString("test isdigit"); chaine := "12345"; InOut.WriteLn; IF strUtils.isdigit(chaine) THEN InOut.WriteString("tout est digit"); ELSE InOut.WriteString("Y'a un caractère étranger"); END; InOut.WriteLn; chaine := "123m45"; IF strUtils.isdigit(chaine) THEN InOut.WriteString("tout est digit"); ELSE InOut.WriteString("Y'a un caractère étranger"); END; InOut.WriteLn; END testisdigit; PROCEDURE testisidentifier; BEGIN InOut.WriteString("test isidentifier"); chaine := "estvoila"; InOut.WriteLn; IF strUtils.isalpha(chaine) THEN InOut.WriteString("tout est alpha"); ELSE InOut.WriteString("Y'a un caractère étranger"); END; InOut.WriteLn; chaine := "sdkjhqs1"; IF strUtils.isalpha(chaine) THEN InOut.WriteString("tout est alpha"); ELSE InOut.WriteString("Y'a un caractère étranger"); END; InOut.WriteLn; END testisidentifier; PROCEDURE testislower; BEGIN InOut.WriteString("test islower"); chaine := "estvoila"; InOut.WriteLn; IF strUtils.isalpha(chaine) THEN InOut.WriteString("tout est alpha"); ELSE InOut.WriteString("Y'a un caractère étranger"); END; InOut.WriteLn; chaine := "sdkjhqs1"; IF strUtils.isalpha(chaine) THEN InOut.WriteString("tout est alpha"); ELSE InOut.WriteString("Y'a un caractère étranger"); END; InOut.WriteLn; END testislower; PROCEDURE testisprintable; BEGIN InOut.WriteString("test isprintable"); chaine := "estvoila"; InOut.WriteLn; IF strUtils.isalpha(chaine) THEN InOut.WriteString("tout est alpha"); ELSE InOut.WriteString("Y'a un caractère étranger"); END; InOut.WriteLn; chaine := "sdkjhqs1"; IF strUtils.isalpha(chaine) THEN InOut.WriteString("tout est alpha"); ELSE InOut.WriteString("Y'a un caractère étranger"); END; InOut.WriteLn; END testisprintable; PROCEDURE testisspace; BEGIN InOut.WriteString("test isspace"); chaine := "estvoila"; InOut.WriteLn; IF strUtils.isalpha(chaine) THEN InOut.WriteString("tout est alpha"); ELSE InOut.WriteString("Y'a un caractère étranger"); END; InOut.WriteLn; chaine := "sdkjhqs1"; IF strUtils.isalpha(chaine) THEN InOut.WriteString("tout est alpha"); ELSE InOut.WriteString("Y'a un caractère étranger"); END; InOut.WriteLn; END testisspace; PROCEDURE testistitle; BEGIN InOut.WriteString("test istitle"); chaine := "Et Voila"; InOut.WriteLn; IF strUtils.istitle(chaine) THEN InOut.WriteString("C'est un titre"); ELSE InOut.WriteString("Ce n'est pas un titre"); END; InOut.WriteLn; chaine := "Sdkj hqs1"; IF strUtils.istitle(chaine) THEN InOut.WriteString("C'est un titre"); ELSE InOut.WriteString("Ce n'est pas un titre"); END; InOut.WriteLn; END testistitle; PROCEDURE testisupper; BEGIN InOut.WriteString("test isupper"); chaine := "VOILAUNECHAINE"; InOut.WriteLn; IF strUtils.isupper(chaine) THEN InOut.WriteString("tout est upcase"); ELSE InOut.WriteString("Y'a un caractère en basse casse"); END; InOut.WriteLn; chaine := "VOILA UNE CHAINE"; IF strUtils.isupper(chaine) THEN InOut.WriteString("tout est upcase"); ELSE InOut.WriteString("Y'a un caractère en basse casse"); END; InOut.WriteLn; END testisupper; PROCEDURE testcopy; (*PROCEDURE Copy(VAR Ns: ARRAY OF CHAR; S: ARRAY OF CHAR);*) VAR src1 : ARRAY [0..9] OF CHAR; src2 : ARRAY [0..12] OF CHAR; src3 : ARRAY [0..5] OF CHAR; dst : ARRAY [0..9] OF CHAR; BEGIN (* plusieurs cas : - chaines égales - src > destination - src < destination *) InOut.WriteString(" chaines égales"); InOut.WriteLn; src1 := "1234567890"; InOut.WriteString("chaine origine : "); InOut.WriteString(src1); InOut.WriteLn; strUtils.Copy(dst,src1); InOut.WriteString("chaine destination : "); InOut.WriteString(dst); InOut.WriteLn; InOut.WriteLn; InOut.WriteLn; InOut.WriteString(" source > destination"); InOut.WriteLn; src2 := "1234567890abc"; strUtils.Copy(dst,src2); InOut.WriteString(src2); InOut.WriteLn; InOut.WriteString(dst); InOut.WriteLn; InOut.WriteLn; InOut.WriteLn; InOut.WriteString(" source < destination"); InOut.WriteLn; src3 := "123456"; strUtils.Copy(dst,src3); InOut.WriteString(src3); InOut.WriteLn; InOut.WriteString(dst); InOut.WriteLn; END testcopy; BEGIN (*testcopy;*)(* works fine *) (* testisupper;*)(* works fine *) testistitle; END test12.