
  ᫥ ,  ன  㤥 ࠢ ᮤন.

 ,     , ⮫쪮  ⮬  砥, ᫨ 
筮 宦. ਬ 2 ⥫䮭 ࠢ筨...
     﫠   ९  -     Delphi,
ᬠਢ       ணࠬ   Clipper.  १
  砫  .dbf  䠩. ࠢ쭮      뫮
業 ࠢ 䠩 祭   Clipper  Delphi.

 ࠡ:
- ᫨ ⨣    䠩 -  ४頥.
- ࠢ :  memo   memo, ᫮   ⨯   ᫮
   ⨯,  ⠫   ࠢ  ப, 
   ஡.
-  ᮢ  - 뢮 20  ᨬ ᮤন
-  ᮢ ᫮  - 뢮  祭
-    ⠫  ᮢ  -  뢮   20    ᨬ
  祭 ப
- ᫨   ࠢ   ,  ஥ ,  뢮 
  ⮬ ᮮ饭,  ⮫쪮  ࠧ (६ memo_message).

室    ਨ   ⥪ 㭪樨.


void
CmpContent()
{
 int	i, j, k;
 int	ret;
 int	memo_message=0;
 double	x,y;
 char	*f1,*f2;

 f1=strrchr(d1->filename, '\\');
 f2=strrchr(d2->filename, '\\');
 if (f1) ++f1; else f1=d1->filename;
 if (f2) ++f2; else f2=d2->filename;

 for(i=0;i<reccount(d1);i++)
 {
  if (i>=reccount(d2))
  {
	//᫨ ⨭  ண 䠩, ࠭ 祬 ࢮ
	printf("EOF found: %s\n", d2->filename);
	break;
  } 

//   䠩
 
  ReadRecord(d1, i);
  ReadRecord(d2, i);

//横   . ࠢ ᮤন ⮫쪮 ᮢ .
 
  for(j=0;j<fieldcount(d1);j++)
   if (ret=field_exist(d1, j, d2, &k))
   {
	if (if_memo_type(d1, j) && if_memo_type(d2, k))
	{
		//᫨   - 

		//뢠 
		d1->memo_block=GetMemo(d1, j);
		d2->memo_block=GetMemo(d2, j);

		if (!d1->memo_block && !d2->memo_block) continue;
		if (!d1->memo_block || !d2->memo_block)
		{
		// ᫨    - 

		   if (d1->memo_block) d1->memo_block[__min(20, strlen(d1->memo_block))]='\0';
		   if (d2->memo_block) d2->memo_block[__min(20, strlen(d2->memo_block))]='\0';
		   printf("%s: %s - %s <> %s: %s - %s\n\n",
		   	f1, d1->fld[j].name, (d1->memo_block)?d1->memo_block:"<empty>",
		   	f2, d2->fld[k].name, (d2->memo_block)?d2->memo_block:"<empty>"
		   	);
		}
		else
		{
		//ࠢ ᮤন

		   if (strcmp(d1->memo_block, d2->memo_block))
		      {
			d1->memo_block[__min(20, strlen(d1->memo_block))]='\0';
			d2->memo_block[__min(20, strlen(d2->memo_block))]='\0';
		   printf("%s: %s - %s <> %s: %s - %s\n\n",
		   	f1, d1->fld[j].name, d1->memo_block,
		   	f2, d2->fld[k].name, d2->memo_block
		   	);
		      }
		}
		//᢮   
		FreeMemo(d1);
		FreeMemo(d2);
	}
	else
	  if (if_memo_type(d1, j) || if_memo_type(d2, k))
	  {
		//᫨     - ᮮ饭  ⮬

		if (!memo_message)
		   printf("Can't compare %s: %s (%s) with %s: %s (%s)\n\n",
		   	f1, d1->fld[j].name, GetTypeName(d1, j),
		   	f2, d2->fld[k].name, GetTypeName(d2, k)
		   	);
		memo_message=1;
	  }
	  else
	  {
		if (if_digit_type(d1, j) && if_digit_type(d2, k))
		{
			//᫨   ᫮ - N,F,I,B,Y

			if ((x=GetValue(d1, j)) != (y=GetValue(d2, k)))
			   printf("%12s %5d: %-10s (%c) %f <> %12s %5d: %-10s (%c) %f\n\n",
			   	f1, GetOrder(d1, i), d1->fld[j].name, d1->fld[j].type, x,
			   	f2, GetOrder(d2, i), d2->fld[k].name, d2->fld[k].type, y);
		}
		else
		{
			//ࠢ  ப

			//뢠
			GetStr(d1,j); GetStr(d2, k);

			//१ ஡ ࠢ
			DStrTrim(d1,1); DStrTrim(d2,1);

			if (strcmp(d1->str, d2->str))
			{
			   d1->str[__min(20, strlen(d1->str))]='\0';
			   d2->str[__min(20, strlen(d2->str))]='\0';
			   printf(">%12s  %5d: %-10s (%c) %s\n<>%12s %5d: %-10s (%c) %s\n\n",
			   	f1, GetOrder(d1, i), d1->fld[j].name, d1->fld[j].type, d1->str,
			   	f2, GetOrder(d2, i), d2->fld[k].name, d2->fld[k].type, d2->str);
			}
		}
	  }
   }
 }
 if (i<reccount(d2)) printf("EOF found: %s\n", d1->filename);
}
