出现错误[Error] previously used here和[Error] duplicate case value怎么解决

wizardTNT 2023-02-27 20:40:59
#include <stdio.h>
#include <stdlib.h>

int main()
{int a,b,c;
printf("Enter date (mm/dd/yy) :");
scanf("%d/%d/%d",&a,&b,&c);
if (((c%1==0)&&(c>=1))&&((a%1==0)&&(a>=1 && a<=12))&&((b>=1 && b<=31)&&(b%1==0)))
{switch (a)
{case 1:        {switch(b)
case 1 :       printf("Dated this 1st day of January,%d",c);
break;
case 2:        printf("Dated this 2nd day of January,%d",c);
break;
case 3:        printf("Dated this 3rd day of January,%d",c);
break;
case 4:        printf("Dated this 4th day of January,%d",c);
break;
case 5:        printf("Dated this 5th day of January,%d",c);
break;
case 6:        printf("Dated this 6th day of January,%d",c);
break;
case 7:        printf("Dated this 7th day of January,%d",c);
break;
case 8:        printf("Dated this 8th day of January,%d",c);
break;
case 9:        printf("Dated this 9th day of January,%d",c);
break;
case 10:        printf("Dated this 10th day of January,%d",c);
break;
case 11:        printf("Dated this 11th day of January,%d",c);
break;
case 12:        printf("Dated this 12th day of January,%d",c);
break;
case 13:        printf("Dated this 13th day of January,%d",c);
break;
case 14:        printf("Dated this 14th day of January,%d",c);
break;
case 15:        printf("Dated this 15th day of January,%d",c);
break;
case 16:        printf("Dated this 16th day of January,%d",c);
break;
case 17:        printf("Dated this 17th day of January,%d",c);
break;
case 18:        printf("Dated this 18th day of January,%d",c);
break;
case 19:        printf("Dated this 19th day of January,%d",c);
break;
case 20:        printf("Dated this 20th day of January,%d",c);
break;
case 21:        printf("Dated this 21th day of January,%d",c);
break;
case 22:        printf("Dated this 22th day of January,%d",c);
break;
case 23:        printf("Dated this 23th day of January,%d",c);
break;
case 24:        printf("Dated this 24th day of January,%d",c);
break;
case 25:        printf("Dated this 25th day of January,%d",c);
break;
case 26:        printf("Dated this 26th day of January,%d",c);
break;
case 27:        printf("Dated this 27th day of January,%d",c);
break;
case 28:        printf("Dated this 28th day of January,%d",c);
break;
case 29:        printf("Dated this 29th day of January,%d",c);
break;
case 30:        printf("Dated this 30th day of January,%d",c);
break;
case 31:        printf("Dated this 31th day of January,%d",c);
break;
default: printf("Input error!");}
break;
if ((c%4==0&&c%100!=0) || (c%400==0))
    {case 2:{switch(b)
case 1 :       printf("Dated this 1st day of February,%d",c);
break;
case 2:        printf("Dated this 2nd day of February,%d",c);
break;
case 3:        printf("Dated this 3rd day of February,%d",c);
break;
case 4:        printf("Dated this 4th day of February,%d",c);
break;
case 5:        printf("Dated this 5th day of February,%d",c);
break;
case 6:        printf("Dated this 6th day of February,%d",c);
break;
case 7:        printf("Dated this 7th day of February,%d",c);
break;
case 8:        printf("Dated this 8th day of February,%d",c);
break;
case 9:        printf("Dated this 9th day of February,%d",c);
break;
case 10:        printf("Dated this 10th day of February,%d",c);
break;
case 11:        printf("Dated this 11th day of February,%d",c);
break;
case 12:        printf("Dated this 12th day of February,%d",c);
break;
case 13:        printf("Dated this 13th day of February,%d",c);
break;
case 14:        printf("Dated this 14th day of February,%d",c);
break;
case 15:        printf("Dated this 15th day of February,%d",c);
break;
case 16:        printf("Dated this 16th day of February,%d",c);
break;
case 17:        printf("Dated this 17th day of February,%d",c);
break;
case 18:        printf("Dated this 18th day of February,%d",c);
break;
case 19:        printf("Dated this 19th day of February,%d",c);
break;
case 20:        printf("Dated this 20th day of February,%d",c);
break;
case 21:        printf("Dated this 21th day of February,%d",c);
break;
case 22:        printf("Dated this 22th day of February,%d",c);
break;
case 23:        printf("Dated this 23th day of February,%d",c);
break;
case 24:        printf("Dated this 24th day of February,%d",c);
break;
case 25:        printf("Dated this 25th day of February,%d",c);
break;
case 26:        printf("Dated this 26th day of February,%d",c);
break;
case 27:        printf("Dated this 27th day of February,%d",c);
break;
case 28:        printf("Dated this 28th day of February,%d",c);
break;
case 29:        printf("Dated this 29th day of February,%d",c);
break;
default: printf("Input error!");}}
else
    {case 2:{switch(b)
case 1 :       printf("Dated this 1st day of February,%d",c);
break;
case 2:        printf("Dated this 2nd day of February,%d",c);
break;
case 3:        printf("Dated this 3rd day of February,%d",c);
break;
case 4:        printf("Dated this 4th day of February,%d",c);
break;
case 5:        printf("Dated this 5th day of February,%d",c);
break;
case 6:        printf("Dated this 6th day of February,%d",c);
break;
case 7:        printf("Dated this 7th day of February,%d",c);
break;
case 8:        printf("Dated this 8th day of February,%d",c);
break;
case 9:        printf("Dated this 9th day of February,%d",c);
break;
case 10:        printf("Dated this 10th day of February,%d",c);
break;
case 11:        printf("Dated this 11th day of February,%d",c);
break;
case 12:        printf("Dated this 12th day of February,%d",c);
break;
case 13:        printf("Dated this 13th day of February,%d",c);
break;
case 14:        printf("Dated this 14th day of February,%d",c);
break;
case 15:        printf("Dated this 15th day of February,%d",c);
break;
case 16:        printf("Dated this 16th day of February,%d",c);
break;
case 17:        printf("Dated this 17th day of February,%d",c);
break;
case 18:        printf("Dated this 18th day of February,%d",c);
break;
case 19:        printf("Dated this 19th day of February,%d",c);
break;
case 20:        printf("Dated this 20th day of February,%d",c);
break;
case 21:        printf("Dated this 21th day of February,%d",c);
break;
case 22:        printf("Dated this 22th day of February,%d",c);
break;
case 23:        printf("Dated this 23th day of February,%d",c);
break;
case 24:        printf("Dated this 24th day of February,%d",c);
break;
case 25:        printf("Dated this 25th day of February,%d",c);
break;
case 26:        printf("Dated this 26th day of February,%d",c);
break;
case 27:        printf("Dated this 27th day of February,%d",c);
break;
case 28:        printf("Dated this 28th day of February,%d",c);
break;
case 29:        printf("Dated this 29th day of February,%d",c);
break;
default: printf("Input error!");}}
break;
case 3:{switch(b)
case 1 :       printf("Dated this 1st day of March,%d",c);
break;
case 2:        printf("Dated this 2nd day of March,%d",c);
break;
case 3:        printf("Dated this 3rd day of March,%d",c);
break;
case 4:        printf("Dated this 4th day of March,%d",c);
break;
case 5:        printf("Dated this 5th day of March,%d",c);
break;
case 6:        printf("Dated this 6th day of March,%d",c);
break;
case 7:        printf("Dated this 7th day of March,%d",c);
break;
case 8:        printf("Dated this 8th day of March,%d",c);
break;
case 9:        printf("Dated this 9th day of March,%d",c);
break;
case 10:        printf("Dated this 10th day of March,%d",c);
break;
case 11:        printf("Dated this 11th day of March,%d",c);
break;
case 12:        printf("Dated this 12th day of March,%d",c);
break;
case 13:        printf("Dated this 13th day of March,%d",c);
break;
case 14:        printf("Dated this 14th day of March,%d",c);
break;
case 15:        printf("Dated this 15th day of March,%d",c);
break;
case 16:        printf("Dated this 16th day of March,%d",c);
break;
case 17:        printf("Dated this 17th day of March,%d",c);
break;
case 18:        printf("Dated this 18th day of March,%d",c);
break;
case 19:        printf("Dated this 19th day of March,%d",c);
break;
case 20:        printf("Dated this 20th day of March,%d",c);
break;
case 21:        printf("Dated this 21th day of March,%d",c);
break;
case 22:        printf("Dated this 22th day of March,%d",c);
break;
case 23:        printf("Dated this 23th day of March,%d",c);
break;
case 24:        printf("Dated this 24th day of March,%d",c);
break;
case 25:        printf("Dated this 25th day of March,%d",c);
break;
case 26:        printf("Dated this 26th day of March,%d",c);
break;
case 27:        printf("Dated this 27th day of March,%d",c);
break;
case 28:        printf("Dated this 28th day of March,%d",c);
break;
case 29:        printf("Dated this 29th day of March,%d",c);
break;
case 30:        printf("Dated this 30th day of March,%d",c);
break;
case 31:        printf("Dated this 31th day of March,%d",c);
break;
default: printf("Input error!");}
break;
case 4:{switch(b)
case 1 :       printf("Dated this 1st day of April,%d",c);
break;
case 2:        printf("Dated this 2nd day of April,%d",c);
break;
case 3:        printf("Dated this 3rd day of April,%d",c);
break;
case 4:        printf("Dated this 4th day of April,%d",c);
break;
case 5:        printf("Dated this 5th day of April,%d",c);
break;
case 6:        printf("Dated this 6th day of April,%d",c);
break;
case 7:        printf("Dated this 7th day of April,%d",c);
break;
case 8:        printf("Dated this 8th day of April,%d",c);
break;
case 9:        printf("Dated this 9th day of April,%d",c);
break;
case 10:        printf("Dated this 10th day of April,%d",c);
break;
case 11:        printf("Dated this 11th day of April,%d",c);
break;
case 12:        printf("Dated this 12th day of April,%d",c);
break;
case 13:        printf("Dated this 13th day of April,%d",c);
break;
case 14:        printf("Dated this 14th day of April,%d",c);
break;
case 15:        printf("Dated this 15th day of April,%d",c);
break;
case 16:        printf("Dated this 16th day of April,%d",c);
break;
case 17:        printf("Dated this 17th day of April,%d",c);
break;
case 18:        printf("Dated this 18th day of April,%d",c);
break;
case 19:        printf("Dated this 19th day of April,%d",c);
break;
case 20:        printf("Dated this 20th day of April,%d",c);
break;
case 21:        printf("Dated this 21th day of April,%d",c);
break;
case 22:        printf("Dated this 22th day of April,%d",c);
break;
case 23:        printf("Dated this 23th day of April,%d",c);
break;
case 24:        printf("Dated this 24th day of April,%d",c);
break;
case 25:        printf("Dated this 25th day of April,%d",c);
break;
case 26:        printf("Dated this 26th day of April,%d",c);
break;
case 27:        printf("Dated this 27th day of April,%d",c);
break;
case 28:        printf("Dated this 28th day of April,%d",c);
break;
case 29:        printf("Dated this 29th day of April,%d",c);
break;
case 30:        printf("Dated this 30th day of April,%d",c);
break;
default: printf("Input error!");}
break;
case 5:{switch(b)
case 1 :       printf("Dated this 1st day of May,%d",c);
break;
case 2:        printf("Dated this 2nd day of May,%d",c);
break;
case 3:        printf("Dated this 3rd day of May,%d",c);
break;
case 4:        printf("Dated this 4th day of May,%d",c);
break;
case 5:        printf("Dated this 5th day of May,%d",c);
break;
case 6:        printf("Dated this 6th day of May,%d",c);
break;
case 7:        printf("Dated this 7th day of May,%d",c);
break;
case 8:        printf("Dated this 8th day of May,%d",c);
break;
case 9:        printf("Dated this 9th day of May,%d",c);
break;
case 10:        printf("Dated this 10th day of May,%d",c);
break;
case 11:        printf("Dated this 11th day of May,%d",c);
break;
case 12:        printf("Dated this 12th day of May,%d",c);
break;
case 13:        printf("Dated this 13th day of May,%d",c);
break;
case 14:        printf("Dated this 14th day of May,%d",c);
break;
case 15:        printf("Dated this 15th day of May,%d",c);
break;
case 16:        printf("Dated this 16th day of May,%d",c);
break;
case 17:        printf("Dated this 17th day of May,%d",c);
break;
case 18:        printf("Dated this 18th day of May,%d",c);
break;
case 19:        printf("Dated this 19th day of May,%d",c);
break;
case 20:        printf("Dated this 20th day of May,%d",c);
break;
case 21:        printf("Dated this 21th day of May,%d",c);
break;
case 22:        printf("Dated this 22th day of May,%d",c);
break;
case 23:        printf("Dated this 23th day of May,%d",c);
break;
case 24:        printf("Dated this 24th day of May,%d",c);
break;
case 25:        printf("Dated this 25th day of May,%d",c);
break;
case 26:        printf("Dated this 26th day of May,%d",c);
break;
case 27:        printf("Dated this 27th day of May,%d",c);
break;
case 28:        printf("Dated this 28th day of May,%d",c);
break;
case 29:        printf("Dated this 29th day of May,%d",c);
break;
case 30:        printf("Dated this 30th day of May,%d",c);
break;
case 31:        printf("Dated this 31th day of May,%d",c);
break;
default: printf("Input error!");}
break;
case 6:{switch(b)
case 1 :       printf("Dated this 1st day of June,%d",c);
break;
case 2:        printf("Dated this 2nd day of June,%d",c);
break;
case 3:        printf("Dated this 3rd day of June,%d",c);
break;
case 4:        printf("Dated this 4th day of June,%d",c);
break;
case 5:        printf("Dated this 5th day of June,%d",c);
break;
case 6:        printf("Dated this 6th day of June,%d",c);
break;
case 7:        printf("Dated this 7th day of June,%d",c);
break;
case 8:        printf("Dated this 8th day of June,%d",c);
break;
case 9:        printf("Dated this 9th day of June,%d",c);
break;
case 10:        printf("Dated this 10th day of June,%d",c);
break;
case 11:        printf("Dated this 11th day of June,%d",c);
break;
case 12:        printf("Dated this 12th day of June,%d",c);
break;
case 13:        printf("Dated this 13th day of June,%d",c);
break;
case 14:        printf("Dated this 14th day of June,%d",c);
break;
case 15:        printf("Dated this 15th day of June,%d",c);
break;
case 16:        printf("Dated this 16th day of June,%d",c);
break;
case 17:        printf("Dated this 17th day of June,%d",c);
break;
case 18:        printf("Dated this 18th day of June,%d",c);
break;
case 19:        printf("Dated this 19th day of June,%d",c);
break;
case 20:        printf("Dated this 20th day of June,%d",c);
break;
case 21:        printf("Dated this 21th day of June,%d",c);
break;
case 22:        printf("Dated this 22th day of June,%d",c);
break;
case 23:        printf("Dated this 23th day of June,%d",c);
break;
case 24:        printf("Dated this 24th day of June,%d",c);
break;
case 25:        printf("Dated this 25th day of June,%d",c);
break;
case 26:        printf("Dated this 26th day of June,%d",c);
break;
case 27:        printf("Dated this 27th day of June,%d",c);
break;
case 28:        printf("Dated this 28th day of June,%d",c);
break;
case 29:        printf("Dated this 29th day of June,%d",c);
break;
case 30:        printf("Dated this 30th day of June,%d",c);
break;
default: printf("Input error!");}
break;
case 7:
    {switch(b)
case 1 :       printf("Dated this 1st day of July,%d",c);
break;
case 2:        printf("Dated this 2nd day of July,%d",c);
break;
case 3:        printf("Dated this 3rd day of July,%d",c);
break;
case 4:        printf("Dated this 4th day of July,%d",c);
break;
case 5:        printf("Dated this 5th day of July,%d",c);
break;
case 6:        printf("Dated this 6th day of July,%d",c);
break;
case 7:        printf("Dated this 7th day of July,%d",c);
break;
case 8:        printf("Dated this 8th day of July,%d",c);
break;
case 9:        printf("Dated this 9th day of July,%d",c);
break;
case 10:        printf("Dated this 10th day of July,%d",c);
break;
case 11:        printf("Dated this 11th day of July,%d",c);
break;
case 12:        printf("Dated this 12th day of July,%d",c);
break;
case 13:        printf("Dated this 13th day of July,%d",c);
break;
case 14:        printf("Dated this 14th day of July,%d",c);
break;
case 15:        printf("Dated this 15th day of July,%d",c);
break;
case 16:        printf("Dated this 16th day of July,%d",c);
break;
case 17:        printf("Dated this 17th day of July,%d",c);
break;
case 18:        printf("Dated this 18th day of July,%d",c);
break;
case 19:        printf("Dated this 19th day of July,%d",c);
break;
case 20:        printf("Dated this 20th day of July,%d",c);
break;
case 21:        printf("Dated this 21th day of July,%d",c);
break;
case 22:        printf("Dated this 22th day of July,%d",c);
break;
case 23:        printf("Dated this 23th day of July,%d",c);
break;
case 24:        printf("Dated this 24th day of July,%d",c);
break;
case 25:        printf("Dated this 25th day of July,%d",c);
break;
case 26:        printf("Dated this 26th day of July,%d",c);
break;
case 27:        printf("Dated this 27th day of July,%d",c);
break;
case 28:        printf("Dated this 28th day of July,%d",c);
break;
case 29:        printf("Dated this 29th day of July,%d",c);
break;
case 30:        printf("Dated this 30th day of July,%d",c);
break;
case 31:        printf("Dated this 31th day of July,%d",c);
break;
default: printf("Input error!");}
break;
case 8:
    {switch(b)
case 1 :       printf("Dated this 1st day of August,%d",c);
break;
case 2:        printf("Dated this 2nd day of August,%d",c);
break;
case 3:        printf("Dated this 3rd day of August,%d",c);
break;
case 4:        printf("Dated this 4th day of August,%d",c);
break;
case 5:        printf("Dated this 5th day of August,%d",c);
break;
case 6:        printf("Dated this 6th day of August,%d",c);
break;
case 7:        printf("Dated this 7th day of August,%d",c);
break;
case 8:        printf("Dated this 8th day of August,%d",c);
break;
case 9:        printf("Dated this 9th day of August,%d",c);
break;
case 10:        printf("Dated this 10th day of August,%d",c);
break;
case 11:        printf("Dated this 11th day of August,%d",c);
break;
case 12:        printf("Dated this 12th day of August,%d",c);
break;
case 13:        printf("Dated this 13th day of August,%d",c);
break;
case 14:        printf("Dated this 14th day of August,%d",c);
break;
case 15:        printf("Dated this 15th day of August,%d",c);
break;
case 16:        printf("Dated this 16th day of August,%d",c);
break;
case 17:        printf("Dated this 17th day of August,%d",c);
break;
case 18:        printf("Dated this 18th day of August,%d",c);
break;
case 19:        printf("Dated this 19th day of August,%d",c);
break;
case 20:        printf("Dated this 20th day of August,%d",c);
break;
case 21:        printf("Dated this 21th day of August,%d",c);
break;
case 22:        printf("Dated this 22th day of August,%d",c);
break;
case 23:        printf("Dated this 23th day of August,%d",c);
break;
case 24:        printf("Dated this 24th day of August,%d",c);
break;
case 25:        printf("Dated this 25th day of August,%d",c);
break;
case 26:        printf("Dated this 26th day of August,%d",c);
break;
case 27:        printf("Dated this 27th day of August,%d",c);
break;
case 28:        printf("Dated this 28th day of August,%d",c);
break;
case 29:        printf("Dated this 29th day of August,%d",c);
break;
case 30:        printf("Dated this 30th day of August,%d",c);
break;
case 31:        printf("Dated this 31th day of August,%d",c);
break;
default: printf("Input error!");}
break;
case 9:
    {switch(b)
case 1 :       printf("Dated this 1st day of September,%d",c);
break;
case 2:        printf("Dated this 2nd day of September,%d",c);
break;
case 3:        printf("Dated this 3rd day of September,%d",c);
break;
case 4:        printf("Dated this 4th day of September,%d",c);
break;
case 5:        printf("Dated this 5th day of September,%d",c);
break;
case 6:        printf("Dated this 6th day of September,%d",c);
break;
case 7:        printf("Dated this 7th day of September,%d",c);
break;
case 8:        printf("Dated this 8th day of September,%d",c);
break;
case 9:        printf("Dated this 9th day of September,%d",c);
break;
case 10:        printf("Dated this 10th day of September,%d",c);
break;
case 11:        printf("Dated this 11th day of September,%d",c);
break;
case 12:        printf("Dated this 12th day of September,%d",c);
break;
case 13:        printf("Dated this 13th day of September,%d",c);
break;
case 14:        printf("Dated this 14th day of September,%d",c);
break;
case 15:        printf("Dated this 15th day of September,%d",c);
break;
case 16:        printf("Dated this 16th day of September,%d",c);
break;
case 17:        printf("Dated this 17th day of September,%d",c);
break;
case 18:        printf("Dated this 18th day of September,%d",c);
break;
case 19:        printf("Dated this 19th day of September,%d",c);
break;
case 20:        printf("Dated this 20th day of September,%d",c);
break;
case 21:        printf("Dated this 21th day of September,%d",c);
break;
case 22:        printf("Dated this 22th day of September,%d",c);
break;
case 23:        printf("Dated this 23th day of September,%d",c);
break;
case 24:        printf("Dated this 24th day of September,%d",c);
break;
case 25:        printf("Dated this 25th day of September,%d",c);
break;
case 26:        printf("Dated this 26th day of September,%d",c);
break;
case 27:        printf("Dated this 27th day of September,%d",c);
break;
case 28:        printf("Dated this 28th day of September,%d",c);
break;
case 29:        printf("Dated this 29th day of September,%d",c);
break;
case 30:        printf("Dated this 30th day of September,%d",c);
break;
default: printf("Input error!");}
break;
case 10:
    {switch(b)
case 1 :       printf("Dated this 1st day of October,%d",c);
break;
case 2:        printf("Dated this 2nd day of October,%d",c);
break;
case 3:        printf("Dated this 3rd day of October,%d",c);
break;
case 4:        printf("Dated this 4th day of October,%d",c);
break;
case 5:        printf("Dated this 5th day of October,%d",c);
break;
case 6:        printf("Dated this 6th day of October,%d",c);
break;
case 7:        printf("Dated this 7th day of October,%d",c);
break;
case 8:        printf("Dated this 8th day of October,%d",c);
break;
case 9:        printf("Dated this 9th day of October,%d",c);
break;
case 10:        printf("Dated this 10th day of October,%d",c);
break;
case 11:        printf("Dated this 11th day of October,%d",c);
break;
case 12:        printf("Dated this 12th day of October,%d",c);
break;
case 13:        printf("Dated this 13th day of October,%d",c);
break;
case 14:        printf("Dated this 14th day of October,%d",c);
break;
case 15:        printf("Dated this 15th day of October,%d",c);
break;
case 16:        printf("Dated this 16th day of October,%d",c);
break;
case 17:        printf("Dated this 17th day of October,%d",c);
break;
case 18:        printf("Dated this 18th day of October,%d",c);
break;
case 19:        printf("Dated this 19th day of October,%d",c);
break;
case 20:        printf("Dated this 20th day of October,%d",c);
break;
case 21:        printf("Dated this 21th day of October,%d",c);
break;
case 22:        printf("Dated this 22th day of October,%d",c);
break;
case 23:        printf("Dated this 23th day of October,%d",c);
break;
case 24:        printf("Dated this 24th day of October,%d",c);
break;
case 25:        printf("Dated this 25th day of October,%d",c);
break;
case 26:        printf("Dated this 26th day of October,%d",c);
break;
case 27:        printf("Dated this 27th day of October,%d",c);
break;
case 28:        printf("Dated this 28th day of October,%d",c);
break;
case 29:        printf("Dated this 29th day of October,%d",c);
break;
case 30:        printf("Dated this 30th day of October,%d",c);
break;
case 31:        printf("Dated this 31th day of October,%d",c);
break;
default: printf("Input error!");}
break;
case 11:
    {switch(b)
case 1 :       printf("Dated this 1st day of November,%d",c);
break;
case 2:        printf("Dated this 2nd day of November,%d",c);
break;
case 3:        printf("Dated this 3rd day of November,%d",c);
break;
case 4:        printf("Dated this 4th day of November,%d",c);
break;
case 5:        printf("Dated this 5th day of November,%d",c);
break;
case 6:        printf("Dated this 6th day of November,%d",c);
break;
case 7:        printf("Dated this 7th day of November,%d",c);
break;
case 8:        printf("Dated this 8th day of November,%d",c);
break;
case 9:        printf("Dated this 9th day of November,%d",c);
break;
case 10:        printf("Dated this 10th day of November,%d",c);
break;
case 11:        printf("Dated this 11th day of November,%d",c);
break;
case 12:        printf("Dated this 12th day of November,%d",c);
break;
case 13:        printf("Dated this 13th day of November,%d",c);
break;
case 14:        printf("Dated this 14th day of November,%d",c);
break;
case 15:        printf("Dated this 15th day of November,%d",c);
break;
case 16:        printf("Dated this 16th day of November,%d",c);
break;
case 17:        printf("Dated this 17th day of November,%d",c);
break;
case 18:        printf("Dated this 18th day of November,%d",c);
break;
case 19:        printf("Dated this 19th day of November,%d",c);
break;
case 20:        printf("Dated this 20th day of November,%d",c);
break;
case 21:        printf("Dated this 21th day of November,%d",c);
break;
case 22:        printf("Dated this 22th day of November,%d",c);
break;
case 23:        printf("Dated this 23th day of November,%d",c);
break;
case 24:        printf("Dated this 24th day of November,%d",c);
break;
case 25:        printf("Dated this 25th day of November,%d",c);
break;
case 26:        printf("Dated this 26th day of November,%d",c);
break;
case 27:        printf("Dated this 27th day of November,%d",c);
break;
case 28:        printf("Dated this 28th day of November,%d",c);
break;
case 29:        printf("Dated this 29th day of November,%d",c);
break;
case 30:        printf("Dated this 30th day of November,%d",c);
break;
default: printf("Input error!");}
break;
case 12:
    {switch(b)
case 1 :       printf("Dated this 1st day of December,%d",c);
break;
case 2:        printf("Dated this 2nd day of December,%d",c);
break;
case 3:        printf("Dated this 3rd day of December,%d",c);
break;
case 4:        printf("Dated this 4th day of December,%d",c);
break;
case 5:        printf("Dated this 5th day of December,%d",c);
break;
case 6:        printf("Dated this 6th day of December,%d",c);
break;
case 7:        printf("Dated this 7th day of December,%d",c);
break;
case 8:        printf("Dated this 8th day of December,%d",c);
break;
case 9:        printf("Dated this 9th day of December,%d",c);
break;
case 10:        printf("Dated this 10th day of December,%d",c);
break;
case 11:        printf("Dated this 11th day of December,%d",c);
break;
case 12:        printf("Dated this 12th day of December,%d",c);
break;
case 13:        printf("Dated this 13th day of December,%d",c);
break;
case 14:        printf("Dated this 14th day of December,%d",c);
break;
case 15:        printf("Dated this 15th day of December,%d",c);
break;
case 16:        printf("Dated this 16th day of December,%d",c);
break;
case 17:        printf("Dated this 17th day of December,%d",c);
break;
case 18:        printf("Dated this 18th day of December,%d",c);
break;
case 19:        printf("Dated this 19th day of December,%d",c);
break;
case 20:        printf("Dated this 20th day of December,%d",c);
break;
case 21:        printf("Dated this 21th day of December,%d",c);
break;
case 22:        printf("Dated this 22th day of December,%d",c);
break;
case 23:        printf("Dated this 23th day of December,%d",c);
break;
case 24:        printf("Dated this 24th day of December,%d",c);
break;
case 25:        printf("Dated this 25th day of December,%d",c);
break;
case 26:        printf("Dated this 26th day of December,%d",c);
break;
case 27:        printf("Dated this 27th day of December,%d",c);
break;
case 28:        printf("Dated this 28th day of December,%d",c);
break;
case 29:        printf("Dated this 29th day of December,%d",c);
break;
case 30:        printf("Dated this 30th day of December,%d",c);
break;
case 31:        printf("Dated this 31th day of December,%d",c);
break;
default: printf("Input error!");}
break;
default: printf("Input error!");}}
else
{printf("Input error!\n");}
    return 0;
}

 

...全文
1552 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2023-03-02
  • 打赏
  • 举报
回复 1
//接上贴
month == "11") {
        if (dayOfMonth > 30) {
            cout << "Invalid day for this month\n";
            return 1;
        }
    }

    // Print the output string
    cout << "Dated this " << day << daySuffix << " day of " << monthName << ", 
//……下面请自行补足 (^_^)
赵4老师 2023-03-02
  • 打赏
  • 举报
回复 1

#include <iostream>
#include <string>
using namespace std;

int main() {
    string date;
    cout << "Enter date (mm/dd/yy): ";
    cin >> date;

    // Parse the month, day, and year from the input string
    string month = date.substr(0, 2);
    string day = date.substr(3, 2);
    string year = date.substr(6, 2);

    // Convert the month to its corresponding string name
    string monthName;
    if (month == "01") { monthName = "January"; }
    else if (month == "02") { monthName = "February"; }
    else if (month == "03") { monthName = "March"; }
    else if (month == "04") { monthName = "April"; }
    else if (month == "05") { monthName = "May"; }
    else if (month == "06") { monthName = "June"; }
    else if (month == "07") { monthName = "July"; }
    else if (month == "08") { monthName = "August"; }
    else if (month == "09") { monthName = "September"; }
    else if (month == "10") { monthName = "October"; }
    else if (month == "11") { monthName = "November"; }
    else if (month == "12") { monthName = "December"; }
    else { cout << "Invalid month\n"; return 1; }

    // Determine the day suffix (e.g. "st", "nd", "rd", or "th")
    string daySuffix;
    if (day == "01" || day == "21" || day == "31") { daySuffix = "st"; }
    else if (day == "02" || day == "22") { daySuffix = "nd"; }
    else if (day == "03" || day == "23") { daySuffix = "rd"; }
    else { daySuffix = "th"; }

    // Check if the year is a leap year
    int yearNum = stoi(year);
    bool isLeapYear = (yearNum % 4 == 0 && yearNum % 100 != 0) || (yearNum % 400 == 0);

    // Validate the day of the month
    int dayOfMonth = stoi(day);
    if (dayOfMonth < 1 || dayOfMonth > 31) {
        cout << "Invalid day\n";
        return 1;
    } else if (month == "02") {
        if (dayOfMonth > 29 || (dayOfMonth == 29 && !isLeapYear)) {
            cout << "Invalid day for February in this year\n";
            return 1;
        }
    } else if (month == "04" || month == "06" || month == "09" ||
//未完待续
赵4老师 2023-02-28
  • 打赏
  • 举报
回复
 //接上贴
  case 6:
   switch(d){
   case  1:printf("Dated this  1st day of June,%d",y);break;
   case  2:printf("Dated this  2nd day of June,%d",y);break;
   case  3:printf("Dated this  3rd day of June,%d",y);break;
   case  4:printf("Dated this  4th day of June,%d",y);break;
   case  5:printf("Dated this  5th day of June,%d",y);break;
   case  6:printf("Dated this  6th day of June,%d",y);break;
   case  7:printf("Dated this  7th day of June,%d",y);break;
   case  8:printf("Dated this  8th day of June,%d",y);break;
   case  9:printf("Dated this  9th day of June,%d",y);break;
   case 10:printf("Dated this 10th day of June,%d",y);break;
   case 11:printf("Dated this 11th day of June,%d",y);break;
   case 12:printf("Dated this 12th day of June,%d",y);break;
   case 13:printf("Dated this 13th day of June,%d",y);break;
   case 14:printf("Dated this 14th day of June,%d",y);break;
   case 15:printf("Dated this 15th day of June,%d",y);break;
   case 16:printf("Dated this 16th day of June,%d",y);break;
   case 17:printf("Dated this 17th day of June,%d",y);break;
   case 18:printf("Dated this 18th day of June,%d",y);break;
   case 19:printf("Dated this 19th day of June,%d",y);break;
   case 20:printf("Dated this 20th day of June,%d",y);break;
   case 21:printf("Dated this 21th day of June,%d",y);break;
   case 22:printf("Dated this 22th day of June,%d",y);break;
   case 23:printf("Dated this 23th day of June,%d",y);break;
   case 24:printf("Dated this 24th day of June,%d",y);break;
   case 25:printf("Dated this 25th day of June,%d",y);break;
   case 26:printf("Dated this 26th day of June,%d",y);break;
   case 27:printf("Dated this 27th day of June,%d",y);break;
   case 28:printf("Dated this 28th day of June,%d",y);break;
   case 29:printf("Dated this 29th day of June,%d",y);break;
   case 30:printf("Dated this 30th day of June,%d",y);break;
   default:printf("Input error!");
   }
  break;
  case 7:
   switch(d){
   case  1:printf("Dated this  1st day of July,%d",y);break;
   case  2:printf("Dated this  2nd day of July,%d",y);break;
   case  3:printf("Dated this  3rd day of July,%d",y);break;
   case  4:printf("Dated this  4th day of July,%d",y);break;
   case  5:printf("Dated this  5th day of July,%d",y);break;
   case  6:printf("Dated this  6th day of July,%d",y);break;
   case  7:printf("Dated this  7th day of July,%d",y);break;
   case  8:printf("Dated this  8th day of July,%d",y);break;
   case  9:printf("Dated this  9th day of July,%d",y);break;
   case 10:printf("Dated this 10th day of July,%d",y);break;
   case 11:printf("Dated this 11th day of July,%d",y);break;
   case 12:printf("Dated this 12th day of July,%d",y);break;
   case 13:printf("Dated this 13th day of July,%d",y);break;
   case 14:printf("Dated this 14th day of July,%d",y);break;
   case 15:printf("Dated this 15th day of July,%d",y);break;
   case 16:printf("Dated this 16th day of July,%d",y);break;
   case 17:printf("Dated this 17th day of July,%d",y);break;
   case 18:printf("Dated this 18th day of July,%d",y);break;
   case 19:printf("Dated this 19th day of July,%d",y);break;
   case 20:printf("Dated this 20th day of July,%d",y);break;
   case 21:printf("Dated this 21th day of July,%d",y);break;
   case 22:printf("Dated this 22th day of July,%d",y);break;
   case 23:printf("Dated this 23th day of July,%d",y);break;
   case 24:printf("Dated this 24th day of July,%d",y);break;
   case 25:printf("Dated this 25th day of July,%d",y);break;
   case 26:printf("Dated this 26th day of July,%d",y);break;
   case 27:printf("Dated this 27th day of July,%d",y);break;
   case 28:printf("Dated this 28th day of July,%d",y);break;
   case 29:printf("Dated this 29th day of July,%d",y);break;
   case 30:printf("Dated this 30th day of July,%d",y);break;
   case 31:printf("Dated this 31th day of July,%d",y);break;
   default:printf("Input error!");
   }
  break;
  case 8:
   switch(d){
   case  1:printf("Dated this  1st day of August,%d",y);break;
   case  2:printf("Dated this  2nd day of August,%d",y);break;
   case  3:printf("Dated this  3rd day of August,%d",y);break;
   case  4:printf("Dated this  4th day of August,%d",y);break;
   case  5:printf("Dated this  5th day of August,%d",y);break;
   case  6:printf("Dated this  6th day of August,%d",y);break;
   case  7:printf("Dated this  7th day of August,%d",y);break;
   case  8:printf("Dated this  8th day of August,%d",y);break;
   case  9:printf("Dated this  9th day of August,%d",y);break;
   case 10:printf("Dated this 10th day of August,%d",y);break;
   case 11:printf("Dated this 11th day of August,%d",y);break;
   case 12:printf("Dated this 12th day of August,%d",y);break;
   case 13:printf("Dated this 13th day of August,%d",y);break;
   case 14:printf("Dated this 14th day of August,%d",y);break;
   case 15:printf("Dated this 15th day of August,%d",y);break;
   case 16:printf("Dated this 16th day of August,%d",y);break;
   case 17:printf("Dated this 17th day of August,%d",y);break;
   case 18:printf("Dated this 18th day of August,%d",y);break;
   case 19:printf("Dated this 19th day of August,%d",y);break;
   case 20:printf("Dated this 20th day of August,%d",y);break;
   case 21:printf("Dated this 21th day of August,%d",y);break;
   case 22:printf("Dated this 22th day of August,%d",y);break;
   case 23:printf("Dated this 23th day of August,%d",y);break;
   case 24:printf("Dated this 24th day of August,%d",y);break;
   case 25:printf("Dated this 25th day of August,%d",y);break;
   case 26:printf("Dated this 26th day of August,%d",y);break;
   case 27:printf("Dated this 27th day of August,%d",y);break;
   case 28:printf("Dated this 28th day of August,%d",y);break;
   case 29:printf("Dated this 29th day of August,%d",y);break;
   case 30:printf("Dated this 30th day of August,%d",y);break;
   case 31:printf("Dated this 31th day of August,%d",y);break;
   default:printf("Input error!");
   }
  break;
  case 9:
   switch(d){
   case  1:printf("Dated this  1st day of September,%d",y);break;
   case  2:printf("Dated this  2nd day of September,%d",y);break;
   case  3:printf("Dated this  3rd day of September,%d",y);break;
   case  4:printf("Dated this  4th day of September,%d",y);break;
   case  5:printf("Dated this  5th day of September,%d",y);break;
   case  6:printf("Dated this  6th day of September,%d",y);break;
   case  7:printf("Dated this  7th day of September,%d",y);break;
   case  8:printf("Dated this  8th day of September,%d",y);break;
   case  9:printf("Dated this  9th day of September,%d",y);break;
   case 10:printf("Dated this 10th day of September,%d",y);break;
   case 11:printf("Dated this 11th day of September,%d",y);break;
   case 12:printf("Dated this 12th day of September,%d",y);break;
   case 13:printf("Dated this 13th day of September,%d",y);break;
   case 14:printf("Dated this 14th day of September,%d",y);break;
   case 15:printf("Dated this 15th day of September,%d",y);break;
   case 16:printf("Dated this 16th day of September,%d",y);break;
   case 17:printf("Dated this 17th day of September,%d",y);break;
   case 18:printf("Dated this 18th day of September,%d",y);break;
   case 19:printf("Dated this 19th day of September,%d",y);break;
   case 20:printf("Dated this 20th day of September,%d",y);break;
   case 21:printf("Dated this 21th day of September,%d",y);break;
   case 22:printf("Dated this 22th day of September,%d",y);break;
   case 23:printf("Dated this 23th day of September,%d",y);break;
   case 24:printf("Dated this 24th day of September,%d",y);break;
   case 25:printf("Dated this 25th day of September,%d",y);break;
   case 26:printf("Dated this 26th day of September,%d",y);break;
   case 27:printf("Dated this 27th day of September,%d",y);break;
   case 28:printf("Dated this 28th day of September,%d",y);break;
   case 29:printf("Dated this 29th day of September,%d",y);break;
   case 30:printf("Dated this 30th day of September,%d",y);break;
   default:printf("Input error!");
   }
  break;
  case 10:
   switch(d){
   case  1:printf("Dated this  1st day of October,%d",y);break;
   case  2:printf("Dated this  2nd day of October,%d",y);break;
   case  3:printf("Dated this  3rd day of October,%d",y);break;
   case  4:printf("Dated this  4th day of October,%d",y);break;
   case  5:printf("Dated this  5th day of October,%d",y);break;
   case  6:printf("Dated this  6th day of October,%d",y);break;
   case  7:printf("Dated this  7th day of October,%d",y);break;
   case  8:printf("Dated this  8th day of October,%d",y);break;
   case  9:printf("Dated this  9th day of October,%d",y);break;
   case 10:printf("Dated this 10th day of October,%d",y);break;
   case 11:printf("Dated this 11th day of October,%d",y);break;
   case 12:printf("Dated this 12th day of October,%d",y);break;
   case 13:printf("Dated this 13th day of October,%d",y);break;
   case 14:printf("Dated this 14th day of October,%d",y);break;
   case 15:printf("Dated this 15th day of October,%d",y);break;
   case 16:printf("Dated this 16th day of October,%d",y);break;
   case 17:printf("Dated this 17th day of October,%d",y);break;
   case 18:printf("Dated this 18th day of October,%d",y);break;
   case 19:printf("Dated this 19th day of October,%d",y);break;
   case 20:printf("Dated this 20th day of October,%d",y);break;
   case 21:printf("Dated this 21th day of October,%d",y);break;
   case 22:printf("Dated this 22th day of October,%d",y);break;
   case 23:printf("Dated this 23th day of October,%d",y);break;
   case 24:printf("Dated this 24th day of October,%d",y);break;
   case 25:printf("Dated this 25th day of October,%d",y);break;
   case 26:printf("Dated this 26th day of October,%d",y);break;
   case 27:printf("Dated this 27th day of October,%d",y);break;
   case 28:printf("Dated this 28th day of October,%d",y);break;
   case 29:printf("Dated this 29th day of October,%d",y);break;
   case 30:printf("Dated this 30th day of October,%d",y);break;
   case 31:printf("Dated this 31th day of October,%d",y);break;
   default:printf("Input error!");
   }
  break;
  case 11:
   switch(d){
   case  1:printf("Dated this  1st day of November,%d",y);break;
   case  2:printf("Dated this  2nd day of November,%d",y);break;
   case  3:printf("Dated this  3rd day of November,%d",y);break;
   case  4:printf("Dated this  4th day of November,%d",y);break;
   case  5:printf("Dated this  5th day of November,%d",y);break;
   case  6:printf("Dated this  6th day of November,%d",y);break;
   case  7:printf("Dated this  7th day of November,%d",y);break;
   case  8:printf("Dated this  8th day of November,%d",y);break;
   case  9:printf("Dated this  9th day of November,%d",y);break;
   case 10:printf("Dated this 10th day of November,%d",y);break;
   case 11:printf("Dated this 11th day of November,%d",y);break;
   case 12:printf("Dated this 12th day of November,%d",y);break;
   case 13:printf("Dated this 13th day of November,%d",y);break;
   case 14:printf("Dated this 14th day of November,%d",y);break;
   case 15:printf("Dated this 15th day of November,%d",y);break;
   case 16:printf("Dated this 16th day of November,%d",y);break;
   case 17:printf("Dated this 17th day of November,%d",y);break;
   case 18:printf("Dated this 18th day of November,%d",y);break;
   case 19:printf("Dated this 19th day of November,%d",y);break;
   case 20:printf("Dated this 20th day of November,%d",y);break;
   case 21:printf("Dated this 21th day of November,%d",y);break;
   case 22:printf("Dated this 22th day of November,%d",y);break;
   case 23:printf("Dated this 23th day of November,%d",y);break;
   case 24:printf("Dated this 24th day of November,%d",y);break;
   case 25:printf("Dated this 25th day of November,%d",y);break;
   case 26:printf("Dated this 26th day of November,%d",y);break;
   case 27:printf("Dated this 27th day of November,%d",y);break;
   case 28:printf("Dated this 28th day of November,%d",y);break;
   case 29:printf("Dated this 29th day of November,%d",y);break;
   case 30:printf("Dated this 30th day of November,%d",y);break;
   default:printf("Input error!");
   }
  break;
  case 12:
   switch(d){
   case  1:printf("Dated this  1st day of December,%d",y);break;
   case  2:printf("Dated this  2nd day of December,%d",y);break;
   case  3:printf("Dated this  3rd day of December,%d",y);break;
   case  4:printf("Dated this  4th day of December,%d",y);break;
   case  5:printf("Dated this  5th day of December,%d",y);break;
   case  6:printf("Dated this  6th day of December,%d",y);break;
   case  7:printf("Dated this  7th day of December,%d",y);break;
   case  8:printf("Dated this  8th day of December,%d",y);break;
   case  9:printf("Dated this  9th day of December,%d",y);break;
   case 10:printf("Dated this 10th day of December,%d",y);break;
   case 11:printf("Dated this 11th day of December,%d",y);break;
   case 12:printf("Dated this 12th day of December,%d",y);break;
   case 13:printf("Dated this 13th day of December,%d",y);break;
   case 14:printf("Dated this 14th day of December,%d",y);break;
   case 15:printf("Dated this 15th day of December,%d",y);break;
   case 16:printf("Dated this 16th day of December,%d",y);break;
   case 17:printf("Dated this 17th day of December,%d",y);break;
   case 18:printf("Dated this 18th day of December,%d",y);break;
   case 19:printf("Dated this 19th day of December,%d",y);break;
   case 20:printf("Dated this 20th day of December,%d",y);break;
   case 21:printf("Dated this 21th day of December,%d",y);break;
   case 22:printf("Dated this 22th day of December,%d",y);break;
   case 23:printf("Dated this 23th day of December,%d",y);break;
   case 24:printf("Dated this 24th day of December,%d",y);break;
   case 25:printf("Dated this 25th day of December,%d",y);break;
   case 26:printf("Dated this 26th day of December,%d",y);break;
   case 27:printf("Dated this 27th day of December,%d",y);break;
   case 28:printf("Dated this 28th day of December,%d",y);break;
   case 29:printf("Dated this 29th day of December,%d",y);break;
   case 30:printf("Dated this 30th day of December,%d",y);break;
   case 31:printf("Dated this 31th day of December,%d",y);break;
   default:printf("Input error!");
   }
 break;
 default: printf("Input error!");
 }
 } else {
  printf("Input error!\n");
 }
 return 0;
}

wizardTNT 2023-03-01
  • 举报
回复
@赵4老师 谢谢您
赵4老师 2023-02-28
  • 打赏
  • 举报
回复

#include <stdio.h>
#include <stdlib.h>
int main() {
 int m,d,y;
 printf("Enter date (mm/dd/yy) :");
 scanf("%d/%d/%d",&m,&d,&y);
 if (((y%1==0)&&(y>=1))&&((m%1==0)&&(m>=1 && m<=12))&&((d>=1 && d<=31)&&(d%1==0))) {
 switch(m){
  case 1:
   switch(d){
   case  1:printf("Dated this  1st day of January,%d",y);break;
   case  2:printf("Dated this  2nd day of January,%d",y);break;
   case  3:printf("Dated this  3rd day of January,%d",y);break;
   case  4:printf("Dated this  4th day of January,%d",y);break;
   case  5:printf("Dated this  5th day of January,%d",y);break;
   case  6:printf("Dated this  6th day of January,%d",y);break;
   case  7:printf("Dated this  7th day of January,%d",y);break;
   case  8:printf("Dated this  8th day of January,%d",y);break;
   case  9:printf("Dated this  9th day of January,%d",y);break;
   case 10:printf("Dated this 10th day of January,%d",y);break;
   case 11:printf("Dated this 11th day of January,%d",y);break;
   case 12:printf("Dated this 12th day of January,%d",y);break;
   case 13:printf("Dated this 13th day of January,%d",y);break;
   case 14:printf("Dated this 14th day of January,%d",y);break;
   case 15:printf("Dated this 15th day of January,%d",y);break;
   case 16:printf("Dated this 16th day of January,%d",y);break;
   case 17:printf("Dated this 17th day of January,%d",y);break;
   case 18:printf("Dated this 18th day of January,%d",y);break;
   case 19:printf("Dated this 19th day of January,%d",y);break;
   case 20:printf("Dated this 20th day of January,%d",y);break;
   case 21:printf("Dated this 21th day of January,%d",y);break;
   case 22:printf("Dated this 22th day of January,%d",y);break;
   case 23:printf("Dated this 23th day of January,%d",y);break;
   case 24:printf("Dated this 24th day of January,%d",y);break;
   case 25:printf("Dated this 25th day of January,%d",y);break;
   case 26:printf("Dated this 26th day of January,%d",y);break;
   case 27:printf("Dated this 27th day of January,%d",y);break;
   case 28:printf("Dated this 28th day of January,%d",y);break;
   case 29:printf("Dated this 29th day of January,%d",y);break;
   case 30:printf("Dated this 30th day of January,%d",y);break;
   case 31:printf("Dated this 31th day of January,%d",y);break;
   default:printf("Input error!");
   }
  break;
  case 2:
   if ((y%4==0&&y%100!=0) || (y%400==0)) {
    switch(d){
    case  1:printf("Dated this  1st day of February,%d",y);break;
    case  2:printf("Dated this  2nd day of February,%d",y);break;
    case  3:printf("Dated this  3rd day of February,%d",y);break;
    case  4:printf("Dated this  4th day of February,%d",y);break;
    case  5:printf("Dated this  5th day of February,%d",y);break;
    case  6:printf("Dated this  6th day of February,%d",y);break;
    case  7:printf("Dated this  7th day of February,%d",y);break;
    case  8:printf("Dated this  8th day of February,%d",y);break;
    case  9:printf("Dated this  9th day of February,%d",y);break;
    case 10:printf("Dated this 10th day of February,%d",y);break;
    case 11:printf("Dated this 11th day of February,%d",y);break;
    case 12:printf("Dated this 12th day of February,%d",y);break;
    case 13:printf("Dated this 13th day of February,%d",y);break;
    case 14:printf("Dated this 14th day of February,%d",y);break;
    case 15:printf("Dated this 15th day of February,%d",y);break;
    case 16:printf("Dated this 16th day of February,%d",y);break;
    case 17:printf("Dated this 17th day of February,%d",y);break;
    case 18:printf("Dated this 18th day of February,%d",y);break;
    case 19:printf("Dated this 19th day of February,%d",y);break;
    case 20:printf("Dated this 20th day of February,%d",y);break;
    case 21:printf("Dated this 21th day of February,%d",y);break;
    case 22:printf("Dated this 22th day of February,%d",y);break;
    case 23:printf("Dated this 23th day of February,%d",y);break;
    case 24:printf("Dated this 24th day of February,%d",y);break;
    case 25:printf("Dated this 25th day of February,%d",y);break;
    case 26:printf("Dated this 26th day of February,%d",y);break;
    case 27:printf("Dated this 27th day of February,%d",y);break;
    case 28:printf("Dated this 28th day of February,%d",y);break;
    case 29:printf("Dated this 29th day of February,%d",y);break;
    default:printf("Input error!");
    }
   } else {
    switch(d){
    case  1:printf("Dated this  1st day of February,%d",y);break;
    case  2:printf("Dated this  2nd day of February,%d",y);break;
    case  3:printf("Dated this  3rd day of February,%d",y);break;
    case  4:printf("Dated this  4th day of February,%d",y);break;
    case  5:printf("Dated this  5th day of February,%d",y);break;
    case  6:printf("Dated this  6th day of February,%d",y);break;
    case  7:printf("Dated this  7th day of February,%d",y);break;
    case  8:printf("Dated this  8th day of February,%d",y);break;
    case  9:printf("Dated this  9th day of February,%d",y);break;
    case 10:printf("Dated this 10th day of February,%d",y);break;
    case 11:printf("Dated this 11th day of February,%d",y);break;
    case 12:printf("Dated this 12th day of February,%d",y);break;
    case 13:printf("Dated this 13th day of February,%d",y);break;
    case 14:printf("Dated this 14th day of February,%d",y);break;
    case 15:printf("Dated this 15th day of February,%d",y);break;
    case 16:printf("Dated this 16th day of February,%d",y);break;
    case 17:printf("Dated this 17th day of February,%d",y);break;
    case 18:printf("Dated this 18th day of February,%d",y);break;
    case 19:printf("Dated this 19th day of February,%d",y);break;
    case 20:printf("Dated this 20th day of February,%d",y);break;
    case 21:printf("Dated this 21th day of February,%d",y);break;
    case 22:printf("Dated this 22th day of February,%d",y);break;
    case 23:printf("Dated this 23th day of February,%d",y);break;
    case 24:printf("Dated this 24th day of February,%d",y);break;
    case 25:printf("Dated this 25th day of February,%d",y);break;
    case 26:printf("Dated this 26th day of February,%d",y);break;
    case 27:printf("Dated this 27th day of February,%d",y);break;
    case 28:printf("Dated this 28th day of February,%d",y);break;
    default:printf("Input error!");
   }
  }
  break;
  case 3:
   switch(d){
   case  1:printf("Dated this  1st day of March,%d",y);break;
   case  2:printf("Dated this  2nd day of March,%d",y);break;
   case  3:printf("Dated this  3rd day of March,%d",y);break;
   case  4:printf("Dated this  4th day of March,%d",y);break;
   case  5:printf("Dated this  5th day of March,%d",y);break;
   case  6:printf("Dated this  6th day of March,%d",y);break;
   case  7:printf("Dated this  7th day of March,%d",y);break;
   case  8:printf("Dated this  8th day of March,%d",y);break;
   case  9:printf("Dated this  9th day of March,%d",y);break;
   case 10:printf("Dated this 10th day of March,%d",y);break;
   case 11:printf("Dated this 11th day of March,%d",y);break;
   case 12:printf("Dated this 12th day of March,%d",y);break;
   case 13:printf("Dated this 13th day of March,%d",y);break;
   case 14:printf("Dated this 14th day of March,%d",y);break;
   case 15:printf("Dated this 15th day of March,%d",y);break;
   case 16:printf("Dated this 16th day of March,%d",y);break;
   case 17:printf("Dated this 17th day of March,%d",y);break;
   case 18:printf("Dated this 18th day of March,%d",y);break;
   case 19:printf("Dated this 19th day of March,%d",y);break;
   case 20:printf("Dated this 20th day of March,%d",y);break;
   case 21:printf("Dated this 21th day of March,%d",y);break;
   case 22:printf("Dated this 22th day of March,%d",y);break;
   case 23:printf("Dated this 23th day of March,%d",y);break;
   case 24:printf("Dated this 24th day of March,%d",y);break;
   case 25:printf("Dated this 25th day of March,%d",y);break;
   case 26:printf("Dated this 26th day of March,%d",y);break;
   case 27:printf("Dated this 27th day of March,%d",y);break;
   case 28:printf("Dated this 28th day of March,%d",y);break;
   case 29:printf("Dated this 29th day of March,%d",y);break;
   case 30:printf("Dated this 30th day of March,%d",y);break;
   case 31:printf("Dated this 31th day of March,%d",y);break;
   default:printf("Input error!");
   }
  break;
  case 4:
   switch(d){
   case  1:printf("Dated this  1st day of April,%d",y);break;
   case  2:printf("Dated this  2nd day of April,%d",y);break;
   case  3:printf("Dated this  3rd day of April,%d",y);break;
   case  4:printf("Dated this  4th day of April,%d",y);break;
   case  5:printf("Dated this  5th day of April,%d",y);break;
   case  6:printf("Dated this  6th day of April,%d",y);break;
   case  7:printf("Dated this  7th day of April,%d",y);break;
   case  8:printf("Dated this  8th day of April,%d",y);break;
   case  9:printf("Dated this  9th day of April,%d",y);break;
   case 10:printf("Dated this 10th day of April,%d",y);break;
   case 11:printf("Dated this 11th day of April,%d",y);break;
   case 12:printf("Dated this 12th day of April,%d",y);break;
   case 13:printf("Dated this 13th day of April,%d",y);break;
   case 14:printf("Dated this 14th day of April,%d",y);break;
   case 15:printf("Dated this 15th day of April,%d",y);break;
   case 16:printf("Dated this 16th day of April,%d",y);break;
   case 17:printf("Dated this 17th day of April,%d",y);break;
   case 18:printf("Dated this 18th day of April,%d",y);break;
   case 19:printf("Dated this 19th day of April,%d",y);break;
   case 20:printf("Dated this 20th day of April,%d",y);break;
   case 21:printf("Dated this 21th day of April,%d",y);break;
   case 22:printf("Dated this 22th day of April,%d",y);break;
   case 23:printf("Dated this 23th day of April,%d",y);break;
   case 24:printf("Dated this 24th day of April,%d",y);break;
   case 25:printf("Dated this 25th day of April,%d",y);break;
   case 26:printf("Dated this 26th day of April,%d",y);break;
   case 27:printf("Dated this 27th day of April,%d",y);break;
   case 28:printf("Dated this 28th day of April,%d",y);break;
   case 29:printf("Dated this 29th day of April,%d",y);break;
   case 30:printf("Dated this 30th day of April,%d",y);break;
   default:printf("Input error!");
   }
  break;
  case 5:
   switch(d){
   case  1:printf("Dated this  1st day of May,%d",y);break;
   case  2:printf("Dated this  2nd day of May,%d",y);break;
   case  3:printf("Dated this  3rd day of May,%d",y);break;
   case  4:printf("Dated this  4th day of May,%d",y);break;
   case  5:printf("Dated this  5th day of May,%d",y);break;
   case  6:printf("Dated this  6th day of May,%d",y);break;
   case  7:printf("Dated this  7th day of May,%d",y);break;
   case  8:printf("Dated this  8th day of May,%d",y);break;
   case  9:printf("Dated this  9th day of May,%d",y);break;
   case 10:printf("Dated this 10th day of May,%d",y);break;
   case 11:printf("Dated this 11th day of May,%d",y);break;
   case 12:printf("Dated this 12th day of May,%d",y);break;
   case 13:printf("Dated this 13th day of May,%d",y);break;
   case 14:printf("Dated this 14th day of May,%d",y);break;
   case 15:printf("Dated this 15th day of May,%d",y);break;
   case 16:printf("Dated this 16th day of May,%d",y);break;
   case 17:printf("Dated this 17th day of May,%d",y);break;
   case 18:printf("Dated this 18th day of May,%d",y);break;
   case 19:printf("Dated this 19th day of May,%d",y);break;
   case 20:printf("Dated this 20th day of May,%d",y);break;
   case 21:printf("Dated this 21th day of May,%d",y);break;
   case 22:printf("Dated this 22th day of May,%d",y);break;
   case 23:printf("Dated this 23th day of May,%d",y);break;
   case 24:printf("Dated this 24th day of May,%d",y);break;
   case 25:printf("Dated this 25th day of May,%d",y);break;
   case 26:printf("Dated this 26th day of May,%d",y);break;
   case 27:printf("Dated this 27th day of May,%d",y);break;
   case 28:printf("Dated this 28th day of May,%d",y);break;
   case 29:printf("Dated this 29th day of May,%d",y);break;
   case 30:printf("Dated this 30th day of May,%d",y);break;
   case 31:printf("Dated this 31th day of May,%d",y);break;
   default:printf("Input error!");
   }
  break;
//未完待续
文盲老顾 2023-03-02
  • 举报
回复 1
@赵4老师 看到你们的代码,想起30年前刚学basic时,一个5数字冒泡排序,没用循环生生写了121行。。。记忆尤新
zara 2023-02-28
  • 打赏
  • 举报
回复

什么题目写成了这样的源码?
switch(b) 没大括号? if ... case 2 ... else case 2 这样是不对的,除非是 #if 条件编译

wizardTNT 2023-03-01
  • 举报
回复
@zara 在完成学校的题,我是初学者很多地方不懂,谢谢提醒
****************************** * 编 译 错 误 信 息 * ******************************* '''';'''' not allowed before ''''ELSE'''' ElSE前不允许有“;” '''''''' clause not allowed in OLE automation section 在OLE自动区段不允许“”子句 '''''''' is not a type identifier 不是类型标识符 '''''''' not previously declared as a PROPERTY 前面没有说明PROPERTY ''''GOTO '''' leads into or out of TRY statement GOTO 进入或超出TRY语句的范围 clause expected, but found 要求子句,但出现 16-Bit fixup encountered in object file '''''''' 在对象文件遇到16位修复 486/487 instructions not enabled 不能用486/487指令 Abstract methods must be virtual or dynamic 抽象方法必须为虚拟的或动态的 Array type required 需要数组类型 Assignment to FOR-Loop variable '''''''' 给FOR循环变量赋值 Bad argument type in variable type array constructor 在变量类型数组结构中不正确的参数类型 Bad file format '''''''' 错误的文件格式 Bad file format: 错误的文件格式 Bad global symbol definition: '''''''' in object file '''''''' 对象文件''''''''中错误的全局符号定义'''''''' Bad unit format: 错误的单元格式 BREAK or CONTINUE outside of loop BREAK或CONTINUE超出循环 Cannot add or subtract relocatable symbols 不能增加或减少可重置的符号 Cannot assign to a read-only property 不能指定只读属性 Cannot BREAK, CONTINUE or EXIT out of a FINALLY clause 超出FINALLY子句的范围,不能使用BREAK,CONTINUE或EXIT语句 Cannot initialize local variables 不能初始化局部变量 Cannot initialize multiple variables 不能初始化多个变量 Cannot initialize thread local variables 不能初始化线程局部变量 Cannot override a static method 不能覆盖静态方法 Cannot read a write-only property 不能读取只写属性 Case label outside of range of case expression CASE标号超出了CASE表达式的范围 Circular unit reference to 对单元循环引用 Class already has a default property 类已具有默认的属性 Class does not have a default property 类没有默认的属性 Class or object types only allowed in type section 在类型区段只允许有类或对象类型 Class type required 需要类类型 Close error on 文件关闭错误 Compile terminated by user 用户中止编译 Constant expected 要求常量 Constant expression expected 要求常量表达式 Constant expression violates subrange bounds 常量表达式超出子界范围 Constant object cannot be passed as var parameter 常量对象不能作为变量参数传递 Constant or type identifier expected 要求常量或类型标识符 Constants cannot be used as open array arguments 常量不能用作打开数组参数 Constructing instance of '''''''' containing abstract methods 构造的实体包含抽象的方法 Could not compile used unit '''''''' 不能用单元编译 Could not create output file 不能建立输出文件 Could not load RLINK32.DLL 不能加载RLINK32.DLL Data type too large: exceeds 2 GB 数据类型太大:超过2GB Declaration of differs from previous declaration 的说明与先前的说明不同 Default property must be an array property 默认的属性必须为数组属性 Default values must be of ordinal, pointer or small set type 默认的值必须为序数、指针或小集类型 Destination cannot be assigned to 目标不能指定 Destination is inaccessible 目标不能存取 Dispid '''''''' already used by '''''''' DISPID标识号已被使用 Dispid clause only allowed in OLE automation section DISPID子句只能在OLE自动区段中使用 Division by zero 除数为零 Duplicate case label CASE标号重复 Duplicate tag value 重复的标志值 Dynamic method or message handler not allowed here 这里不允许有动态方法或信息处理程序 Dynamic methods and message handlers not allowed in OLE automation section在OLE自动区段不允许有动态方法或消息处理程序 Element 0 inaccessible - use ''''Length'''' or ''''SetLength'''' 元素0不能存取-使用LENGTH或SETLENGTH Error in numeric constant 数值常量错误 EXCEPT or FINALLY expected 要求EXCEPT或FINALLY EXPORTS allowed only at global scope EXPORTS只允许在全局范围使用 Expression has no value 表达式没有值 Expression too complicated 表达式太复杂 Field definition not allowed in OLE automation section 在OLE自动区段中不允许域定义 Field definition not allowed after methods or properties 在方法或属性后不允许域定义 Field or method identifier expected 要求域或方法标识符 File not found: 文件没有找到 File type not allowed here 这儿不允许文件类型 For loop control variable must be simple local variable FOR循环控制变量必须为简单局部变量 For loop control variable must have ordinal type FOR循环控制变量必须为序数类型 FOR or WHILE loop executes zero times - deleted FOR或WHILE循环执行零次-删除 FOR-Loop variable '''''''' cannot be passed as var parameter FOR循环变量不能作为参数传递 FOR-Loop variable '''''''' may be undefined after loop 在循环后的FOR循环变量是不确定的 Function needs result type 函数需要结果类型 Identifier redeclared: '''''''' 标识符重复说明 Illegal character in input file: '''''''' ($) 在输入文件中的非法字符'''''''' Illegal message method index 非法的消息方法指针 Illegal reference to symbol '''''''' in object file '''''''' 在对象文件中对符号的非法引用 Illegal type in OLE automation section: '''''''' 在OLE自动区段中的非法类型 Illegal type in Read/Readln statement 在Read/Readln语句中的非法类型 Illegal type in Write/Writeln statement 在Write/Writeln语句中的非法类型 Inaccessible value 不可存取的值 Incompatible types: '''''''' and '''''''' 不兼容的类型和 Incompatible types: 不兼容的类型 Inline assembler stack overflow 内联汇编溢出 Inline assembler syntax error 内联汇编语法错误 Instance variable '''''''' inaccessible here 实体变量在这里不能存取
PassMark BurnInTest V5.3 Copyright (C) 1999-2008 PassMark Software All Rights Reserved http://www.passmark.com Overview ======== Passmark's BurnInTest is a software tool that allows all the major sub-systems of a computer to be simultaneously tested for reliability and stability. Status ====== This is a shareware program. This means that you need to buy it if you would like to continue using it after the evaluation period. Installation ============ 1) Uninstall any previous version of BurnInTest 2) Double click (or Open) the downloaded ".exe" file 3) Follow the prompts UnInstallation ============== Use the Windows control panel, Add / Remove Programs Requirements ============ - Operating System: Windows 2000, XP, 2003 server, Vista (*) - RAM: 32 Meg - Disk space: 6 Meg of free hard disk space (plus an additional 10Meg to run the Disk test) - DirectX 9.0c or above software for 3D graphics and video tests (plus working DirectX drivers for your video card) - SSE compatible CPU for SSE tests - A printer to run the printer test, set-up as the default printer in Windows. - A CD ROM + 1 Music CD or Data CD to run the CD test. - A CD-RW to run the CD burn test. - A network connection and the TCP/IP networking software installed for the Network Tests Pro version only: - A serial port loop back plug for the serial port test. - A parallel port loop back plug for the parallel port test. - A USB port loop back plug for the USB port test. - A USB 2.0 port loop back plug for the USB 2.0 port test. - PassMark ModemTest V1.3 1010 (or higher) for Plugin Modem testing. - PassMark KeyboardTest V2.2 1011 (or higher) for Plugin Keyboard testing. - PassMark Firewire Plugin V1.0 1000 (or higher) and a 揔anguru FireFlash?drive for Plugin Firewire testing. (*) Windows 2000 does not support the CD-RW burn test. The advanced RAM test is only available under Windows 2000 and Windows XP professional (the other RAM tests are supported under the other OS's). Users must have administrator privileges. Windows 98 and Windows ME ========================= Windows 98 and ME are not supported in BurnInTest version 5.3 and above. Use a version of BurnInTest prior to 5.2 for compatibility with W98 and ME. Windows 95 and Windows NT ========================= Windows 95 and NT are not supported in BurnInTest version 4.0 and above. Use a version of BurnInTest prior to 3.1 for compatibility with W95 and NT. Version History =============== Here is a summary of all changes that have been made in each version of BurnInTest. Release 5.3 build 1035 revision 4 WIN32 release 10 November 2008 - Lenovo China specific build. Lenovo system detection changes. Release 5.3 build 1035 revision 3 WIN32 release 7 November 2008 - Lenovo China specific build. Lenovo system detection changes. Release 5.3 build 1035 revision 2 WIN32 release 6 November 2008 - Lenovo China specific build. Lenovo logo and Lenovo system detection changes. Release 5.3 build 1035 WIN32 release 5 November 2008 - Lenovo China specific build. Changes include: Lenovo logo added, Lenovo system support only, 32-bit BurnInTest restricted to 32-bit Windows and BurnInTest run as administrator. Release 5.3 build 1034 WIN32 release 3 October 2008 - Correction to setting the CD burn test drive in preferences. - Changed the mechanism to check for the required DirectX Direct3D as the previous method did not work on some system (some W2003 servers). - Enhanced the mechanism to report memory hardware errors in the Memory torture test. Release 5.3 build 1033 WIN32 release 1 October 2008 - Changes to correct a BurnInTest crash problem on some systems. When the disk and standard RAM tests are run for many hours, BurnInTest may have disappeared with no error message. Release 5.3 build 1030 WIN32 release 25 September 2008 - Changes to investigate a BurnInTest crash problem on XP SP3. Release 5.3 build 1028 WIN32 release 11 September 2008 - Two 2D Video memory test crash bug workarounds implemented. Crashes in (i) DirectX DirectShow and (ii) ATI atiumdag.dll library. - A hang on startup has been corrected. A 2 minute timeout has been added to the collection of system information. - Video playback, Hard disk and CD/DVD test 'no operations' error reporting changed. - When BurnInTest crashes, it will not generate a "minidump" file. Minidumps will need to be sent to Microsoft as per the normal process. However, a log entry will be added to the normal BurnInTest log. - Changes to trace logging to reduce activity when trace logging is not turned on. - Note: We have seen a report of the Video Playback failing (crash) due to a faulty video codec, ffdshow.ax. If you are using this we suggest you try a different Video file and codec. Release 5.3 build 1027 revision 0003 WIN32 release 19 August 2008 - Changed the 2D test to wait for the Video Playback test in order to allow memory allocation for the Video playback test. - Changed the Memory test to wait for the Video Playback test and 3D test to allow memory allocation for these tests. - Minor changes to the No operation error watchdog timer for the CD and Hard disk tests. - Minor correction to the Butterfly seek test. - Video playback trace logging increased. Release 5.3 build 1027 revision 0002 WIN32 release 19 August 2008 - Video playback trace logging increased. Release 5.3 build 1027 WIN32 release 31 July 2008 - Corrected a bug where BurnInTest would fail to start if Activity trace level 2 logging (debug level logging) was turned on and the Logging Summarize option was also selected. - Minor change to the serial port test where, if "Disable RTS/CTS and DSR/DTR test phase" was selected the DTR and RTS lines would be explicitly disabled to prevent any toggling of these lines. Previously these where enabled, but not explicitly toggled. Release 5.3 build 1026 WIN32 release 17 July 2008 - Updated Level 2 and Level 3 CPU cache information for newer Intel CPU's. - Updated the detection of Hyperthreading and the number of logical CPUs for a new Intel CPU. Release 5.3 build 1025 WIN32 release 11 July 2008 - Corrected a Disk test bug where on rare occasions a verification error is incorrectly displayed. This is during the random seeking phase of the "Random data with random seeking" test mode and only occurs with some specific test settings. Release 5.3 build 1024 WIN32 release 10 July 2008 - Workaround for the rare crash bug in Vista in atklumdisp.dll at address 0x730676ae. - Added trace debug information for BurnInTest startup and the 3D test. Release 5.3 build 1022 WIN32 release 12 June 2008 - Corrected a bug where the 2D video memory test in BurnInTest v5.3.1020 and v5.3.1021 would report a "Not enough video memory available for test" error if the test was run a couple of times (without closing BurnInTest). Release 5.3 build 1021 WIN32 release 5 June 2008 - 32-bit BurnInTest PRO 5.3.1020 would not start on Windows 2000. This has been corrected. Release 5.3 build 1020 WIN32 release 29 May 2008 - BurnInTest could have crashed on accessing bad video memory hardware in the 2D test. This problem is now just reported as an error (and BurnInTest) continues. - When BurnInTest crashes, it should now generate a "minidump" file to help debug which system component caused the failure (32-bit Pro version only). - Other minor changes. Release 5.3 build 1019 WIN32 release 16 May 2008 - Corrected rare crash bugs in the 2D and Video tests. - Added a hot Key, F4, to set the auto run flag and run the tests (i.e. set "-r" and then run the tests). - Other minor changes. Release 5.3 build 1018 WIN32 release 16 April 2008 - Added an operation watchdog timer for all tests. In rare cases, a single test can stop in the operating system - i.e. there is a problem in the operating system/ device driver that prevents control being returned to the BurnInTest for that test. This was added for specialized serial port hardware that could lockup after several hours of testing. Release 5.3 build 1017 WIN32 release 3 April 2008 - Corrected the Advanced Network test to run on non-English Operating Systems. Release 5.3 build 1016 WIN32 release 17 March 2008 - Added additional USB 2.0 Loopback plug test initialization to ensure plugs are in a 'clean' state when starting the USB tests. This was added due to reported USB data verification errors after scripted USB testing across multiple reboots. Release 5.3 build 1015 WIN32 release 27 February 2008 - Increased error reporting detail for the standard RAM test, when the -v command line option is used. Release 5.3 build 1014 WIN32 release 30 January 2008 - Corrected a problem where the loopback sound test could run out of memory if run for several days. Release 5.3 build 1013 WIN32 release 31 December 2007 - Improved the reporting of COM port errors such that in the rare case a COM port locks up in the Operating System, the error is still reported. - Corrected a bug, where in rare cases, the result summary could be duplicated in a log file. - Updated license management, in an attempt to remove a rare crash on startup. Release 5.3 build 1012.0002 WIN32 release 31 October 2007 - New build of Rebooter (64-bit Windows correction). - Clarifications in the help file. Release 5.3 build 1012 WIN32 release 17 October 2007 - Changed the Standard Network Test, "Test all available NICs" such that the number of Network Addresses specified in Preferences->Network will be the number of NICs tested. This will error faulty NICs that are not detected by the BurnInTest auto NIC detection mechanism. - Minor change to the 2D memory test when run with the 3D test (multiple large windows) and the RAM test. Aimed at correcting sympton: Access Violation 0x00404CF9. - Corrections to the mapping of paths with ".\". Release 5.3 build 1011 rev 2 WIN32 release 17 September 2007 - Modified the Multi-Process torture test to better describe a new error message introduced in V5.3.1010. Release 5.3 build 1011 - Public release WIN32 release 11 September 2007 - Corrected a bug where "Limited Evaluation Version" could be displayed even after BUrnInTest is licensed (problem introduced in 32-bit BITPRO V5.3.1010). - Changed the Sound test to allow any of the tests (Wave, Midi or MP3) to be excluded from testing by blanking the filename. - The Command line parameter "-j" (cycle disk test patterns after each test file) could fail during the Random data test due to the mechanism used in BurnInTest. The Random data test is now excluded from the test when (and only when) the "-j" command line parameter is specified. - In rare circumstances, the 2D test number of operations could potentially overflow and become negative. This has been corrected. - In rare circumstances, BurnInTest could hang if there was a system problem in rebooting the system (ie. it failed to shutdown) using PassMark Rebooter. This has been corrected. Release 5.3 build 1010 - Public release WIN32 release 28 August 2007 WIN64 release 28 August 2007 - As BurnInTest exercises system components, it is possible for faulty hardware or device drivers to cause software exceptions. These are normally seen as Windows reporting an "Access Violation". Changes have been made to handle these errors for the memory tests (for faulty RAM) and direct device driver access (for some device driver errors), as well as overarching more generic handling of these types of errors. - Corrected a software failure bug on startup (particularly Vista) where a DirectX function was causing software failures in "dsetup.dll". - Updated the "Activity Event" generated with the periodic results summary report to be numbered (from 1 upwards) such that when "Logging->Summarize", these events are not summarized. - Corrected a bug where the HTML log name could include a duplicate of the filename prefix. - Updated to the Common Errors section of help. Release 5.3 build 1009 - Public release WIN32 release 16 August 2007 - Corrected a 'zip' version cleanup problem. Release 5.3 build 1008 - Komputer Swiat Expert magazine version WIN32 STD release 14 August 2007 Release 5.3 build 1007 - Public release WIN32 release 7 August 2007 - Corrected a disk test startup problem for some large RAID systems when SMART testing is selected. - Added additional logging for the disk test when an error occurs. - Changed the 3D test when run with the 2D EMC test to be 'behind' the EMC scrolling H's test. Allowed the test to be easily exited when running the 3D test in Fullscreen mode. - Minor corrections to the Advanced Network test. - Changed the log file reference of "Network Name" to "Computer Name". WIN64 specific: - MMX and 3DNow! are obsolete for native 64-bit applications. BurnInTest has been changed to show "NA" (Not applicable) in the test window for these tests. Release 5.3 build 1006 - Limited release WIN32 release 17 July 2007 - Standard Network Test changes: - Increased the number of destination IP addresses from 4 to 6. - Added an option (default) "Test all available NICs", which will force traffic down every system NIC with a basic algorithm of NIC1 to IP Address 1, NIC2 to IP Address 2 etc. - Advanced Network test changes: - Simplified the test. - Removed the UDP and FTP options. The Standard Network test can be used as a UDP test. - Removed the Advanced Network test specific logging, and included all relevant logging in the standard BurnInTest logging mechanism. - Replaced the complicated dynamic balancing of any system NIC to any Endpoint NIC with a simpler static allocation on test startup. - Changed the error detection mechanism to detect errors much more quickly. - Re-worked the errors reported. - Changed the CPU throttling mechanism to reduce the CPU load. - Updated endpoint.exe. - Removed checkend.exe (now obsolete). - Changed the logging rollover to work with the output of interim results (e.g. per 1 minute). Previously rollover only occurred on error events written to the log. This also corrected an issue where interim results summary logging could be written to the physical disk with some delay (based on Windows disk caching). - Corrected the "Unknown" reporting of some operating systems. - Added the skipping of the Butterfly seek disk test when run on Vista and insufficient privileges. A notification of this is logged. - Intel Quad core L2 cache size reporting has been added. - Added new SMART threshold descriptions. - Added new disk test options, accessed via command line parameters: /ka: keep disk test files in all cases (c.f. /k keep disk test files on error). /j: cycle patterns between test files. Note: Random seeking will be skipped in this case. This option has been added to allow multiple test patterns to be used across very large disks. - Added an option to make some test settings unavailable to the user. An example configuration file available on request. Release 5.3 build 1005 0001 (STD only) - Public release WIN32 release 29 June 2007 - Corrected a bug introduced in v5.3.1005.0000 STD (only) where the disk test would use up more and more system resources, thus causing test failures. Release 5.3 build 1005 rev 0003 (PRO only) - Limited public release WIN32 release 21 June 2007 - Correction to the behavior of a static RAM test pattern (rather than the default Cyclic pattern). Release 5.3 build 1005 rev 0002 (PRO only) - Limited public release WIN32 release 15 June 2007 - The "Select all CD/DVD drives" preferences option has been made user configurable, rather than using pre-defined test settings. Release 5.3 build 1005 rev 0001 (PRO only) - Limited public release WIN32 release 13 June 2007 - Bug correction for the CD auto selection feature. Release 5.3 build 1005 - Public release WIN32 release 18 May 2007 WIN64 release 18 May 2007 - In a number of cases, such as when specifying the post test application, uppercase application names were not accepted. This has been corrected. - The default font height in the 2D scrolling H's test should have been Arial 9. This has been changed. - The BurnInTest Video playback test incompatibility with Nero 6 and Nero 7 has been resolved. - The BurnInTest disk test throughput for dual core systems has been improved. Release 5.3 build 1004 rev2 - Limited release WIN32 release 8 May 2007 - Changed the Standard Network Test to better report packet error ratios. In addition, a new warning has been added to indicate that errors have been detected but not enough packets have been attempted to be sent to determine accurately whether the configured error ratio has been exceeded. - Corrected a bug where the "append to existing" logging option did not work across scripted reboots, and a new log file was created instead of appending to the existing log file. - If the 3D test was running, then BurnInTest blocked a forced close of BurnInTest, this blocking has been removed. - Changed the PASS and FAIL windows so they can now also be closed by selecting the Windows Close "X" button. Release 5.3 build 1004 - Public release WIN32 release 10 April 2007 WIN64 release 10 April 2007 - Corrected a problem introduced in BurnInTest v5.2 where BurnInTest could run out of memory (the main symptom) when tests where run for long periods (> 12hours). WIN64 specific: - Corrected a bug where the number of cores reported on a Quad core system was incorrectly reported as CPU packages. Release 5.3 build 1003 - Limited release WIN32 release 3 April 2007 - A new 2D GUI (Graphical User Interface) test has been added to the standard 2D graphics test. - Resolved an issue where BurnInTest would fail to start on Vista systems with DEP enabled for all programs. - On some systems, the Disk test could pause momentarily even when a duty cycle of 100% was specified. This pause has been removed. - When running the CD test under BartPE (Pre-install environment) 4 additional specific files are skipped as they are unavailable for testing. - Minor bug corrections. Release 5.3 build 1002 rev 0001 - Limited release WIN32 release 16 March 2007 - Changes to the new 3D test: - Added a Full screen non-windowed test for the primary monitor, where the resolution can be selected from those supported by the Graphics card. - Added the user option of changes the vertical sync in the full screen non-windowed test to be either the Maximum rate of the graphics card, or to be the rate of the monitor (this may prevent some flicker). - Added a more complex water texture using DirectX Vertex Shader 2.0 and Pixel Shader 2.0 effects (if supported by the graphics card). This applies to 3D test windows that are 800x600 or larger. - Changed some error messages from window displays (that require user intervention) to standard error reporting. Added new 3D error messages and more detail in the error reporting. - Changed the definition of an operation to be a successfully displayed frame. - Changed the definition of a cycle to be 2000 frames. - Changed 2D video memory test to wait until the 3D test starts (as per V5.2 and earlier). - A new version of rebooter has been included. - If BurnInTest is started with the -p command line parameter (to use the bit.exe directory for files such as the configuration file), then BurnInTest will start rebooter with the -p option. This can be useful when running BurnInTest and Rebooter from a USB drive. Release 5.3 build 1002 - Limited release WIN32 release 19 March 2007 - Corrected a bug introduced in V5.2 where selecting accumulated logging could lead to rebooter failing to launch. Release 5.3 build 1001 - Limited release WIN32 release 16 March 2007 - The 3D test has been improved. The 3D ball test has been replaced with a more complex 3D terrain test. This will more thoroughly exercise modern graphics cards. Further, the 3D test has been changed to support multi- monitor testing (up to 4 monitors). Accordingly, a new preferences section has been added for the 3D test. The multi-monitor test options are only available in BurnInTest Professional. Release 5.3 build 1001 - Limited release WIN32 release 16 March 2007 - The 3D test has been improved. The 3D ball test has been replaced with a more complex 3D terrain test. This will more thoroughly exercise modern graphics cards. Further, the 3D test has been changed to support multi- monitor testing (up to 4 monitors). Accordingly, a new preferences section has been added for the 3D test. The multi-monitor test options are only available in BurnInTest Professional. - BurnInTest uses DirectX 9.0c. This version of BurnInTest uses a more recent version of the Microsoft DirectX Direct3D component, October 2006. BurnInTest has been modified to detect and install this component (file) if it does not exist. - A command line parameter -X has been added to skip the DirectX version checking on BurnInTest start-up. - With the recent introduction of multi-monitor support for the Video Playback test, it is now more likely that the system will run out of memory when running multiple video tests simultaneously, particularly when more memory intensive codecs are used. A specific Insufficient resources to complete test message has been added in this case, rather than the previous more generic unrecoverable error message. The video test have been changed to attempt recovery from this and the more generic unrecoverable error, by closing the current video and opening the next. The logging detail has been increased. - Note: The BurnIntest sample video pack has been altered with the DivX Compressed Video file being removed due to the DivX codec failing with this Video file when used with multiple simultaneous Video playbacks. Access Violation: 0x69756e65. See: http://www.passmark.com/download/bit_download.htm - The video description is now collected for a larger range of Vista systems. - Windows 98 and ME are no longer supported. Please see www.passmark.com for a link to an older version of BurnInTest that will support W98/ME. Release 5.3 build 1000 rev2 - Limited release WIN32 release 9 March 2007 - A command line parameter -P has been added to allow the BurnInTest directory to be used rather than the User's personal directory. This may be useful when running BurnInTest from a USB drive for example. - When running the CD test under BartPE (Pre-install environment) 4 additional specific files are skipped as they are unavailable for testing. - A change has been made to support Hmonitor temperature monitoring on Vista. - A number of undocumented command line parameters have been documented: -B: BurnInTest will generate additional Serial port test information when activity trace level 2 logging is set. -E [data]: Specifies the test data to use in the serial port test. -M: Automatically display the Machine ID Window when BurnInTest is started. -U: Force BurnInTest to set logging on at startup. Release 5.3 build 1000 - Limited release WIN32 release 8 March 2007 - Changed the 2D and Video playback tests to support multi-monitor testing. - When running the CD test under BartPE (Pre-install environment) 4 specific files are skipped as they are unavailable for testing. Release 5.2 build 1006 - Limited release WIN32 release 1 March 2007 - Corrected a bug where BurnInTest would fail to start on certain Vista systems. - Corrected a bug where some files where the full path was not specified would be incorrectly referenced in the Program Files directory, rather than the user personal directory. Release 5.2 build 1005 - Public release WIN32 release 21 February 2007 WIN64 release 21 February 2007 - Updated the Graphics card description for Windows Vista systems. - Updated the Advanced Network test to indicate that elevated administrator privileges are required when running on Vista. - Moved files from the Program files directory for the Advanced Network Test (BurnInTest, EndPoint and CheckEnd). Specifically, the User Application directory is now used for the temporary test FTP files and the User Personal directory is now used for the log and configuration files. - Updated the cleanup process for when running the "zip" version of BurnInTest Professional from a CD or flash drive. - Updated the help link from the Windows Start, All Programs, BurnInTest menu for the browser based help. - Corrected a bug where Disk preferences displayed in the Preferences window would be incorrect when the system had no Floppy drive. - Corrected a bug where the Advanced Network test might not have been displayed until after entering the Duty Cycle selection (ie. just chaning from the standard network test to the advanced test). - Corrected a USB bug in Beta 5.2.1003 where the test would not run if there where there insufficient USB loopback plugs attached to the system. - Included a new version of PassMark Rebooter that supports Windows Vista. Release 5.2 build 1004 - Public Pre-release WIN32 release 13 February 2007 - Updated the reported Operating system for the various Vista product editions. - Disk test settings can be configured for "Automatically Select all Hard Disks", rather than using defaults. - When running the CD test under BartPE (Pre-install environment) 4 specific files are skipped as they are unavailable for testing. - Corrected a bug where temperature information could be duplicated in the HTML report. - Corrected a bug certain 'save report' warning messages could be truncated. - Help file updated. Release 5.2 build 1003 - BETA RELEASE ONLY WIN32 release 23 January 2007 - Changed the USB preferences and test to more completely check for the PassMark USB Loopback plugs and ignore any device that is not a PassMark USB Loopback plug (due to reported incorrect detection with another hardware device). - Increased Trace level debugging for Intel temperature monitoring. - Corrected a bug with the disk test introduced in 5.2.1001 Release 5.2 build 1002 - BETA RELEASE ONLY WIN32 release 22 January 2007 - Increased the number of disks that can be tested from 20 to 26. - Updated BurnInTest to reflect that Temperature monitoring with Intel Desktop utilities is supported. Intel Desktop utilities essentially is a replacement for Intel Active Monitor for newer Intel motherboards. - Increased Trace level debugging for Intel temperature monitoring. Release 5.2 build 1001 - BETA RELEASE ONLY WIN32 release 19 January 2007 - Windows Vista support. - The Block size used in the disk test is now configurable per disk. The default block size has been increased from 16KB to 32KB. - An option has been added to automatically detect all of the CD and DVD drives for the CD test (as per the disk test). This may be useful when testing across many systems with different optical drive configurations. - Increased Trace level debugging for Intel temperature monitoring. - Bugs corrected: - Disk preferences - in rare cases invalid default values could be set for a disk, an invalid value error would occur and the values would need to be manually corrected. Release 5.2 build 1000 - limited release WIN32 release 8 January 2007 - Windows Vista support. - Reduced the need for elevated administrator privileges: - Changed the location of the disk test files from the root directory of the test volume to a BurnInTest data files subdirectory (e.g from "C:\" to "C:\BurnInTest test files\") - Moved many of the files from the Program Files directory to the User directory for Windows 2000, XP and Vista. When running BurnInTest on Windows 98, ME or from a key.dat file (e.g. from a USB drive with a licensed key.dat) BurnInTest will store these files in the BurnInTest program directory. Specifically, the following files have been moved from the Program Files directory to the User Personal directory, e.g. Vista - "C:\Users\\Documents\PassMark\BurnInTest\" XP - "My Documents\PassMark\BurnInTest\" Files: Configuration file, Configuration load/save default directory, Save log file and image default directory, parallel port override "ioports.dat" directory, default command line script directory, log file directory, video file directory, Plugin directory, machine id file directory, Run as script default directory, CD burn image, Advanced network FTP temp files. - Replaced the Help system with Browser based help. - Changed the Disk test block size from 16KB to 256KB. It is planned to make this user configurable in the next build. Release 5.1 build 1014 WIN32 release 2 November 2006 WIN64 release 2 November 2006 - Corrected a bug when running on Vista, where the Standard network test would report a checksum error when the transmitted data was correct. - Corrected a bug where BurnInTest would not stop the tests based on the number of test cycles for the Plugin test or the Advanced Network test. - Made the "Could not set USB2Test mode" USB error message more specific by adding an error for insufficient system resources. - Changed the preferences Window to fit on an 800x600 resolution screen. - Corrected a minor bug in Activity level 2 trace logging with the 'hide duplicate' preference setting. - Corrected a minor memory leak if the 2D test failed to initialize (such as due to a DirectX problem). - The Parallel port test may now be used on Windows Vista. Specifically, the PassMark device driver used for the parallel port test could not be loaded on 64-bit Windows Vista as it was not digitally signed. It is now digitally signed. Release 5.1 build 1013 revision 0002 WIN32 release 19 September 2006 WIN64 release 19 September 2006 - Corrected an Access Violation problem reported by a customer on a particular MB. Release 5.1 build 1013 WIN32 release 7 September 2006 WIN64 release 7 September 2006 - The "Notes" section has been added to the Customer results certificate. - Some additional configuration range validation has been added. Release 5.1 build 1012 WIN32 release 15 August 2006 - Corrected a false report of a "Unable to get disk volume extent information" for the disk butterfly seek test. - Advanced Network test changes for errors: "Corrupt header - packet discarded" and "Advanced Network test timed out" - Advanced Network test Endpoint changes for problems on non-English Operating Systems and systems with the Windows "Network Interface" performance statistics disabled. - SMART parameters on a Samsung Hard Disk caused BurnInTest to fail when running the disk test with SMART thresholds enabled. This has been corrected. - The 2D scrolling H's test could display corrupt characters on the second and subsequent test run. This has been corrected. - A problem with the Integer maths test where the results could display a negative number of operations has been resolved. - Minor improvements to the help file. - HTML help file added for Windows Vista and Longhorn Server. - Minor improvements to the Error Classification file (error descriptions). - Some CD Trace level 1 logging has been moved to trace level 2. - Trace level 1 logging has been added to the test closing software. - New build of Endpoint.exe (1.0 1010). Release 5.1 build 1011 WIN32 release 6 July 2006 - New Advanced Network test error reporting added in the previous build V5.1 1010 has been removed. - A broader range of USB 2.0 Loopback plugs can now be used with BurnInTest. Release 5.1 build 1010 WIN32 release 4 July 2006 - Corrected the HTML report description of the L2/L3 CPU cache when the L3 cache size could not be determined. Advanced network changes: - Endpoints ran at 100% CPU load as they contained no throttling. This impacted their ability to effectively handle multiple threads handling TCP/UDP messaging. Throttling has been added to the EndPoint side to reduce CPU load. This does not greatly impact Network load. - Throttling on the BurnInTest side contained a sleep that was not insignificant. This could have impacted the BurnInTest data test thread to to handle incoming TCP and particularly UDP messages. This sleep has been reduced and other throttling parameters changed to suit. (ie. smaller sleeps more often). - EndPoint systems with x NICs (where x > 1), reported themselves as an Endpoint with x NICs, x times. Effectively registering with BurnInTest as x * x EndPoint NICS. This impacted the effectiveness of the load distribution to EndPoint NICs. An Endpoint system now only registers the once with BurnInTest. - The BurnInTest side did not report data verification Checksum errors for full duplex testing. This error determination has been corrected and reporting added. - The Test statistics sent from the Endpoint to BurnInTest could fail if the statistics block is split across 2 lower level TCP send packets. This could lead to problems like incorrect reporting of Endpoint determined checksum errors, Endpoint load and load balancing. Further it would lead to an Endpoint testthread being put into an endless TCP send loop. This would eventually bring the Endpoint system to its knees as more and more of these test threads go into this state. This has been corrected. - The Data Received reported by BurnInTest was double counted. This has been corrected. Release 5.1 build 1009 WIN32 release 23 June 2006 - Plugin test error classifications were incorrect in the log file detailed description. - Corrections to the advanced network test (BurnInTest and EndPoint). Release 5.1 build 1008 - limited release WIN32 release 20 June 2006 - Advanced network changes corrections. Most notably, a bug where part of the payload data could be lost if the payload block (eg. 1000 bytes) was split across 2 (or more) lower level TCP packets. - Added version reporting for Endpoints. Release 5.1 build 1007 - limited release WIN32 release 16 June 2006 Advanced network changes: - Corrected a BurnInTest access Violation introduced in V5.1 1006. - The Endpoint now reports its version and build to BurnInTest and BurnInTest reports this in the log file if it is an earlier version than expected. This is to help avoid the situation where old Endpoints are run on the Network, that may not be compatible with the version of BurnInTest being run by the user. - Removed a timeout report in a specific instance where a timeout is not an error. - Changed the Endpoint rebalancing and polling to occur less often after the test has been running 3 minutes. This is to help allowing the handling of polling from a larger number of multiple copies of BurnInTest on the Network. - Added a connection retries on failure for the Endpoint. - Corrected a memory leak in the Endpoint. - Increased the number of sockets supported. - Corrected some Advanced Network error classifications. Release 5.1 build 1006 - limited release WIN32 release 14 June 2006 - Improvements to the Advanced Network test (both BurnInTest V5.1 1006 and EndPoint V1.0 1004) to remove corrupted false packet corruption errors. Improved the timeout recovery mechanism. Added some validation to the Windows Network performance data used for NIC utilization. - Changes to the collection of Disk drive information on startup to try to resolve a startup issue on Systems with a large number of physical drives and 'unusual' WMI namings. Release 5.1 build 1005 WIN32 release 2 June 2006 - Corrected a bug in the Advanced network test where the test would not recover from timeout errors. The test appears to be running, but the results are 0 and the number of connected End Points are 0. Also improved the retry on timeout mechanism. - Removed some duplication in error reporting in the Advanced Network test. - Changed the Advanced Network display of Utilization to ensure a maximum of 100% displayed. - Corrected an Advanced Network test bug where the number of Errors reported in the test window would not take into account the corrupt packet threshold, and an error would be added for each occurrence of the corrupt packet (rather than when the user set threshold was reached). Release 5.1 build 1004b WIN32 release 25 May 2006 (not publicly released) - Corrected the default Advanced network corrupt packet threshold value. - Updated the data entry fields in the CD preferences when a different CD drive is selected. - The Advanced Network specific log files should be concatenated for a script run. This was only occurring for the first NIC under test. The concatenation will now occur for each NIC under test, when run from a script. - Corrected a bug where a log file name specified with no directory path could be incorrect. - Corrected a bug where the customer "Test Certificate" report incorrectly translated the "%" character from a customer specific HTML template. eg would be translated to . - The "Advanced Network test error" (215) has been removed and replaced with other existing error messages 214, 219, 220, 221 or 222. - Added the Customer name and Technician name to the text and HTMl reports. Previously, this information was only included in the "Test Certificate" report. - We have added a commandline option to specify the Serial port test data as a constant value. To specify specific data for the Serial port test you should specify e.g. "bit.exe /E 23" from the command line where 23 is in decimal and will be used for all test data (instead of random data). The vales should be between 0 and 255. Release 5.1 build 1004 WIN32 release 19 April 2006 (not publicly released) - Added the COM port speed of 921600 Kbits/s for RS 422/RS485 testing. - Changed the CD test to ensure that the entire test CD data is not cached on systems with a large amount of RAM. - Added a -M command line option to display the Machine ID window automatically when BurninTest starts. - Changed the 2D EMC scrolling H's test to work on multiple monitors were the resolution on each is different. - Changed log files such the syntax "..\" could be used for files in the directory up a level. - Minor correction to the advanced network test. Release 5.1 build 1003 WIN32 release 18 April 2006 WIN64 release 18 April 2006 - Changed the Advanced network test to allow a corrupt packet threshold value up to 1 million. - Bundled a new version of rebooter. Release 5.1 build 1002 WIN32 release 11 April 2006 WIN64 release 11 April 2006 - Corrections to the translation of V4.0 to V5 configuration files. Note: Configuration files in V5.x builds prior to V5.1 1002 could become corrupted if a V4.0 configuration file is loaded. - Corrected a bug where the main Window size and location were not restored on restarting BurnInTest. - Changes to the SMART attribute logging to support a greater range of Disk drive device drivers. Added additional Activity Level 2 trace logging. - Added an option to use CTS (Clear To Send) flow control in the loop back stage of the COM port test. - Corrected a bug where the CPU L3 cache could be reported as -1. - Help file updates. Release 5.1 build 1001 WIN32 release 30/March/2006 - Digitally signed the BurnInTest application to allow it to run under Windows Server "Longhorn". Note, previously only the installation package was digitally signed. - Updated the reported Operating system descriptions, including: - Windows Vista - Windows Server "Longhorn" - Corrected a bug where the Advanced network information was not displayed on the main window when it was run from a script. - The Advanced Network Corrupt threshold packet has been changed to produce an error every time the error is received after the threshold is reached. - Corrected the reporting of "Network, Packet discarded due to corrupt header" as a Network test error. - Corrected a bug where a new log file was not created if (only) the log prefix changed during the running of a script file. - Split the "Network, Advanced Network test error" error into 6 errors: "Network, Advanced Network test error" "Advanced Network Socket error" "Advanced Network Send error" "Advanced Network Send error - no data sent" "Advanced Network Receive error" "Advanced Network Receive error - no data received" Added either activity trace 1 or trace 2 logging for each of the errors, with additional information where available. - Added additional Serial port activity trace 2 logging. Including the logging of all transmit buffer data when the /B command line is used. Release 5.1 build 1000 WIN32 release 27/March/2006 (not a public release) Added the following features: - Create the log file directory specified in the Logging Options if it does not exist. - Condense the Advanced Network Test log files to one log file per IP address per script run, when run from a script. - Added an option to summarize duplicate errors in the log file. - Color coded errors based on severity in the Detailed event log Window and the HTML log file. - Added an option to only create a log file when BurnIn actually runs a test as opposed to every time BurnIn is executed. - Added a warning if a test thread completes with 0 cycles and 0 operations. - In the results summary html file, inserted more spacing between the 揘otes? and 揇etailed Event Log? - Changed the Activity Trace file format to be the same as the log file, ie. text or HTML, rather than always text. - The 2D 揝crolling H抯?test will now display across multiple screens/displays ?i.e. all active displays. - A threshold has been added for the 揷orrupt header ?packet discarded?event in the advanced network options so that a 揊ail?is not produced when that is the only thing that produces errors. - Added looping capability in scripting. LOOP n { ? } where n is the number of times to repeat the commands in the brackets. - Corrected a bug where PASS could be displayed if the Advanced Network test was the only test running, but it failed. Release 5.0 build 1001 WIN32 release 9/March/2006 - Corrected a bug where Network directory paths were not accepted, eg. for the log file name and post test application file name. - The CPU maths test has been improved to better load up all CPU's. Previously BurnInTest started a maths test thread per physical CPU package. BurnInTest has been changed to start a maths test thread per CPU (= num. physical CPU packages x num. CPU cores x num. logical CPUs). - The CPU preferences have been changed to allow the CPU maths test to be locked to any CPU (ie. select a CPU from a list of CPU's where the number of CPU's = num. physical CPU packages x num. CPU cores x num. logical CPUs). - The Parallel and Serial port error message have been modified in the case where a test plug may not have been connected to indicate that the user should check this. - Corrected a bug where a licenced version could display the message "[limited evaluation version]" Release 5.0 build 1000 WIN32 release 24/February/2006 WIN64 release 24/February/2006 NEW TESTS & IMPROVEMENTS TO EXISTING TESTS BurnInTest Standard and Professional versions. - Added a customer style results certificate. This will save the log file in HTML format but from the perspective of a end customer. This report style can be tailored by the user (through changing an HTML template). - An MP3 playback test has been added to the Sound test. - A color printer test has been added. - A new post test option to allow the results to be printed automatically at the end of a test has been added. - Added new Post-test action options of: - Optionally allow the user to "run an external program & exit" after BIT has been manually stopped. Modify the $RESULT variable to "PASS (manual abort)" or "FAIL (manual abort)" for this case. - Allow the results window to be displayed for all post test options (except Reboot). - Added new Pre-test actions to allow an external application to be run and have BIT wait for the application to exit. On continuing, BIT will run the subscript file (of scripting commands) if it has been created. - Changed the manual Stop buttons, to abort the running of a script (rather than just the current test). BurnInTest Professional specific. - Added a "Plugin" test that allows users to develop their own BurnInTest test modules for specialized hardware. Three external plugins may be specified at once. - A Modem test has been added to BurnInTest as a Plugin. PassMark's ModemTest Version V1.3 (latest build) is required. - A KeyBoard Test has been added to BurnInTest as a Plugin. PassMark's KeyboardTest Version V2.2 (latest build) is required. - A Firewire Test has been added to BurnInTest as a Plugin. PassMark's free Firewire plugin is required and a "Kanguru FireFlash" drive is required. - A new advanced network test has been added. BurnInTest Professional only. - The Memory test now allows the user to specify the type of test pattern to be used. - Testing with the USB 2.0 Loopback plug has been improved. When used with USB 2.0 Loopback device driver V2.0.1002, error details will now be reported for: CRC error reported by USB Host controller BIT STUFF error reported by USB Host controller DATA TOGGLE MISMATCH error reported by USB Host controller STALL PID error reported by USB Host controller DEVICE NOT RESPONDING error reported by USB Host controller PID CHECK FAILURE error reported by USB Host controller UNEXPECTED PID error reported by USB Host controller DATA OVERRUN error reported by USB Host controller DATA UNDERRUN error reported by USB Host controller BUFFER OVERRUN error reported by USB Host controller BUFFER UNDERRUN error reported by USB Host controller NOT ACCESSED error reported by USB Host controller FIFO error reported by USB Host controller TRANSACTION (XACT) ERROR reported by USB Host controller BABBLE DETECTED error reported by USB Host controller DATA BUFFER ERROR reported by USB Host controller In the case of these errors, BurnInTest will re-attempt the operation. The user can set the Error reporting to be skipped for the initial recovery attempt. IMPROVEMENTS TO TESTING FACILITIES - Added a disk autoconfig, such that when tests are started, the disk drives and settings will be defaults to all disks (exc. CD/DVD). This may be useful when testing multiple systems with different hard disk drive letters. - Store the position of the Main window on exiting BurnInTest. On starting BurnInTest, position the main window as saved; on starting tests, position the test windows as saved. - Allow a "drag & drop" of the Configuration file directly on the BurnInTest program icon. - Allow testing 99.5% to 100% of disk, instead of 94%, for disks that do not contain the Windows directory and do not contain a swap file. - Added the ability to log interim results, which may be useful for unstable systems. - AMD and Intel Dual core reporting added. - New L2 CPU cache sizes added to reports. - CPU support for SSE3, DEP and PAE added to reports. - Shortcut of "F1" for contextual help added to all Windows. - Improve the flexibility in specifying the EXECUTEWAIT scripting command for sleeper. - Updated logging header information with the hard and optical drive model. - The 2D and 3D tests have been updated to use DirectX 9.0c. - User interface updated. - The HTML report format has been improved. - The BurnInTest configuration file extension has been renamed from .cfg to use .bitcfg, to ensure the configuration file is associated with BurnInTest. - An error message indicating that accumulated log files are not supported when run from CD or DVD has been added. - To allow smaller test files with very large disks, the minimum disk test file size has been reduced from 0.1% to 0.01% of the disk space. - Log events were previously shown as "INFORMATION" if they were low level errors, or simply additional information (not errors). "INFORMATION" now refers to a low level error, and "LOG NOTE" now refers to additional information (that is not in the error count). - Improved the specific detail of the Serial Port errors detected. BurnInTest now reports framing errors, buffer overrun errors, input buffer overflow errors, parity errors and Transmit buffer full errors as specific error messages (rather than a broader error description). - Added the /k command line so the user can specify not to delete HDD test files if an error occurs. - Increased Activity trace level 1 error logging for Serial port testing. - Increased Activity trace level 1 error logging for Hyper threading detection. - Bundled a new version of the Rebooter program. - Improved the Serial port error logging (displaying baud rate) and increased Activity trace level 1 error logging (displaying erroneous data). - Modified the Window sizes to help improve navigation on smaller displays (i.e. 640x480). - The CPU load for the Standard and Torture RAM tests has been made more linear with the duty cycle setting. Note: This means that compared to the previous build of BurnInTest, less RAM test operations will be run per second (when the duty cycle is less than 100). - Additional debug code and very minor changes in the Loopback sound test. - The Post test option of "Run external application and exit" has been modified such that if no external file is specified, this Post test option will just exit BurnInTest. - Allowed the full range of PassMark USB1 loopback plugs to be used with BurnInTest Professional. - Added additional Activity Trace level 2 logging. - The delay inserted between packets in the USB2 test, when the duty cycle is less than 50, has been changed from at least 1ms to at least 1ms to 50ms (for a Duty Cycle of 49 down to 0). - The subscript commands to configure BurnInTest from an external application (i.e. specified in the bit-script-input.txt file and run by specifying either a pre-test or EXECUTEWAIT application) has been changed to allow "LOAD" commands (in addition to "SET" scripting commands). - Renamed the "Error" log to "Event" log. - Changed the order of the items in an Event log line, such that the Severity is the first item. - The EXECUTEWAIT script command has been modified such that the external application may provide an input script file (of SET... commands) to be run after the EXECUTEWAIT application closes. This allows external applications to define test environment parameters (such as the serial number and machine type). - Added scripting commands: SETSERIAL "1234-shdfgdhs-GHGHG" SETMACHINETYPE "HP XPS800" SETNOTES "Test notes defined by the external application." SETLOG "\Program Files\Plugin\plugin_log" SETPLUGIN "\Program Files\Plugin\plugin.exe" - Added POST TEST application parameter substitution to allow values to be passed to an external application at the end of a test. These are: $RESULT - "PASS" or "FAIL" will be substituted. $SERIAL - The serial number will be substituted. $MACHINETYPE - The machine type will be substituted. $NOTES - The notes will be substituted. - Added extra logging for memory allocation errors in the disk test - Added "log bad sector increase" and "bad sector threshold" options to disk test. This resulted in a change to the configuration file format and required additional code to automatically convert from old formats. - Modified the user interface in the preferences window for the disk test and the CD test - Improved the handling of USB 2.0 loopback plugs recovery from sleep states. BUG CORRECTIONS - Corrected a bug where the System and Application events logged in the BurnInTest Trace logs were wrong if the event log had reached its maximum size. - Checks that the Sound test files (WAV and MIDI) exist have been added. - The continuous auto updating of the USB image (USB Loopback plug vs. USB 2.0 Loopback plug) on the main window has been removed. This is now updated on BIT startup, selecting Refresh in USB preferences or on starting a test. If there is a serious USB problem, this (together with the USB 2.0 Loopback device driver, V2.0.1002) will avoid the possibility of BurnInTest locking up. - Corrected a bug with the Butterfly seek mode of the Disk test. This was found to occur with FAT32 disks where the Cylinder size was relatively small and the Sector size relatively large. - Reset Defaults on the Configuration Page now resets the Auto Stop Value. - Reset Defaults on the Configuration Page now resets the color indicators. - The CD test has been modified to skip invalid files either with "?"'s , to avoid reporting errors that are due to the CD test media filenames. - The Network test results window scroll bar has been corrected. - The Memory torture test could fail on some systems with a small amount of RAM and relatively high memory fragmentation. This has been corrected. - Scripting correction for .cmd files. - Corrected a bug that caused problems when running the disk test with SMART monitoring turned on. This problem only occurs on a small number of HDD's. - Corrected memory leaks - On occasion, the measured waveform from the loopback sound test may have been slightly altered on starting or stopping all tests, possibly enough to trigger an error. This has been resolved. - If an error occurred in the final second of a test, the error may have been logged but not included in the big PASS/FAIL results window. This has been corrected. - After running a script file that loaded a configuration file, that had a full path specified, the Save and Load configuration menu options no longer worked. This has been corrected. - Previously, the Version of BurnInTest was only written in the First log file after starting BurnInTest. This log line is now written in all log files. - For USB2 tests that have read or write failures, the Windows error codes are now included in the level 2 Activity trace log. - Command line parameters may now be passed to a PreTest application. - Log files may now use a single static filename. This may be useful when the log file is to be parsed by an external program. - Corrected a bug where the Plugin test would stop prematurely. - Corrected the specification of the Scripting EXECUTEWAIT filename. - Changed Script processing such that a script is aborted if a scripting error is encountered and Stop on error is selected. - Added an indication on the main window that a script is currently running ("Script currently running"). - Corrected the serial port test to identify non-existing plugs when the Disable RTS/CTS and DSR/DTR testing has been selected. - Corrected the display of strange results (666666) reported by a user, related to copy protection. - Fixed a memory leak bug in the MBM interface which caused memory allocation errors. - Added BIT version number to the ASCII log file. - Fixed a bug with the 3D Test that was causing it to stop before the autostop timer period - Changed an error in the tape drive test to a warning if tape drive doesn't support setting drive parameters. History of earlier releases: Please see http://passmark.com/products/bit_history.htm Documentation ============= All the documentation is included in the help file. It can be accessed from the help menu. There is also a PDF format Users guide available for download from the PassMark web site. Support ======= For technical support, questions, suggestions, please check the help file for our email address or visit our web page at http://www.passmark.com Ordering / Registration ======================= All the details are in the help file documentation or you can visit our sales information page http://www.passmark.com/sales Compatibility issues with the Network & Parallel Port Tests =========================================================== If you are running Windows 2000 or XP, you need to have administrator privileges to run this test. Enjoy.. The PassMark Development team
[PHP] ;;;;;;;;;;;;;;;;;;; ; About php.ini ; ;;;;;;;;;;;;;;;;;;; ; PHP's initialization file, generally called php.ini, is responsible for ; configuring many of the aspects of PHP's behavior. ; PHP attempts to find and load this configuration from a number of locations. ; The following is a summary of its search order: ; 1. SAPI module specific location. ; 2. The PHPRC environment variable. (As of PHP 5.2.0) ; 3. A number of predefined registry keys on Windows (As of PHP 5.2.0) ; 4. Current working directory (except CLI) ; 5. The web server's directory (for SAPI modules), or directory of PHP ; (otherwise in Windows) ; 6. The directory from the --with-config-file-path compile time option, or the ; Windows directory (C:\windows or C:\winnt) ; See the PHP docs for more specific information. ; http://php.net/configuration.file ; The syntax of the file is extremely simple. Whitespace and lines ; beginning with a semicolon are silently ignored (as you probably guessed). ; Section headers (e.g. [Foo]) are also silently ignored, even though ; they might mean something in the future. ; Directives following the section heading [PATH=/www/mysite] only ; apply to PHP files in the /www/mysite directory. Directives ; following the section heading [HOST=www.example.com] only apply to ; PHP files served from www.example.com. Directives set in these ; special sections cannot be overridden by user-defined INI files or ; at runtime. Currently, [PATH=] and [HOST=] sections only work under ; CGI/FastCGI. ; http://php.net/ini.sections ; Directives are specified using the following syntax: ; directive = value ; Directive names are *case sensitive* - foo=bar is different from FOO=bar. ; Directives are variables used to configure PHP or PHP extensions. ; There is no name validation. If PHP can't find an expected ; directive because it is not set or is mistyped, a default value will be used. ; The value can be a string, a number, a PHP constant (e.g. E_ALL or M_PI), one ; of the INI constants (On, Off, True, False, Yes, No and None) or an expression ; (e.g. E_ALL & ~E_NOTICE), a quoted string ("bar"), or a reference to a ; previously set variable or directive (e.g. ${foo}) ; Expressions in the INI file are limited to bitwise operators and parentheses: ; | bitwise OR ; ^ bitwise XOR ; & bitwise AND ; ~ bitwise NOT ; ! boolean NOT ; Boolean flags can be turned on using the values 1, On, True or Yes. ; They can be turned off using the values 0, Off, False or No. ; An empty string can be denoted by simply not writing anything after the equal ; sign, or by using the None keyword: ; foo = ; sets foo to an empty string ; foo = None ; sets foo to an empty string ; foo = "None" ; sets foo to the string 'None' ; If you use constants in your value, and these constants belong to a ; dynamically loaded extension (either a PHP extension or a Zend extension), ; you may only use these constants *after* the line that loads the extension. ;;;;;;;;;;;;;;;;;;; ; About this file ; ;;;;;;;;;;;;;;;;;;; ; PHP comes packaged with two INI files. One that is recommended to be used ; in production environments and one that is recommended to be used in ; development environments. ; php.ini-production contains settings which hold security, performance and ; best practices at its core. But please be aware, these settings may break ; compatibility with older or less security conscience applications. We ; recommending using the production ini in production and testing environments. ; php.ini-development is very similar to its production variant, except it's ; much more verbose when it comes to errors. We recommending using the ; development version only in development environments as errors shown to ; application users can inadvertently leak otherwise secure information. ; This is php.ini-development INI file. ;;;;;;;;;;;;;;;;;;; ; Quick Reference ; ;;;;;;;;;;;;;;;;;;; ; The following are all the settings which are different in either the production ; or development versions of the INIs with respect to PHP's default behavior. ; Please see the actual settings later in the document for more details as to why ; we recommend these changes in PHP's behavior. ; display_errors ; Default Value: On ; Development Value: On ; Production Value: Off ; display_startup_errors ; Default Value: Off ; Development Value: On ; Production Value: Off ; error_reporting ; Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED ; Development Value: E_ALL ; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT ; html_errors ; Default Value: On ; Development Value: On ; Production value: On ; log_errors ; Default Value: Off ; Development Value: On ; Production Value: On ; max_input_time ; Default Value: -1 (Unlimited) ; Development Value: 60 (60 seconds) ; Production Value: 60 (60 seconds) ; output_buffering ; Default Value: Off ; Development Value: 4096 ; Production Value: 4096 ; register_argc_argv ; Default Value: On ; Development Value: Off ; Production Value: Off ; request_order ; Default Value: None ; Development Value: "GP" ; Production Value: "GP" ; session.gc_divisor ; Default Value: 100 ; Development Value: 1000 ; Production Value: 1000 ; session.hash_bits_per_character ; Default Value: 4 ; Development Value: 5 ; Production Value: 5 ; short_open_tag ; Default Value: On ; Development Value: Off ; Production Value: Off ; track_errors ; Default Value: Off ; Development Value: On ; Production Value: Off ; url_rewriter.tags ; Default Value: "a=href,area=href,frame=src,form=,fieldset=" ; Development Value: "a=href,area=href,frame=src,input=src,form=fakeentry" ; Production Value: "a=href,area=href,frame=src,input=src,form=fakeentry" ; variables_order ; Default Value: "EGPCS" ; Development Value: "GPCS" ; Production Value: "GPCS" ;;;;;;;;;;;;;;;;;;;; ; php.ini Options ; ;;;;;;;;;;;;;;;;;;;; ; Name for user-defined php.ini (.htaccess) files. Default is ".user.ini" ;user_ini.filename = ".user.ini" ; To disable this feature set this option to empty value ;user_ini.filename = ; TTL for user-defined php.ini files (time-to-live) in seconds. Default is 300 seconds (5 minutes) ;user_ini.cache_ttl = 300 ;;;;;;;;;;;;;;;;;;;; ; Language Options ; ;;;;;;;;;;;;;;;;;;;; ; Enable the PHP scripting language engine under Apache. ; http://php.net/engine engine = On ; This directive determines whether or not PHP will recognize code between ; tags as PHP source which should be processed as such. It is ; generally recommended that should be used and that this feature ; should be disabled, as enabling it may result in issues when generating XML ; documents, however this remains supported for backward compatibility reasons. ; Note that this directive does not control the used regardless of this directive. ; Default Value: On ; Development Value: Off ; Production Value: Off ; http://php.net/short-open-tag short_open_tag = Off ; Allow ASP-style <% %> tags. ; http://php.net/asp-tags asp_tags = Off ; The number of significant digits displayed in floating point numbers. ; http://php.net/precision precision = 14 ; Output buffering is a mechanism for controlling how much output data ; (excluding headers and cookies) PHP should keep internally before pushing that ; data to the client. If your application's output exceeds this setting, PHP ; will send that data in chunks of roughly the size you specify. ; Turning on this setting and managing its maximum buffer size can yield some ; interesting side-effects depending on your application and web server. ; You may be able to send headers and cookies after you've already sent output ; through print or echo. You also may see performance benefits if your server is ; emitting less packets due to buffered output versus PHP streaming the output ; as it gets it. On production servers, 4096 bytes is a good setting for performance ; reasons. ; Note: Output buffering can also be controlled via Output Buffering Control ; functions. ; Possible Values: ; On = Enabled and buffer is unlimited. (Use with caution) ; Off = Disabled ; Integer = Enables the buffer and sets its maximum size in bytes. ; Note: This directive is hardcoded to Off for the CLI SAPI ; Default Value: Off ; Development Value: 4096 ; Production Value: 4096 ; http://php.net/output-buffering output_buffering = 4096 ; You can redirect all of the output of your scripts to a function. For ; example, if you set output_handler to "mb_output_handler", character ; encoding will be transparently converted to the specified encoding. ; Setting any output handler automatically turns on output buffering. ; Note: People who wrote portable scripts should not depend on this ini ; directive. Instead, explicitly set the output handler using ob_start(). ; Using this ini directive may cause problems unless you know what script ; is doing. ; Note: You cannot use both "mb_output_handler" with "ob_iconv_handler" ; and you cannot use both "ob_gzhandler" and "zlib.output_compression". ; Note: output_handler must be empty if this is set 'On' !!!! ; Instead you must use zlib.output_handler. ; http://php.net/output-handler ;output_handler = ; Transparent output compression using the zlib library ; Valid values for this option are 'off', 'on', or a specific buffer size ; to be used for compression (default is 4KB) ; Note: Resulting chunk size may vary due to nature of compression. PHP ; outputs chunks that are few hundreds bytes each as a result of ; compression. If you prefer a larger chunk size for better ; performance, enable output_buffering in addition. ; Note: You need to use zlib.output_handler instead of the standard ; output_handler, or otherwise the output will be corrupted. ; http://php.net/zlib.output-compression zlib.output_compression = Off ; http://php.net/zlib.output-compression-level ;zlib.output_compression_level = -1 ; You cannot specify additional output handlers if zlib.output_compression ; is activated here. This setting does the same as output_handler but in ; a different order. ; http://php.net/zlib.output-handler ;zlib.output_handler = ; Implicit flush tells PHP to tell the output layer to flush itself ; automatically after every output block. This is equivalent to calling the ; PHP function flush() after each and every call to print() or echo() and each ; and every HTML block. Turning this option on has serious performance ; implications and is generally recommended for debugging purposes only. ; http://php.net/implicit-flush ; Note: This directive is hardcoded to On for the CLI SAPI implicit_flush = Off ; The unserialize callback function will be called (with the undefined class' ; name as parameter), if the unserializer finds an undefined class ; which should be instantiated. A warning appears if the specified function is ; not defined, or if the function doesn't include/implement the missing class. ; So only set this entry, if you really want to implement such a ; callback-function. unserialize_callback_func = ; When floats & doubles are serialized store serialize_precision significant ; digits after the floating point. The default value ensures that when floats ; are decoded with unserialize, the data will remain the same. serialize_precision = 17 ; open_basedir, if set, limits all file operations to the defined directory ; and below. This directive makes most sense if used in a per-directory ; or per-virtualhost web server configuration file. This directive is ; *NOT* affected by whether Safe Mode is turned On or Off. ; http://php.net/open-basedir ;open_basedir = ; This directive allows you to disable certain functions for security reasons. ; It receives a comma-delimited list of function names. This directive is ; *NOT* affected by whether Safe Mode is turned On or Off. ; http://php.net/disable-functions disable_functions = ; This directive allows you to disable certain classes for security reasons. ; It receives a comma-delimited list of class names. This directive is ; *NOT* affected by whether Safe Mode is turned On or Off. ; http://php.net/disable-classes disable_classes = ; Colors for Syntax Highlighting mode. Anything that's acceptable in ; would work. ; http://php.net/syntax-highlighting ;highlight.string = #DD0000 ;highlight.comment = #FF9900 ;highlight.keyword = #007700 ;highlight.default = #0000BB ;highlight.html = #000000 ; If enabled, the request will be allowed to complete even if the user aborts ; the request. Consider enabling it if executing long requests, which may end up ; being interrupted by the user or a browser timing out. PHP's default behavior ; is to disable this feature. ; http://php.net/ignore-user-abort ;ignore_user_abort = On ; Determines the size of the realpath cache to be used by PHP. This value should ; be increased on systems where PHP opens many files to reflect the quantity of ; the file operations performed. ; http://php.net/realpath-cache-size ;realpath_cache_size = 16k ; Duration of time, in seconds for which to cache realpath information for a given ; file or directory. For systems with rarely changing files, consider increasing this ; value. ; http://php.net/realpath-cache-ttl ;realpath_cache_ttl = 120 ; Enables or disables the circular reference collector. ; http://php.net/zend.enable-gc zend.enable_gc = On ; If enabled, scripts may be written in encodings that are incompatible with ; the scanner. CP936, Big5, CP949 and Shift_JIS are the examples of such ; encodings. To use this feature, mbstring extension must be enabled. ; Default: Off ;zend.multibyte = Off ; Allows to set the default encoding for the scripts. This value will be used ; unless "declare(encoding=...)" directive appears at the top of the script. ; Only affects if zend.multibyte is set. ; Default: "" ;zend.script_encoding = ;;;;;;;;;;;;;;;;; ; Miscellaneous ; ;;;;;;;;;;;;;;;;; ; Decides whether PHP may expose the fact that it is installed on the server ; (e.g. by adding its signature to the Web server header). It is no security ; threat in any way, but it makes it possible to determine whether you use PHP ; on your server or not. ; http://php.net/expose-php expose_php = On ;;;;;;;;;;;;;;;;;;; ; Resource Limits ; ;;;;;;;;;;;;;;;;;;; ; Maximum execution time of each script, in seconds ; http://php.net/max-execution-time ; Note: This directive is hardcoded to 0 for the CLI SAPI max_execution_time = 30 ; Maximum amount of time each script may spend parsing request data. It's a good ; idea to limit this time on productions servers in order to eliminate unexpectedly ; long running scripts. ; Note: This directive is hardcoded to -1 for the CLI SAPI ; Default Value: -1 (Unlimited) ; Development Value: 60 (60 seconds) ; Production Value: 60 (60 seconds) ; http://php.net/max-input-time max_input_time = 60 ; Maximum input variable nesting level ; http://php.net/max-input-nesting-level ;max_input_nesting_level = 64 ; How many GET/POST/COOKIE input variables may be accepted ; max_input_vars = 1000 ; Maximum amount of memory a script may consume (128MB) ; http://php.net/memory-limit memory_limit = 128M ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; Error handling and logging ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; This directive informs PHP of which errors, warnings and notices you would like ; it to take action for. The recommended way of setting values for this ; directive is through the use of the error level constants and bitwise ; operators. The error level constants are below here for convenience as well as ; some common settings and their meanings. ; By default, PHP is set to take action on all errors, notices and warnings EXCEPT ; those related to E_NOTICE and E_STRICT, which together cover best practices and ; recommended coding standards in PHP. For performance reasons, this is the ; recommend error reporting setting. Your production server shouldn't be wasting ; resources complaining about best practices and coding standards. That's what ; development servers and development settings are for. ; Note: The php.ini-development file has this setting as E_ALL. This ; means it pretty much reports everything which is exactly what you want during ; development and early testing. ; ; Error Level Constants: ; E_ALL - All errors and warnings (includes E_STRICT as of PHP 5.4.0) ; E_ERROR - fatal run-time errors ; E_RECOVERABLE_ERROR - almost fatal run-time errors ; E_WARNING - run-time warnings (non-fatal errors) ; E_PARSE - compile-time parse errors ; E_NOTICE - run-time notices (these are warnings which often result ; from a bug in your code, but it's possible that it was ; intentional (e.g., using an uninitialized variable and ; relying on the fact it's automatically initialized to an ; empty string) ; E_STRICT - run-time notices, enable to have PHP suggest changes ; to your code which will ensure the best interoperability ; and forward compatibility of your code ; E_CORE_ERROR - fatal errors that occur during PHP's initial startup ; E_CORE_WARNING - warnings (non-fatal errors) that occur during PHP's ; initial startup ; E_COMPILE_ERROR - fatal compile-time errors ; E_COMPILE_WARNING - compile-time warnings (non-fatal errors) ; E_USER_ERROR - user-generated error message ; E_USER_WARNING - user-generated warning message ; E_USER_NOTICE - user-generated notice message ; E_DEPRECATED - warn about code that will not work in future versions ; of PHP ; E_USER_DEPRECATED - user-generated deprecation warnings ; ; Common Values: ; E_ALL (Show all errors, warnings and notices including coding standards.) ; E_ALL & ~E_NOTICE (Show all errors, except for notices) ; E_ALL & ~E_NOTICE & ~E_STRICT (Show all errors, except for notices and coding standards warnings.) ; E_COMPILE_ERROR|E_RECOVERABLE_ERROR|E_ERROR|E_CORE_ERROR (Show only errors) ; Default Value: E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED ; Development Value: E_ALL ; Production Value: E_ALL & ~E_DEPRECATED & ~E_STRICT ; http://php.net/error-reporting error_reporting = E_ALL ; This directive controls whether or not and where PHP will output errors, ; notices and warnings too. Error output is very useful during development, but ; it could be very dangerous in production environments. Depending on the code ; which is triggering the error, sensitive information could potentially leak ; out of your application such as database usernames and passwords or worse. ; It's recommended that errors be logged on production servers rather than ; having the errors sent to STDOUT. ; Possible Values: ; Off = Do not display any errors ; stderr = Display errors to STDERR (affects only CGI/CLI binaries!) ; On or stdout = Display errors to STDOUT ; Default Value: On ; Development Value: On ; Production Value: Off ; http://php.net/display-errors display_errors = On ; The display of errors which occur during PHP's startup sequence are handled ; separately from display_errors. PHP's default behavior is to suppress those ; errors from clients. Turning the display of startup errors on can be useful in ; debugging configuration problems. But, it's strongly recommended that you ; leave this setting off on production servers. ; Default Value: Off ; Development Value: On ; Production Value: Off ; http://php.net/display-startup-errors display_startup_errors = On ; Besides displaying errors, PHP can also log errors to locations such as a ; server-specific log, STDERR, or a location specified by the error_log ; directive found below. While errors should not be displayed on productions ; servers they should still be monitored and logging is a great way to do that. ; Default Value: Off ; Development Value: On ; Production Value: On ; http://php.net/log-errors log_errors = On ; Set maximum length of log_errors. In error_log information about the source is ; added. The default is 1024 and 0 allows to not apply any maximum length at all. ; http://php.net/log-errors-max-len log_errors_max_len = 1024 ; Do not log repeated messages. Repeated errors must occur in same file on same ; line unless ignore_repeated_source is set true. ; http://php.net/ignore-repeated-errors ignore_repeated_errors = Off ; Ignore source of message when ignoring repeated messages. When this setting ; is On you will not log errors with repeated messages from different files or ; source lines. ; http://php.net/ignore-repeated-source ignore_repeated_source = Off ; If this parameter is set to Off, then memory leaks will not be shown (on ; stdout or in the log). This has only effect in a debug compile, and if ; error reporting includes E_WARNING in the allowed list ; http://php.net/report-memleaks report_memleaks = On ; This setting is on by default. ;report_zend_debug = 0 ; Store the last error/warning message in $php_errormsg (boolean). Setting this value ; to On can assist in debugging and is appropriate for development servers. It should ; however be disabled on production servers. ; Default Value: Off ; Development Value: On ; Production Value: Off ; http://php.net/track-errors track_errors = On ; Turn off normal error reporting and emit XML-RPC error XML ; http://php.net/xmlrpc-errors ;xmlrpc_errors = 0 ; An XML-RPC faultCode ;xmlrpc_error_number = 0 ; When PHP displays or logs an error, it has the capability of formatting the ; error message as HTML for easier reading. This directive controls whether ; the error message is formatted as HTML or not. ; Note: This directive is hardcoded to Off for the CLI SAPI ; Default Value: On ; Development Value: On ; Production value: On ; http://php.net/html-errors html_errors = On ; If html_errors is set to On *and* docref_root is not empty, then PHP ; produces clickable error messages that direct to a page describing the error ; or function causing the error in detail. ; You can download a copy of the PHP manual from http://php.net/docs ; and change docref_root to the base URL of your local copy including the ; leading '/'. You must also specify the file extension being used including ; the dot. PHP's default behavior is to leave these settings empty, in which ; case no links to documentation are generated. ; Note: Never use this feature for production boxes. ; http://php.net/docref-root ; Examples ;docref_root = "/phpmanual/" ; http://php.net/docref-ext ;docref_ext = .html ; String to output before an error message. PHP's default behavior is to leave ; this setting blank. ; http://php.net/error-prepend-string ; Example: ;error_prepend_string = "" ; String to output after an error message. PHP's default behavior is to leave ; this setting blank. ; http://php.net/error-append-string ; Example: ;error_append_string = "" ; Log errors to specified file. PHP's default behavior is to leave this value ; empty. ; http://php.net/error-log ; Example: ;error_log = php_errors.log ; Log errors to syslog (Event Log on Windows). ;error_log = syslog ;windows.show_crt_warning ; Default value: 0 ; Development value: 0 ; Production value: 0 ;;;;;;;;;;;;;;;;; ; Data Handling ; ;;;;;;;;;;;;;;;;; ; The separator used in PHP generated URLs to separate arguments. ; PHP's default setting is "&". ; http://php.net/arg-separator.output ; Example: ;arg_separator.output = "&" ; List of separator(s) used by PHP to parse input URLs into variables. ; PHP's default setting is "&". ; NOTE: Every character in this directive is considered as separator! ; http://php.net/arg-separator.input ; Example: ;arg_separator.input = ";&" ; This directive determines which super global arrays are registered when PHP ; starts up. G,P,C,E & S are abbreviations for the following respective super ; globals: GET, POST, COOKIE, ENV and SERVER. There is a performance penalty ; paid for the registration of these arrays and because ENV is not as commonly ; used as the others, ENV is not recommended on productions servers. You ; can still get access to the environment variables through getenv() should you ; need to. ; Default Value: "EGPCS" ; Development Value: "GPCS" ; Production Value: "GPCS"; ; http://php.net/variables-order variables_order = "GPCS" ; This directive determines which super global data (G,P,C,E & S) should ; be registered into the super global array REQUEST. If so, it also determines ; the order in which that data is registered. The values for this directive are ; specified in the same manner as the variables_order directive, EXCEPT one. ; Leaving this value empty will cause PHP to use the value set in the ; variables_order directive. It does not mean it will leave the super globals ; array REQUEST empty. ; Default Value: None ; Development Value: "GP" ; Production Value: "GP" ; http://php.net/request-order request_order = "GP" ; This directive determines whether PHP registers $argv & $argc each time it ; runs. $argv contains an array of all the arguments passed to PHP when a script ; is invoked. $argc contains an integer representing the number of arguments ; that were passed when the script was invoked. These arrays are extremely ; useful when running scripts from the command line. When this directive is ; enabled, registering these variables consumes CPU cycles and memory each time ; a script is executed. For performance reasons, this feature should be disabled ; on production servers. ; Note: This directive is hardcoded to On for the CLI SAPI ; Default Value: On ; Development Value: Off ; Production Value: Off ; http://php.net/register-argc-argv register_argc_argv = Off ; When enabled, the ENV, REQUEST and SERVER variables are created when they're ; first used (Just In Time) instead of when the script starts. If these ; variables are not used within a script, having this directive on will result ; in a performance gain. The PHP directive register_argc_argv must be disabled ; for this directive to have any affect. ; http://php.net/auto-globals-jit auto_globals_jit = On ; Whether PHP will read the POST data. ; This option is enabled by default. ; Most likely, you won't want to disable this option globally. It causes $_POST ; and $_FILES to always be empty; the only way you will be able to read the ; POST data will be through the php://input stream wrapper. This can be useful ; to proxy requests or to process the POST data in a memory efficient fashion. ; http://php.net/enable-post-data-reading ;enable_post_data_reading = Off ; Maximum size of POST data that PHP will accept. ; Its value may be 0 to disable the limit. It is ignored if POST data reading ; is disabled through enable_post_data_reading. ; http://php.net/post-max-size post_max_size = 8M ; Automatically add files before PHP document. ; http://php.net/auto-prepend-file auto_prepend_file = ; Automatically add files after PHP document. ; http://php.net/auto-append-file auto_append_file = ; By default, PHP will output a character encoding using ; the Content-type: header. To disable sending of the charset, simply ; set it to be empty. ; ; PHP's built-in default is text/html ; http://php.net/default-mimetype default_mimetype = "text/html" ; PHP's default character set is set to empty. ; http://php.net/default-charset ;default_charset = "UTF-8" ; Always populate the $HTTP_RAW_POST_DATA variable. PHP's default behavior is ; to disable this feature. If post reading is disabled through ; enable_post_data_reading, $HTTP_RAW_POST_DATA is *NOT* populated. ; http://php.net/always-populate-raw-post-data ;always_populate_raw_post_data = On ;;;;;;;;;;;;;;;;;;;;;;;;; ; Paths and Directories ; ;;;;;;;;;;;;;;;;;;;;;;;;; ; UNIX: "/path1:/path2" ;include_path = ".:/php/includes" ; ; Windows: "\path1;\path2" ;include_path = ".;c:\php\includes" ; ; PHP's default setting for include_path is ".;/path/to/php/pear" ; http://php.net/include-path ; The root of the PHP pages, used only if nonempty. ; if PHP was not compiled with FORCE_REDIRECT, you SHOULD set doc_root ; if you are running php as a CGI under any web server (other than IIS) ; see documentation for security issues. The alternate is to use the ; cgi.force_redirect configuration below ; http://php.net/doc-root doc_root = ; The directory under which PHP opens the script using /~username used only ; if nonempty. ; http://php.net/user-dir user_dir = ; Directory in which the loadable extensions (modules) reside. ; http://php.net/extension-dir ; extension_dir = "./" ; On windows: ; extension_dir = "ext" ; Whether or not to enable the dl() function. The dl() function does NOT work ; properly in multithreaded servers, such as IIS or Zeus, and is automatically ; disabled on them. ; http://php.net/enable-dl enable_dl = Off ; cgi.force_redirect is necessary to provide security running PHP as a CGI under ; most web servers. Left undefined, PHP turns this on by default. You can ; turn it off here AT YOUR OWN RISK ; **You CAN safely turn this off for IIS, in fact, you MUST.** ; http://php.net/cgi.force-redirect ;cgi.force_redirect = 1 ; if cgi.nph is enabled it will force cgi to always sent Status: 200 with ; every request. PHP's default behavior is to disable this feature. ;cgi.nph = 1 ; if cgi.force_redirect is turned on, and you are not running under Apache or Netscape ; (iPlanet) web servers, you MAY need to set an environment variable name that PHP ; will look for to know it is OK to continue execution. Setting this variable MAY ; cause security issues, KNOW WHAT YOU ARE DOING FIRST. ; http://php.net/cgi.redirect-status-env ;cgi.redirect_status_env = ; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI. PHP's ; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok ; what PATH_INFO is. For more information on PATH_INFO, see the cgi specs. Setting ; this to 1 will cause PHP CGI to fix its paths to conform to the spec. A setting ; of zero causes PHP to behave as before. Default is 1. You should fix your scripts ; to use SCRIPT_FILENAME rather than PATH_TRANSLATED. ; http://php.net/cgi.fix-pathinfo ;cgi.fix_pathinfo=1 ; FastCGI under IIS (on WINNT based OS) supports the ability to impersonate ; security tokens of the calling client. This allows IIS to define the ; security context that the request runs under. mod_fastcgi under Apache ; does not currently support this feature (03/17/2002) ; Set to 1 if running under IIS. Default is zero. ; http://php.net/fastcgi.impersonate ;fastcgi.impersonate = 1 ; Disable logging through FastCGI connection. PHP's default behavior is to enable ; this feature. ;fastcgi.logging = 0 ; cgi.rfc2616_headers configuration option tells PHP what type of headers to ; use when sending HTTP response code. If it's set 0 PHP sends Status: header that ; is supported by Apache. When this option is set to 1 PHP will send ; RFC2616 compliant header. ; Default is zero. ; http://php.net/cgi.rfc2616-headers ;cgi.rfc2616_headers = 0 ;;;;;;;;;;;;;;;; ; File Uploads ; ;;;;;;;;;;;;;;;; ; Whether to allow HTTP file uploads. ; http://php.net/file-uploads file_uploads = On ; Temporary directory for HTTP uploaded files (will use system default if not ; specified). ; http://php.net/upload-tmp-dir ;upload_tmp_dir = ; Maximum allowed size for uploaded files. ; http://php.net/upload-max-filesize upload_max_filesize = 2M ; Maximum number of files that can be uploaded via a single request max_file_uploads = 20 ;;;;;;;;;;;;;;;;;; ; Fopen wrappers ; ;;;;;;;;;;;;;;;;;; ; Whether to allow the treatment of URLs (like http:// or ftp://) as files. ; http://php.net/allow-url-fopen allow_url_fopen = On ; Whether to allow include/require to open URLs (like http:// or ftp://) as files. ; http://php.net/allow-url-include allow_url_include = Off ; Define the anonymous ftp password (your email address). PHP's default setting ; for this is empty. ; http://php.net/from ;from="john@doe.com" ; Define the User-Agent string. PHP's default setting for this is empty. ; http://php.net/user-agent ;user_agent="PHP" ; Default timeout for socket based streams (seconds) ; http://php.net/default-socket-timeout default_socket_timeout = 60 ; If your scripts have to deal with files from Macintosh systems, ; or you are running on a Mac and need to deal with files from ; unix or win32 systems, setting this flag will cause PHP to ; automatically detect the EOL character in those files so that ; fgets() and file() will work regardless of the source of the file. ; http://php.net/auto-detect-line-endings ;auto_detect_line_endings = Off ;;;;;;;;;;;;;;;;;;;;;; ; Dynamic Extensions ; ;;;;;;;;;;;;;;;;;;;;;; ; If you wish to have an extension loaded automatically, use the following ; syntax: ; ; extension=modulename.extension ; ; For example, on Windows: ; ; extension=msql.dll ; ; ... or under UNIX: ; ; extension=msql.so ; ; ... or with a path: ; ; extension=/path/to/extension/msql.so ; ; If you only provide the name of the extension, PHP will look for it in its ; default extension directory. ; ; Windows Extensions ; Note that ODBC support is built in, so no dll is needed for it. ; Note that many DLL files are located in the extensions/ (PHP 4) ext/ (PHP 5) ; extension folders as well as the separate PECL DLL download (PHP 5). ; Be sure to appropriately set the extension_dir directive. ; ;extension=php_bz2.dll ;extension=php_curl.dll ;extension=php_fileinfo.dll ;extension=php_gd2.dll ;extension=php_gettext.dll ;extension=php_gmp.dll ;extension=php_intl.dll ;extension=php_imap.dll ;extension=php_interbase.dll ;extension=php_ldap.dll ;extension=php_mbstring.dll ;extension=php_exif.dll ; Must be after mbstring as it depends on it ;extension=php_mysql.dll ;extension=php_mysqli.dll ;extension=php_oci8.dll ; Use with Oracle 10gR2 Instant Client ;extension=php_oci8_11g.dll ; Use with Oracle 11gR2 Instant Client ;extension=php_openssl.dll ;extension=php_pdo_firebird.dll ;extension=php_pdo_mysql.dll ;extension=php_pdo_oci.dll ;extension=php_pdo_odbc.dll ;extension=php_pdo_pgsql.dll ;extension=php_pdo_sqlite.dll ;extension=php_pgsql.dll ;extension=php_pspell.dll ;extension=php_shmop.dll ; The MIBS data available in the PHP distribution must be installed. ; See http://www.php.net/manual/en/snmp.installation.php ;extension=php_snmp.dll ;extension=php_soap.dll ;extension=php_sockets.dll ;extension=php_sqlite3.dll ;extension=php_sybase_ct.dll ;extension=php_tidy.dll ;extension=php_xmlrpc.dll ;extension=php_xsl.dll ;;;;;;;;;;;;;;;;;;; ; Module Settings ; ;;;;;;;;;;;;;;;;;;; [CLI Server] ; Whether the CLI web server uses ANSI color coding in its terminal output. cli_server.color = On [Date] ; Defines the default timezone used by the date functions ; http://php.net/date.timezone ;date.timezone = ; http://php.net/date.default-latitude ;date.default_latitude = 31.7667 ; http://php.net/date.default-longitude ;date.default_longitude = 35.2333 ; http://php.net/date.sunrise-zenith ;date.sunrise_zenith = 90.583333 ; http://php.net/date.sunset-zenith ;date.sunset_zenith = 90.583333 [filter] ; http://php.net/filter.default ;filter.default = unsafe_raw ; http://php.net/filter.default-flags ;filter.default_flags = [iconv] ;iconv.input_encoding = ISO-8859-1 ;iconv.internal_encoding = ISO-8859-1 ;iconv.output_encoding = ISO-8859-1 [intl] ;intl.default_locale = ; This directive allows you to produce PHP errors when some error ; happens within intl functions. The value is the level of the error produced. ; Default is 0, which does not produce any errors. ;intl.error_level = E_WARNING [sqlite] ; http://php.net/sqlite.assoc-case ;sqlite.assoc_case = 0 [sqlite3] ;sqlite3.extension_dir = [Pcre] ;PCRE library backtracking limit. ; http://php.net/pcre.backtrack-limit ;pcre.backtrack_limit=100000 ;PCRE library recursion limit. ;Please note that if you set this value to a high number you may consume all ;the available process stack and eventually crash PHP (due to reaching the ;stack size limit imposed by the Operating System). ; http://php.net/pcre.recursion-limit ;pcre.recursion_limit=100000 [Pdo] ; Whether to pool ODBC connections. Can be one of "strict", "relaxed" or "off" ; http://php.net/pdo-odbc.connection-pooling ;pdo_odbc.connection_pooling=strict ;pdo_odbc.db2_instance_name [Pdo_mysql] ; If mysqlnd is used: Number of cache slots for the internal result set cache ; http://php.net/pdo_mysql.cache_size pdo_mysql.cache_size = 2000 ; Default socket name for local MySQL connects. If empty, uses the built-in ; MySQL defaults. ; http://php.net/pdo_mysql.default-socket pdo_mysql.default_socket= [Phar] ; http://php.net/phar.readonly ;phar.readonly = On ; http://php.net/phar.require-hash ;phar.require_hash = On ;phar.cache_list = [mail function] ; For Win32 only. ; http://php.net/smtp SMTP = localhost ; http://php.net/smtp-port smtp_port = 25 ; For Win32 only. ; http://php.net/sendmail-from ;sendmail_from = me@example.com ; For Unix only. You may supply arguments as well (default: "sendmail -t -i"). ; http://php.net/sendmail-path ;sendmail_path = ; Force the addition of the specified parameters to be passed as extra parameters ; to the sendmail binary. These parameters will always replace the value of ; the 5th parameter to mail(), even in safe mode. ;mail.force_extra_parameters = ; Add X-PHP-Originating-Script: that will include uid of the script followed by the filename mail.add_x_header = On ; The path to a log file that will log all mail() calls. Log entries include ; the full path of the script, line number, To address and headers. ;mail.log = ; Log mail to syslog (Event Log on Windows). ;mail.log = syslog [SQL] ; http://php.net/sql.safe-mode sql.safe_mode = Off [ODBC] ; http://php.net/odbc.default-db ;odbc.default_db = Not yet implemented ; http://php.net/odbc.default-user ;odbc.default_user = Not yet implemented ; http://php.net/odbc.default-pw ;odbc.default_pw = Not yet implemented ; Controls the ODBC cursor model. ; Default: SQL_CURSOR_STATIC (default). ;odbc.default_cursortype ; Allow or prevent persistent links. ; http://php.net/odbc.allow-persistent odbc.allow_persistent = On ; Check that a connection is still valid before reuse. ; http://php.net/odbc.check-persistent odbc.check_persistent = On ; Maximum number of persistent links. -1 means no limit. ; http://php.net/odbc.max-persistent odbc.max_persistent = -1 ; Maximum number of links (persistent + non-persistent). -1 means no limit. ; http://php.net/odbc.max-links odbc.max_links = -1 ; Handling of LONG fields. Returns number of bytes to variables. 0 means ; passthru. ; http://php.net/odbc.defaultlrl odbc.defaultlrl = 4096 ; Handling of binary data. 0 means passthru, 1 return as is, 2 convert to char. ; See the documentation on odbc_binmode and odbc_longreadlen for an explanation ; of odbc.defaultlrl and odbc.defaultbinmode ; http://php.net/odbc.defaultbinmode odbc.defaultbinmode = 1 ;birdstep.max_links = -1 [Interbase] ; Allow or prevent persistent links. ibase.allow_persistent = 1 ; Maximum number of persistent links. -1 means no limit. ibase.max_persistent = -1 ; Maximum number of links (persistent + non-persistent). -1 means no limit. ibase.max_links = -1 ; Default database name for ibase_connect(). ;ibase.default_db = ; Default username for ibase_connect(). ;ibase.default_user = ; Default password for ibase_connect(). ;ibase.default_password = ; Default charset for ibase_connect(). ;ibase.default_charset = ; Default timestamp format. ibase.timestampformat = "%Y-%m-%d %H:%M:%S" ; Default date format. ibase.dateformat = "%Y-%m-%d" ; Default time format. ibase.timeformat = "%H:%M:%S" [MySQL] ; Allow accessing, from PHP's perspective, local files with LOAD DATA statements ; http://php.net/mysql.allow_local_infile mysql.allow_local_infile = On ; Allow or prevent persistent links. ; http://php.net/mysql.allow-persistent mysql.allow_persistent = On ; If mysqlnd is used: Number of cache slots for the internal result set cache ; http://php.net/mysql.cache_size mysql.cache_size = 2000 ; Maximum number of persistent links. -1 means no limit. ; http://php.net/mysql.max-persistent mysql.max_persistent = -1 ; Maximum number of links (persistent + non-persistent). -1 means no limit. ; http://php.net/mysql.max-links mysql.max_links = -1 ; Default port number for mysql_connect(). If unset, mysql_connect() will use ; the $MYSQL_TCP_PORT or the mysql-tcp entry in /etc/services or the ; compile-time value defined MYSQL_PORT (in that order). Win32 will only look ; at MYSQL_PORT. ; http://php.net/mysql.default-port mysql.default_port = ; Default socket name for local MySQL connects. If empty, uses the built-in ; MySQL defaults. ; http://php.net/mysql.default-socket mysql.default_socket = ; Default host for mysql_connect() (doesn't apply in safe mode). ; http://php.net/mysql.default-host mysql.default_host = ; Default user for mysql_connect() (doesn't apply in safe mode). ; http://php.net/mysql.default-user mysql.default_user = ; Default password for mysql_connect() (doesn't apply in safe mode). ; Note that this is generally a *bad* idea to store passwords in this file. ; *Any* user with PHP access can run 'echo get_cfg_var("mysql.default_password") ; and reveal this password! And of course, any users with read access to this ; file will be able to reveal the password as well. ; http://php.net/mysql.default-password mysql.default_password = ; Maximum time (in seconds) for connect timeout. -1 means no limit ; http://php.net/mysql.connect-timeout mysql.connect_timeout = 60 ; Trace mode. When trace_mode is active (=On), warnings for table/index scans and ; SQL-Errors will be displayed. ; http://php.net/mysql.trace-mode mysql.trace_mode = Off [MySQLi] ; Maximum number of persistent links. -1 means no limit. ; http://php.net/mysqli.max-persistent mysqli.max_persistent = -1 ; Allow accessing, from PHP's perspective, local files with LOAD DATA statements ; http://php.net/mysqli.allow_local_infile ;mysqli.allow_local_infile = On ; Allow or prevent persistent links. ; http://php.net/mysqli.allow-persistent mysqli.allow_persistent = On ; Maximum number of links. -1 means no limit. ; http://php.net/mysqli.max-links mysqli.max_links = -1 ; If mysqlnd is used: Number of cache slots for the internal result set cache ; http://php.net/mysqli.cache_size mysqli.cache_size = 2000 ; Default port number for mysqli_connect(). If unset, mysqli_connect() will use ; the $MYSQL_TCP_PORT or the mysql-tcp entry in /etc/services or the ; compile-time value defined MYSQL_PORT (in that order). Win32 will only look ; at MYSQL_PORT. ; http://php.net/mysqli.default-port mysqli.default_port = 3306 ; Default socket name for local MySQL connects. If empty, uses the built-in ; MySQL defaults. ; http://php.net/mysqli.default-socket mysqli.default_socket = ; Default host for mysql_connect() (doesn't apply in safe mode). ; http://php.net/mysqli.default-host mysqli.default_host = ; Default user for mysql_connect() (doesn't apply in safe mode). ; http://php.net/mysqli.default-user mysqli.default_user = ; Default password for mysqli_connect() (doesn't apply in safe mode). ; Note that this is generally a *bad* idea to store passwords in this file. ; *Any* user with PHP access can run 'echo get_cfg_var("mysqli.default_pw") ; and reveal this password! And of course, any users with read access to this ; file will be able to reveal the password as well. ; http://php.net/mysqli.default-pw mysqli.default_pw = ; Allow or prevent reconnect mysqli.reconnect = Off [mysqlnd] ; Enable / Disable collection of general statistics by mysqlnd which can be ; used to tune and monitor MySQL operations. ; http://php.net/mysqlnd.collect_statistics mysqlnd.collect_statistics = On ; Enable / Disable collection of memory usage statistics by mysqlnd which can be ; used to tune and monitor MySQL operations. ; http://php.net/mysqlnd.collect_memory_statistics mysqlnd.collect_memory_statistics = On ; Size of a pre-allocated buffer used when sending commands to MySQL in bytes. ; http://php.net/mysqlnd.net_cmd_buffer_size ;mysqlnd.net_cmd_buffer_size = 2048 ; Size of a pre-allocated buffer used for reading data sent by the server in ; bytes. ; http://php.net/mysqlnd.net_read_buffer_size ;mysqlnd.net_read_buffer_size = 32768 [OCI8] ; Connection: Enables privileged connections using external ; credentials (OCI_SYSOPER, OCI_SYSDBA) ; http://php.net/oci8.privileged-connect ;oci8.privileged_connect = Off ; Connection: The maximum number of persistent OCI8 connections per ; process. Using -1 means no limit. ; http://php.net/oci8.max-persistent ;oci8.max_persistent = -1 ; Connection: The maximum number of seconds a process is allowed to ; maintain an idle persistent connection. Using -1 means idle ; persistent connections will be maintained forever. ; http://php.net/oci8.persistent-timeout ;oci8.persistent_timeout = -1 ; Connection: The number of seconds that must pass before issuing a ; ping during oci_pconnect() to check the connection validity. When ; set to 0, each oci_pconnect() will cause a ping. Using -1 disables ; pings completely. ; http://php.net/oci8.ping-interval ;oci8.ping_interval = 60 ; Connection: Set this to a user chosen connection class to be used ; for all pooled server requests with Oracle 11g Database Resident ; Connection Pooling (DRCP). To use DRCP, this value should be set to ; the same string for all web servers running the same application, ; the database pool must be configured, and the connection string must ; specify to use a pooled server. ;oci8.connection_class = ; High Availability: Using On lets PHP receive Fast Application ; Notification (FAN) events generated when a database node fails. The ; database must also be configured to post FAN events. ;oci8.events = Off ; Tuning: This option enables statement caching, and specifies how ; many statements to cache. Using 0 disables statement caching. ; http://php.net/oci8.statement-cache-size ;oci8.statement_cache_size = 20 ; Tuning: Enables statement prefetching and sets the default number of ; rows that will be fetched automatically after statement execution. ; http://php.net/oci8.default-prefetch ;oci8.default_prefetch = 100 ; Compatibility. Using On means oci_close() will not close ; oci_connect() and oci_new_connect() connections. ; http://php.net/oci8.old-oci-close-semantics ;oci8.old_oci_close_semantics = Off [PostgreSQL] ; Allow or prevent persistent links. ; http://php.net/pgsql.allow-persistent pgsql.allow_persistent = On ; Detect broken persistent links always with pg_pconnect(). ; Auto reset feature requires a little overheads. ; http://php.net/pgsql.auto-reset-persistent pgsql.auto_reset_persistent = Off ; Maximum number of persistent links. -1 means no limit. ; http://php.net/pgsql.max-persistent pgsql.max_persistent = -1 ; Maximum number of links (persistent+non persistent). -1 means no limit. ; http://php.net/pgsql.max-links pgsql.max_links = -1 ; Ignore PostgreSQL backends Notice message or not. ; Notice message logging require a little overheads. ; http://php.net/pgsql.ignore-notice pgsql.ignore_notice = 0 ; Log PostgreSQL backends Notice message or not. ; Unless pgsql.ignore_notice=0, module cannot log notice message. ; http://php.net/pgsql.log-notice pgsql.log_notice = 0 [Sybase-CT] ; Allow or prevent persistent links. ; http://php.net/sybct.allow-persistent sybct.allow_persistent = On ; Maximum number of persistent links. -1 means no limit. ; http://php.net/sybct.max-persistent sybct.max_persistent = -1 ; Maximum number of links (persistent + non-persistent). -1 means no limit. ; http://php.net/sybct.max-links sybct.max_links = -1 ; Minimum server message severity to display. ; http://php.net/sybct.min-server-severity sybct.min_server_severity = 10 ; Minimum client message severity to display. ; http://php.net/sybct.min-client-severity sybct.min_client_severity = 10 ; Set per-context timeout ; http://php.net/sybct.timeout ;sybct.timeout= ;sybct.packet_size ; The maximum time in seconds to wait for a connection attempt to succeed before returning failure. ; Default: one minute ;sybct.login_timeout= ; The name of the host you claim to be connecting from, for display by sp_who. ; Default: none ;sybct.hostname= ; Allows you to define how often deadlocks are to be retried. -1 means "forever". ; Default: 0 ;sybct.deadlock_retry_count= [bcmath] ; Number of decimal digits for all bcmath functions. ; http://php.net/bcmath.scale bcmath.scale = 0 [browscap] ; http://php.net/browscap ;browscap = extra/browscap.ini [Session] ; Handler used to store/retrieve data. ; http://php.net/session.save-handler session.save_handler = files ; Argument passed to save_handler. In the case of files, this is the path ; where data files are stored. Note: Windows users have to change this ; variable in order to use PHP's session functions. ; ; The path can be defined as: ; ; session.save_path = "N;/path" ; ; where N is an integer. Instead of storing all the session files in ; /path, what this will do is use subdirectories N-levels deep, and ; store the session data in those directories. This is useful if you ; or your OS have problems with lots of files in one directory, and is ; a more efficient layout for servers that handle lots of sessions. ; ; NOTE 1: PHP will not create this directory structure automatically. ; You can use the script in the ext/session dir for that purpose. ; NOTE 2: See the section on garbage collection below if you choose to ; use subdirectories for session storage ; ; The file storage module creates files using mode 600 by default. ; You can change that by using ; ; session.save_path = "N;MODE;/path" ; ; where MODE is the octal representation of the mode. Note that this ; does not overwrite the process's umask. ; http://php.net/session.save-path ;session.save_path = "/tmp" ; Whether to use cookies. ; http://php.net/session.use-cookies session.use_cookies = 1 ; http://php.net/session.cookie-secure ;session.cookie_secure = ; This option forces PHP to fetch and use a cookie for storing and maintaining ; the session id. We encourage this operation as it's very helpful in combating ; session hijacking when not specifying and managing your own session id. It is ; not the end all be all of session hijacking defense, but it's a good start. ; http://php.net/session.use-only-cookies session.use_only_cookies = 1 ; Name of the session (used as cookie name). ; http://php.net/session.name session.name = PHPSESSID ; Initialize session on request startup. ; http://php.net/session.auto-start session.auto_start = 0 ; Lifetime in seconds of cookie or, if 0, until browser is restarted. ; http://php.net/session.cookie-lifetime session.cookie_lifetime = 0 ; The path for which the cookie is valid. ; http://php.net/session.cookie-path session.cookie_path = / ; The domain for which the cookie is valid. ; http://php.net/session.cookie-domain session.cookie_domain = ; Whether or not to add the httpOnly flag to the cookie, which makes it inaccessible to browser scripting languages such as JavaScript. ; http://php.net/session.cookie-httponly session.cookie_httponly = ; Handler used to serialize data. php is the standard serializer of PHP. ; http://php.net/session.serialize-handler session.serialize_handler = php ; Defines the probability that the 'garbage collection' process is started ; on every session initialization. The probability is calculated by using ; gc_probability/gc_divisor. Where session.gc_probability is the numerator ; and gc_divisor is the denominator in the equation. Setting this value to 1 ; when the session.gc_divisor value is 100 will give you approximately a 1% chance ; the gc will run on any give request. ; Default Value: 1 ; Development Value: 1 ; Production Value: 1 ; http://php.net/session.gc-probability session.gc_probability = 1 ; Defines the probability that the 'garbage collection' process is started on every ; session initialization. The probability is calculated by using the following equation: ; gc_probability/gc_divisor. Where session.gc_probability is the numerator and ; session.gc_divisor is the denominator in the equation. Setting this value to 1 ; when the session.gc_divisor value is 100 will give you approximately a 1% chance ; the gc will run on any give request. Increasing this value to 1000 will give you ; a 0.1% chance the gc will run on any give request. For high volume production servers, ; this is a more efficient approach. ; Default Value: 100 ; Development Value: 1000 ; Production Value: 1000 ; http://php.net/session.gc-divisor session.gc_divisor = 1000 ; After this number of seconds, stored data will be seen as 'garbage' and ; cleaned up by the garbage collection process. ; http://php.net/session.gc-maxlifetime session.gc_maxlifetime = 1440 ; NOTE: If you are using the subdirectory option for storing session files ; (see session.save_path above), then garbage collection does *not* ; happen automatically. You will need to do your own garbage ; collection through a shell script, cron entry, or some other method. ; For example, the following script would is the equivalent of ; setting session.gc_maxlifetime to 1440 (1440 seconds = 24 minutes): ; find /path/to/sessions -cmin +24 -type f | xargs rm ; Check HTTP Referer to invalidate externally stored URLs containing ids. ; HTTP_REFERER has to contain this substring for the session to be ; considered as valid. ; http://php.net/session.referer-check session.referer_check = ; How many bytes to read from the file. ; http://php.net/session.entropy-length ;session.entropy_length = 32 ; Specified here to create the session id. ; http://php.net/session.entropy-file ; Defaults to /dev/urandom ; On systems that don't have /dev/urandom but do have /dev/arandom, this will default to /dev/arandom ; If neither are found at compile time, the default is no entropy file. ; On windows, setting the entropy_length setting will activate the ; Windows random source (using the CryptoAPI) ;session.entropy_file = /dev/urandom ; Set to {nocache,private,public,} to determine HTTP caching aspects ; or leave this empty to avoid sending anti-caching headers. ; http://php.net/session.cache-limiter session.cache_limiter = nocache ; Document expires after n minutes. ; http://php.net/session.cache-expire session.cache_expire = 180 ; trans sid support is disabled by default. ; Use of trans sid may risk your users security. ; Use this option with caution. ; - User may send URL contains active session ID ; to other person via. email/irc/etc. ; - URL that contains active session ID may be stored ; in publicly accessible computer. ; - User may access your site with the same session ID ; always using URL stored in browser's history or bookmarks. ; http://php.net/session.use-trans-sid session.use_trans_sid = 0 ; Select a hash function for use in generating session ids. ; Possible Values ; 0 (MD5 128 bits) ; 1 (SHA-1 160 bits) ; This option may also be set to the name of any hash function supported by ; the hash extension. A list of available hashes is returned by the hash_algos() ; function. ; http://php.net/session.hash-function session.hash_function = 0 ; Define how many bits are stored in each character when converting ; the binary hash data to something readable. ; Possible values: ; 4 (4 bits: 0-9, a-f) ; 5 (5 bits: 0-9, a-v) ; 6 (6 bits: 0-9, a-z, A-Z, "-", ",") ; Default Value: 4 ; Development Value: 5 ; Production Value: 5 ; http://php.net/session.hash-bits-per-character session.hash_bits_per_character = 5 ; The URL rewriter will look for URLs in a defined set of HTML tags. ; form/fieldset are special; if you include them here, the rewriter will ; add a hidden field with the info which is otherwise appended ; to URLs. If you want XHTML conformity, remove the form entry. ; Note that all valid entries require a "=", even if no value follows. ; Default Value: "a=href,area=href,frame=src,form=,fieldset=" ; Development Value: "a=href,area=href,frame=src,input=src,form=fakeentry" ; Production Value: "a=href,area=href,frame=src,input=src,form=fakeentry" ; http://php.net/url-rewriter.tags url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry" ; Enable upload progress tracking in $_SESSION ; Default Value: On ; Development Value: On ; Production Value: On ; http://php.net/session.upload-progress.enabled ;session.upload_progress.enabled = On ; Cleanup the progress information as soon as all POST data has been read ; (i.e. upload completed). ; Default Value: On ; Development Value: On ; Production Value: On ; http://php.net/session.upload-progress.cleanup ;session.upload_progress.cleanup = On ; A prefix used for the upload progress key in $_SESSION ; Default Value: "upload_progress_" ; Development Value: "upload_progress_" ; Production Value: "upload_progress_" ; http://php.net/session.upload-progress.prefix ;session.upload_progress.prefix = "upload_progress_" ; The index name (concatenated with the prefix) in $_SESSION ; containing the upload progress information ; Default Value: "PHP_SESSION_UPLOAD_PROGRESS" ; Development Value: "PHP_SESSION_UPLOAD_PROGRESS" ; Production Value: "PHP_SESSION_UPLOAD_PROGRESS" ; http://php.net/session.upload-progress.name ;session.upload_progress.name = "PHP_SESSION_UPLOAD_PROGRESS" ; How frequently the upload progress should be updated. ; Given either in percentages (per-file), or in bytes ; Default Value: "1%" ; Development Value: "1%" ; Production Value: "1%" ; http://php.net/session.upload-progress.freq ;session.upload_progress.freq = "1%" ; The minimum delay between updates, in seconds ; Default Value: 1 ; Development Value: 1 ; Production Value: 1 ; http://php.net/session.upload-progress.min-freq ;session.upload_progress.min_freq = "1" [MSSQL] ; Allow or prevent persistent links. mssql.allow_persistent = On ; Maximum number of persistent links. -1 means no limit. mssql.max_persistent = -1 ; Maximum number of links (persistent+non persistent). -1 means no limit. mssql.max_links = -1 ; Minimum error severity to display. mssql.min_error_severity = 10 ; Minimum message severity to display. mssql.min_message_severity = 10 ; Compatibility mode with old versions of PHP 3.0. mssql.compatability_mode = Off ; Connect timeout ;mssql.connect_timeout = 5 ; Query timeout ;mssql.timeout = 60 ; Valid range 0 - 2147483647. Default = 4096. ;mssql.textlimit = 4096 ; Valid range 0 - 2147483647. Default = 4096. ;mssql.textsize = 4096 ; Limits the number of records in each batch. 0 = all records in one batch. ;mssql.batchsize = 0 ; Specify how datetime and datetim4 columns are returned ; On => Returns data converted to SQL server settings ; Off => Returns values as YYYY-MM-DD hh:mm:ss ;mssql.datetimeconvert = On ; Use NT authentication when connecting to the server mssql.secure_connection = Off ; Specify max number of processes. -1 = library default ; msdlib defaults to 25 ; FreeTDS defaults to 4096 ;mssql.max_procs = -1 ; Specify client character set. ; If empty or not set the client charset from freetds.conf is used ; This is only used when compiled with FreeTDS ;mssql.charset = "ISO-8859-1" [Assertion] ; Assert(expr); active by default. ; http://php.net/assert.active ;assert.active = On ; Issue a PHP warning for each failed assertion. ; http://php.net/assert.warning ;assert.warning = On ; Don't bail out by default. ; http://php.net/assert.bail ;assert.bail = Off ; User-function to be called if an assertion fails. ; http://php.net/assert.callback ;assert.callback = 0 ; Eval the expression with current error_reporting(). Set to true if you want ; error_reporting(0) around the eval(). ; http://php.net/assert.quiet-eval ;assert.quiet_eval = 0 [COM] ; path to a file containing GUIDs, IIDs or filenames of files with TypeLibs ; http://php.net/com.typelib-file ;com.typelib_file = ; allow Distributed-COM calls ; http://php.net/com.allow-dcom ;com.allow_dcom = true ; autoregister constants of a components typlib on com_load() ; http://php.net/com.autoregister-typelib ;com.autoregister_typelib = true ; register constants casesensitive ; http://php.net/com.autoregister-casesensitive ;com.autoregister_casesensitive = false ; show warnings on duplicate constant registrations ; http://php.net/com.autoregister-verbose ;com.autoregister_verbose = true ; The default character set code-page to use when passing strings to and from COM objects. ; Default: system ANSI code page ;com.code_page= [mbstring] ; language for internal character representation. ; http://php.net/mbstring.language ;mbstring.language = Japanese ; internal/script encoding. ; Some encoding cannot work as internal encoding. ; (e.g. SJIS, BIG5, ISO-2022-*) ; http://php.net/mbstring.internal-encoding ;mbstring.internal_encoding = EUC-JP ; http input encoding. ; http://php.net/mbstring.http-input ;mbstring.http_input = auto ; http output encoding. mb_output_handler must be ; registered as output buffer to function ; http://php.net/mbstring.http-output ;mbstring.http_output = SJIS ; enable automatic encoding translation according to ; mbstring.internal_encoding setting. Input chars are ; converted to internal encoding by setting this to On. ; Note: Do _not_ use automatic encoding translation for ; portable libs/applications. ; http://php.net/mbstring.encoding-translation ;mbstring.encoding_translation = Off ; automatic encoding detection order. ; auto means ; http://php.net/mbstring.detect-order ;mbstring.detect_order = auto ; substitute_character used when character cannot be converted ; one from another ; http://php.net/mbstring.substitute-character ;mbstring.substitute_character = none; ; overload(replace) single byte functions by mbstring functions. ; mail(), ereg(), etc are overloaded by mb_send_mail(), mb_ereg(), ; etc. Possible values are 0,1,2,4 or combination of them. ; For example, 7 for overload everything. ; 0: No overload ; 1: Overload mail() function ; 2: Overload str*() functions ; 4: Overload ereg*() functions ; http://php.net/mbstring.func-overload ;mbstring.func_overload = 0 ; enable strict encoding detection. ;mbstring.strict_detection = Off ; This directive specifies the regex pattern of content types for which mb_output_handler() ; is activated. ; Default: mbstring.http_output_conv_mimetype=^(text/|application/xhtml\+xml) ;mbstring.http_output_conv_mimetype= [gd] ; Tell the jpeg decode to ignore warnings and try to create ; a gd image. The warning will then be displayed as notices ; disabled by default ; http://php.net/gd.jpeg-ignore-warning ;gd.jpeg_ignore_warning = 0 [exif] ; Exif UNICODE user comments are handled as UCS-2BE/UCS-2LE and JIS as JIS. ; With mbstring support this will automatically be converted into the encoding ; given by corresponding encode setting. When empty mbstring.internal_encoding ; is used. For the decode settings you can distinguish between motorola and ; intel byte order. A decode setting cannot be empty. ; http://php.net/exif.encode-unicode ;exif.encode_unicode = ISO-8859-15 ; http://php.net/exif.decode-unicode-motorola ;exif.decode_unicode_motorola = UCS-2BE ; http://php.net/exif.decode-unicode-intel ;exif.decode_unicode_intel = UCS-2LE ; http://php.net/exif.encode-jis ;exif.encode_jis = ; http://php.net/exif.decode-jis-motorola ;exif.decode_jis_motorola = JIS ; http://php.net/exif.decode-jis-intel ;exif.decode_jis_intel = JIS [Tidy] ; The path to a default tidy configuration file to use when using tidy ; http://php.net/tidy.default-config ;tidy.default_config = /usr/local/lib/php/default.tcfg ; Should tidy clean and repair output automatically? ; WARNING: Do not use this option if you are generating non-html content ; such as dynamic images ; http://php.net/tidy.clean-output tidy.clean_output = Off [soap] ; Enables or disables WSDL caching feature. ; http://php.net/soap.wsdl-cache-enabled soap.wsdl_cache_enabled=1 ; Sets the directory name where SOAP extension will put cache files. ; http://php.net/soap.wsdl-cache-dir soap.wsdl_cache_dir="/tmp" ; (time to live) Sets the number of second while cached file will be used ; instead of original one. ; http://php.net/soap.wsdl-cache-ttl soap.wsdl_cache_ttl=86400 ; Sets the size of the cache limit. (Max. number of WSDL files to cache) soap.wsdl_cache_limit = 5 [sysvshm] ; A default size of the shared memory segment ;sysvshm.init_mem = 10000 [ldap] ; Sets the maximum number of open links or -1 for unlimited. ldap.max_links = -1 [mcrypt] ; For more information about mcrypt settings see http://php.net/mcrypt-module-open ; Directory where to load mcrypt algorithms ; Default: Compiled in into libmcrypt (usually /usr/local/lib/libmcrypt) ;mcrypt.algorithms_dir= ; Directory where to load mcrypt modes ; Default: Compiled in into libmcrypt (usually /usr/local/lib/libmcrypt) ;mcrypt.modes_dir= [dba] ;dba.default_handler= [curl] ; A default value for the CURLOPT_CAINFO option. This is required to be an ; absolute path. ;curl.cainfo = ; Local Variables: ; tab-width: 4 ; End:
Delphi 7.1 Update Release Notes=======================================================This file contains important supplemental and late-breakinginformation that may not appear in the main productdocumentation, and supersedes information contained in otherdocuments, including previously installed release notes.Borland recommends that you read this file in its entirety.NOTE: If you are updating a localized version of Delphi 7, visit the Borland Registered User web site to obtain a localized readme file that may contain important late- breaking information not included in this readme file.IMPORTANT: Delphi must be closed before installing this update. =====================================================CONTENTS * INSTALLING THIS UPDATE * UPDATING LOCALIZED VERSIONS OF DELPHI 7 * KNOWN ISSUES * ISSUES ADDRESSED BY THIS UPDATE - IDE - CORE DATABASE - DATASNAP - DBGO (ADO COMPONENTS) - dbExpress - dbExpress COMPONENTS AND DB VCL - dbExpress CORE DRIVER AND METADATA - dbExpress VENDOR ISSUES - dbExpress CERTIFICATION - WEB SNAP - ACTIVEX - COMPILER - RTL - VCL - THIRD PARTY - BOLD FOR DELPHI * VERIFYING THAT THE UPDATE WAS SUCCESSFUL * FILES INSTALLED BY THIS UPDATE =======================================================INSTALLING THIS UPDATE* This update can not be applied to Delphi 7 Architect Trial version. * This update can not be removed after it is installed.* You will need the original Delphi 7 installation CD available to install this update.* To install this update from the CD, insert the CD, and launch the d7_ent_upd1.exe file appropriate for your locale.* To install this update from the Web, double-click the self-executing installation file and follow the prompts. * The Delphi 7 documentation PDF files are available on the update CD.========================================================UPDATING LOCALIZED VERSIONS OF DELPHI 7* This update can be applied only to the English version of Delphi 7. There are separate updates for the German, French and Japanese ver

64,715

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧