-------------------------------------------------------------------------------------------------- [ENHANCED] VFP 9.0 FIX - DISPLAY MORE ERROR MESSAGES FOR THE ERROR EXPRESSION IS INVALID January 2024 -------------------------------------------------------------------------------------------------- CCB 1. BUG: In vfp9 (and vfp6, vfp7, vfp8), if the expression you entered for a grid property is not valid, it will display the error message "Expression is invalid. Use a valid expression for name property". Please refer to the picture testdynamicforecolor-vfp9.png: ![]() In VFP Advanced, if the expression you entered for a grid property is not valid, it will display the error message "Expression is invalid. Use a valid expression for name property. <more error messages>". Please refer to the picture testdynamicforecolor-vfpa.png: ![]() 2. CAUSE: There are some BUGs in the following code. 3. RESOLUTION: We can write some code to fix the BUG. Fun519682 :: ; proc near push ebp ;0x00519682 : 55 lea ebp , dword ptr [ esp + 0FFFFFDD4h ] ;0x00519683 : 8dac24d4fdffff ; ; --------------------------------------------------------------------------------------- ; VFP 9.0 FIX - DISPLAY MORE ERROR MESSAGES FOR THE ERROR EXPRESSION IS INVALID ; March 2023 ; --------------------------------------------------------------------------------------- ; CCB ; ; In vfp9, if the expression you entered for a grid property is not valid, ; it will display the error message "Expression is invalid. Use a valid expression for name property". ; In VFP Advanced, if the expression you entered for a grid property is not valid, ; it will display the error message "Expression is invalid. Use a valid expression for name property. <more error messages>". ; ; 2023/3/18, by ccb ; ; sub esp , 02B8h ;0x0051968a : 81ecb8020000 sub esp , 02C8h ;0x0051968a : 81ecb8020000 xor eax , eax mov dword ptr [ ebp - 09Ch ][00h] , eax ;; vfpa_invalidexpression_ppcode. mov dword ptr [ ebp - 09Ch ][04h] , eax ;; vfpa_invalidexpression_ppcode_old. mov dword ptr [ ebp - 09Ch ][08h] , eax mov dword ptr [ ebp - 09Ch ][0Ch] , eax mov eax , dword ptr [ Data937090 ] ;0x00519690 : a190709300 mov dword ptr [ ebp + 0228h ] , eax ;0x00519695 : 898528020000 mov eax , dword ptr [ Data9370f8 ] ;0x0051969b : a1f8709300 mov eax , dword ptr [eax] ;0x005196a0 : 8b00 mov ecx , dword ptr [ eax + 0158h ] ;0x005196a2 : 8b8858010000 mov eax , dword ptr [ eax + 24 ] ;0x005196a8 : 8b4018 push ebx ;0x005196ab : 53 push esi ;0x005196ac : 56 mov esi , dword ptr [ ebp + 023Ch ] ;0x005196ad : 8bb53c020000 push edi ;0x005196b3 : 57 mov edi , dword ptr [ ebp + 0234h ] ;0x005196b4 : 8bbd34020000 mov dword ptr [ ebp + 0 ] , eax ;0x005196ba : 894500 mov eax , dword ptr [ edi + 06D0h ] ;0x005196bd : 8b87d0060000 mov dword ptr [ ebp + 12 ] , eax ;0x005196c3 : 89450c mov eax , dword ptr [ esi + 0120h ] ;0x005196c6 : 8b8620010000 test eax , eax ;0x005196cc : 85c0 mov dword ptr [ ebp - 8 ] , ecx ;0x005196ce : 894df8 mov ecx , dword ptr [ edi + 12 ] ;0x005196d1 : 8b4f0c mov dword ptr [ ebp + 4 ] , ecx ;0x005196d4 : 894d04 je Label5196ec ;0x005196d7 : 7413 mov edx , dword ptr [ Data9388dc ] ;0x005196d9 : 8b15dc889300 lea eax , dword ptr [ eax + 4 * eax ] ;0x005196df : 8d0480 shl eax , 05h ;0x005196e2 : c1e005 test byte ptr [ eax + edx + 48 ] , 02h ;0x005196e5 : f644103002 jne Label51970a ;0x005196ea : 751e Label5196ec :: test ecx , ecx ;0x005196ec : 85c9 je Label51970a ;0x005196ee : 741a mov eax , dword ptr [ ebp + 0240h ] ;0x005196f0 : 8b8540020000 lea eax , dword ptr [ esi + 4 * eax + 112 ] ;0x005196f6 : 8d448670 mov ebx , dword ptr [eax] ;0x005196fa : 8b18 test ebx , ebx ;0x005196fc : 85db mov dword ptr [ ebp + 8 ] , eax ;0x005196fe : 894508 mov dword ptr [ ebp - 12 ] , ebx ;0x00519701 : 895df4 jne Label452466 ;0x00519704 : 0f855c8df3ff Label51970a :: xor eax , eax ;0x0051970a : 33c0 Label51970c :: ; ; --------------------------------------------------------------------------------------- ; VFP 9.0 FIX - DISPLAY MORE ERROR MESSAGES FOR THE ERROR EXPRESSION IS INVALID ; March 2023 ; --------------------------------------------------------------------------------------- ; CCB ; ; In vfp9, if the expression you entered for a grid property is not valid, ; it will display the error message "Expression is invalid. Use a valid expression for name property". ; In VFP Advanced, if the expression you entered for a grid property is not valid, ; it will display the error message "Expression is invalid. Use a valid expression for name property. <more error messages>". ; ; 2023/3/18, by ccb ; ; lea esp , dword ptr [ ebp + 0FFFFFF68h ] ;0x0051970c : 8da568ffffff lea esp , dword ptr [ ebp + 0FFFFFF68h ][-10h] ;0x0051970c : 8da568ffffff mov ecx , dword ptr [ ebp + 0228h ] ;0x00519712 : 8b8d28020000 call Fun42bf1d ;0x00519718 : e80028f1ff pop edi ;0x0051971d : 5f pop esi ;0x0051971e : 5e pop ebx ;0x0051971f : 5b add ebp , 022Ch ;0x00519720 : 81c52c020000 leave ;0x00519726 : c9 ret 014h ;0x00519727 : c21400 Label452466 :: cmp ebx , 01h ;0x00452466 : 83fb01 mov eax , dword ptr [ edi + 8 ] ;0x00452469 : 8b4708 mov dword ptr [ ebp + 20 ] , eax ;0x0045246c : 894514 je Label56b85a ;0x0045246f : 0f84e5931100 xor eax , eax ;0x00452475 : 33c0 call Fun42c118 ;0x00452477 : e89c9cfdff mov eax , esp ;0x0045247c : 8bc4 sub eax , dword ptr [ Data9370c4 ] ;0x0045247e : 2b05c4709300 cmp eax , ebx ;0x00452484 : 3bc3 jle Label56b86f ;0x00452486 : 0f8ee3931100 mov eax , ebx ;0x0045248c : 8bc3 add eax , 07h ;0x0045248e : 83c007 and eax , 0FFFFFFF8h ;0x00452491 : 83e0f8 call Fun42c118 ;0x00452494 : e87f9cfdff mov dword ptr [ ebp + 24 ] , esp ;0x00452499 : 896518 Label45249c :: cmp dword ptr [ ebp + 24 ] , 00h ;0x0045249c : 837d1800 mov ebx , 0134h ;0x004524a0 : bb34010000 je Label56b878 ;0x004524a5 : 0f84cd931100 xor eax , eax ;0x004524ab : 33c0 call Fun42c118 ;0x004524ad : e8669cfdff mov eax , dword ptr [ edi + 0524h ] ;0x004524b2 : 8b8724050000 mov ecx , esp ;0x004524b8 : 8bcc sub ecx , dword ptr [ Data9370c4 ] ;0x004524ba : 2b0dc4709300 shl eax , 02h ;0x004524c0 : c1e002 cmp ecx , eax ;0x004524c3 : 3bc8 jle Label56b87f ;0x004524c5 : 0f8eb4931100 add eax , 07h ;0x004524cb : 83c007 and eax , 0FFFFFFF8h ;0x004524ce : 83e0f8 call Fun42c118 ;0x004524d1 : e8429cfdff mov dword ptr [ ebp + 16 ] , esp ;0x004524d6 : 896510 Label4524d9 :: cmp dword ptr [ ebp + 16 ] , 00h ;0x004524d9 : 837d1000 je Label56b888 ;0x004524dd : 0f84a5931100 mov eax , dword ptr [ ebp + 0240h ] ;0x004524e3 : 8b8540020000 mov ecx , dword ptr [ esi + 4 * eax + 40 ] ;0x004524e9 : 8b4c8628 mov edx , dword ptr [ ebp + 24 ] ;0x004524ed : 8b5518 mov eax , edi ;0x004524f0 : 8bc7 call Fun51980c ;0x004524f2 : e815730c00 mov ebx , dword ptr [ ebp + 8 ] ;0x004524f7 : 8b5d08 xor eax , eax ;0x004524fa : 33c0 inc eax ;0x004524fc : 40 mov dword ptr [ebx] , eax ;0x004524fd : 8903 test byte ptr [ esi + 012Eh ] , 02h ;0x004524ff : f6862e01000002 push eax ;0x00452506 : 50 jne Label56b88f ;0x00452507 : 0f8582931100 mov ecx , dword ptr [ edi + 12 ] ;0x0045250d : 8b4f0c Label452510 :: call Fun52da49 ;0x00452510 : e834b50d00 mov eax , dword ptr [ Data9393ac ] ;0x00452515 : a1ac939300 mov dword ptr [ ebp - 20 ] , eax ;0x0045251a : 8945ec mov eax , dword ptr [ ebp + 24 ] ;0x0045251d : 8b4518 mov dword ptr [ Data9393ac ] , eax ;0x00452520 : a3ac939300 mov eax , esi ;0x00452525 : 8bc6 sub eax , edi ;0x00452527 : 2bc7 xor edx , edx ;0x00452529 : 33d2 sub eax , 0740h ;0x0045252b : 2d40070000 mov ecx , 0158h ;0x00452530 : b958010000 div ecx ;0x00452535 : f7f1 lea ecx , dword ptr [ ebp - 24 ] ;0x00452537 : 8d4de8 push ecx ;0x0045253a : 51 lea ecx , dword ptr [ ebp + 28 ] ;0x0045253b : 8d4d1c push ecx ;0x0045253e : 51 push edi ;0x0045253f : 57 lea edx , dword ptr [ ebp - 28 ] ;0x00452540 : 8d55e4 lea ecx , dword ptr [ ebp - 16 ] ;0x00452543 : 8d4df0 call Fun4521b6 ;0x00452546 : e86bfcffff inc dword ptr [ edi + 0104h ] ;0x0045254b : ff8704010000 xor esi , esi ;0x00452551 : 33f6 cmp dword ptr [ edi + 12 ] , esi ;0x00452553 : 39770c je Label452560 ;0x00452556 : 7408 push dword ptr [ ebp + 16 ] ;0x00452558 : ff7510 call Fun519c4f ;0x0045255b : e8ef760c00 Label452560 :: mov eax , dword ptr [ Data9370f8 ] ;0x00452560 : a1f8709300 mov ecx , dword ptr [ ebp + 12 ] ;0x00452565 : 8b4d0c cmp ecx , esi ;0x00452568 : 3bce mov dword ptr [ebx] , esi ;0x0045256a : 8933 mov eax , dword ptr [eax] ;0x0045256c : 8b00 mov dword ptr [ eax + 0158h ] , esi ;0x0045256e : 89b058010000 je Label452584 ;0x00452574 : 740e mov eax , dword ptr [ Data93e77c ] ;0x00452576 : a17ce79300 mov dword ptr [ Data93e77c ] , ecx ;0x0045257b : 890d7ce79300 mov dword ptr [ ebp - 32 ] , eax ;0x00452581 : 8945e0 Label452584 :: ; ; --------------------------------------------------------------------------------------- ; VFP 9.0 FIX - DISPLAY MORE ERROR MESSAGES FOR THE ERROR EXPRESSION IS INVALID ; March 2023 ; --------------------------------------------------------------------------------------- ; CCB ; ; In vfp9, if the expression you entered for a grid property is not valid, ; it will display the error message "Expression is invalid. Use a valid expression for name property". ; In VFP Advanced, if the expression you entered for a grid property is not valid, ; it will display the error message "Expression is invalid. Use a valid expression for name property. <more error messages>". ; ; 2023/3/18, by ccb ; mov eax , dword ptr [ ebp + 0238h ] mov byte ptr [eax] , 043h mov dword ptr [ eax + 04h ] , 00h mov dword ptr [ eax + 08h ] , 00h mov byte ptr [ eax + 2Ch ] , 00h mov eax , dword ptr [ Data9393ac ] mov dword ptr [ ebp - 09Ch ][00h] , eax mov dword ptr vfpa_invalidexpression_errornumber,00h mov byte ptr vfpa_invalidexpression_errormessage,00h mov byte ptr vfpa_invalidexpression_errorsource,00h mov byte ptr vfpa_invalidexpression_errortext,00h lea edx , dword ptr [ ebp + 8 ] ;0x00452584 : 8d5508 lea eax , dword ptr [ ebp + 0FFFFFF78h ] ;0x00452587 : 8d8578ffffff call Fun42c27f ;0x0045258d : e8ed9cfdff push esi ;0x00452592 : 56 push eax ;0x00452593 : 50 call Fun42c2be ;0x00452594 : e8259dfdff pop ecx ;0x00452599 : 59 cmp eax , esi ;0x0045259a : 3bc6 mov esi , dword ptr [ ebp + 0238h ] ;0x0045259c : 8bb538020000 pop ecx ;0x004525a2 : 59 mov dword ptr [ ebp + 24 ] , eax ;0x004525a3 : 894518 jne Label4525bf ;0x004525a6 : 7517 mov eax , dword ptr [ Data9393ac ] ;0x004525a8 : a1ac939300 cmp byte ptr [eax] , 0FCh ;0x004525ad : 8038fc jne Label56b896 ;0x004525b0 : 0f85e0921100 push esi ;0x004525b6 : 56 pushd 08h ;0x004525b7 : 6a08 pop ebx ;0x004525b9 : 5b call Fun52a938 ;0x004525ba : e879830d00 Label4525bf :: lea eax , dword ptr [ ebp + 8 ] ;0x004525bf : 8d4508 push eax ;0x004525c2 : 50 lea eax , dword ptr [ ebp + 0FFFFFF78h ] ;0x004525c3 : 8d8578ffffff call Fun42d200 ;0x004525c9 : e832acfdff ; ; --------------------------------------------------------------------------------------- ; VFP 9.0 FIX - DISPLAY MORE ERROR MESSAGES FOR THE ERROR EXPRESSION IS INVALID ; March 2023 ; --------------------------------------------------------------------------------------- ; CCB ; ; In vfp9, if the expression you entered for a grid property is not valid, ; it will display the error message "Expression is invalid. Use a valid expression for name property". ; In VFP Advanced, if the expression you entered for a grid property is not valid, ; it will display the error message "Expression is invalid. Use a valid expression for name property. <more error messages>". ; ; 2023/3/18, by ccb ; cmp dword ptr vfpa_sys9124_data,0FFFFFFFFh je Label4525ce cmp dword ptr vfpa_sys9124_data,00h je Label4525ce mov eax , dword ptr [ ebp + 24 ] cmp eax,00h je Label4525ce mov dword ptr vfpa_invalidexpression_errornumber,eax mov byte ptr vfpa_invalidexpression_errormessage,00h mov byte ptr vfpa_invalidexpression_errorsource,00h mov byte ptr vfpa_invalidexpression_errortext,00h push 0F0h lea eax,byte ptr vfpa_invalidexpression_errormessage mov byte ptr [eax],20h inc eax push eax push dword ptr vfpa_invalidexpression_errornumber call vfpa_geterrormessage mov eax , dword ptr [ ebp - 09Ch ][00h] cmp byte ptr [eax] , 0FCh jne Label4525ce mov eax , dword ptr [ Data9393ac ] mov dword ptr [ ebp - 09Ch ][04h] , eax mov eax , dword ptr [ ebp - 09Ch ][00h] mov dword ptr [ Data9393ac ] , eax lea ecx,byte ptr vfpa_invalidexpression_errorsource mov byte ptr [ecx],20h inc ecx mov edx , 01F0h push 01h push edx push ecx call vfpa_geterrorsource mov eax , dword ptr [ ebp - 09Ch ][04h] mov dword ptr [ Data9393ac ] , eax Label4525ce :: mov ebx , dword ptr [ ebp + 12 ] ;0x004525ce : 8b5d0c test ebx , ebx ;0x004525d1 : 85db je Label4525dd ;0x004525d3 : 7408 mov eax , dword ptr [ ebp - 32 ] ;0x004525d5 : 8b45e0 mov dword ptr [ Data93e77c ] , eax ;0x004525d8 : a37ce79300 Label4525dd :: cmp dword ptr [ ebp + 24 ] , 00h ;0x004525dd : 837d1800 mov eax , dword ptr [ Data9370f8 ] ;0x004525e1 : a1f8709300 mov eax , dword ptr [eax] ;0x004525e6 : 8b00 mov ecx , dword ptr [ ebp - 8 ] ;0x004525e8 : 8b4df8 mov dword ptr [ eax + 0158h ] , ecx ;0x004525eb : 898858010000 mov eax , dword ptr [ ebp + 023Ch ] ;0x004525f1 : 8b853c020000 mov ecx , dword ptr [ ebp + 0240h ] ;0x004525f7 : 8b8d40020000 lea edi , dword ptr [ eax + 4 * ecx + 112 ] ;0x004525fd : 8d7c8870 mov eax , dword ptr [ ebp - 20 ] ;0x00452601 : 8b45ec mov dword ptr [edi] , 01h ;0x00452604 : c70701000000 mov dword ptr [ Data9393ac ] , eax ;0x0045260a : a3ac939300 jne Label56b8b4 ;0x0045260f : 0f859f921100 Label452615 :: mov al , byte ptr [esi] ;0x00452615 : 8a06 cmp al , 04Dh ;0x00452617 : 3c4d je Label56b914 ;0x00452619 : 0f84f5921100 cmp al , 057h ;0x0045261f : 3c57 je Label56b92b ;0x00452621 : 0f8404931100 Label452627 :: push dword ptr [ ebp - 16 ] ;0x00452627 : ff75f0 mov ecx , dword ptr [ ebp - 28 ] ;0x0045262a : 8b4de4 lea eax , dword ptr [ ebp + 28 ] ;0x0045262d : 8d451c push eax ;0x00452630 : 50 mov eax , dword ptr [ ebp - 24 ] ;0x00452631 : 8b45e8 call Fun452422 ;0x00452634 : e8e9fdffff mov eax , dword ptr [ ebp + 4 ] ;0x00452639 : 8b4504 test eax , eax ;0x0045263c : 85c0 je Label56b957 ;0x0045263e : 0f8413931100 test byte ptr [ eax + 16 ] , 020h ;0x00452644 : f6401020 je Label56b957 ;0x00452648 : 0f8409931100 mov ecx , ebx ;0x0045264e : 8bcb call Fun53eaa2 ;0x00452650 : e84dc40e00 test eax , eax ;0x00452655 : 85c0 je Label56b961 ;0x00452657 : 0f8404931100 mov ecx , dword ptr [ Data9388dc ] ;0x0045265d : 8b0ddc889300 lea eax , dword ptr [ ebx + 4 * ebx ] ;0x00452663 : 8d049b shl eax , 05h ;0x00452666 : c1e005 mov eax , dword ptr [ eax + ecx + 108 ] ;0x00452669 : 8b44086c cmp eax , dword ptr [ ebp + 20 ] ;0x0045266d : 3b4514 jne Label56b961 ;0x00452670 : 0f85eb921100 mov ecx , dword ptr [ ebp + 0 ] ;0x00452676 : 8b4d00 call Fun52a6f6 ;0x00452679 : e878800d00 mov eax , dword ptr [ ebp + 20 ] ;0x0045267e : 8b4514 mov ebx , dword ptr [eax] ;0x00452681 : 8b18 call Fun519640 ;0x00452683 : e8b86f0c00 dec dword ptr [ ebx + 0104h ] ;0x00452688 : ff8b04010000 cmp dword ptr [ ebp + 0240h ] , 00h ;0x0045268e : 83bd4002000000 mov eax , dword ptr [ ebp - 12 ] ;0x00452695 : 8b45f4 mov dword ptr [edi] , eax ;0x00452698 : 8907 je Label56b96b ;0x0045269a : 0f84cb921100 Label4526a0 :: push dword ptr [ ebp + 16 ] ;0x004526a0 : ff7510 call Fun519a5f ;0x004526a3 : e8b7730c00 call Fun43e4fe ;0x004526a8 : e851befeff test eax , eax ;0x004526ad : 85c0 jne Label56b97c ;0x004526af : 0f85c7921100 Label4526b5 :: xor eax , eax ;0x004526b5 : 33c0 cmp dword ptr [ ebp + 24 ] , eax ;0x004526b7 : 394518 jne Label56b986 ;0x004526ba : 0f85c6921100 Label4526c0 :: xor eax , eax ;0x004526c0 : 33c0 inc eax ;0x004526c2 : 40 jmp Label51970c ;0x004526c3 : e944700c00 Label56b85a :: pushd 00h ;0x0056b85a : 6a00 xor edx , edx ;0x0056b85c : 33d2 mov ecx , edi ;0x0056b85e : 8bcf call Fun51eadb ;0x0056b860 : e87632fbff mov ecx , 0A4h ;0x0056b865 : b9a4000000 call Fun544742 ;0x0056b86a : e8d38efdff Label56b86f :: and dword ptr [ ebp + 24 ] , 00h ;0x0056b86f : 83651800 jmp Label45249c ;0x0056b873 : e9246ceeff Label56b878 :: mov ecx , ebx ;0x0056b878 : 8bcb call Fun544742 ;0x0056b87a : e8c38efdff Label56b87f :: and dword ptr [ ebp + 16 ] , 00h ;0x0056b87f : 83651000 jmp Label4524d9 ;0x0056b883 : e9516ceeff Label56b888 :: mov ecx , ebx ;0x0056b888 : 8bcb call Fun544742 ;0x0056b88a : e8b38efdff Label56b88f :: mov ecx , dword ptr [esi] ;0x0056b88f : 8b0e jmp Label452510 ;0x0056b891 : e97a6ceeff Label56b896 :: pushd 0FFFFFFFFh ;0x0056b896 : 6aff mov edx , 01000h ;0x0056b898 : ba00100000 lea ecx , dword ptr [ ebp - 56 ] ;0x0056b89d : 8d4dc8 call Fun421184 ;0x0056b8a0 : e8df58ebff lea edx , dword ptr [ ebp - 56 ] ;0x0056b8a5 : 8d55c8 mov eax , esi ;0x0056b8a8 : 8bc6 call Fun4503a9 ;0x0056b8aa : e8fa4aeeff jmp Label4525bf ;0x0056b8af : e90b6deeff Label56b8b4 :: cmp dword ptr [ ebp + 0244h ] , 00h ;0x0056b8b4 : 83bd4402000000 je Label452615 ;0x0056b8bb : 0f84546deeff mov eax , dword ptr [ ebp + 4 ] ;0x0056b8c1 : 8b4504 test eax , eax ;0x0056b8c4 : 85c0 je Label56b90c ;0x0056b8c6 : 7444 test byte ptr [ eax + 16 ] , 020h ;0x0056b8c8 : f6401020 je Label56b90c ;0x0056b8cc : 743e mov ecx , ebx ;0x0056b8ce : 8bcb call Fun53eaa2 ;0x0056b8d0 : e8cd31fdff test eax , eax ;0x0056b8d5 : 85c0 je Label56b90c ;0x0056b8d7 : 7433 mov ecx , dword ptr [ Data9388dc ] ;0x0056b8d9 : 8b0ddc889300 mov edx , dword ptr [ ebp + 20 ] ;0x0056b8df : 8b5514 lea eax , dword ptr [ ebx + 4 * ebx ] ;0x0056b8e2 : 8d049b shl eax , 05h ;0x0056b8e5 : c1e005 cmp dword ptr [ eax + ecx + 108 ] , edx ;0x0056b8e8 : 3954086c jne Label56b90c ;0x0056b8ec : 751e mov ecx , dword ptr [ ebp + 0 ] ;0x0056b8ee : 8b4d00 call Fun52a6f6 ;0x0056b8f1 : e800eefbff mov eax , dword ptr [ ebp + 20 ] ;0x0056b8f6 : 8b4514 call Fun519640 ;0x0056b8f9 : e842ddfaff mov eax , dword ptr [ ebp + 20 ] ;0x0056b8fe : 8b4514 mov ecx , dword ptr [eax] ;0x0056b901 : 8b08 pushd 00h ;0x0056b903 : 6a00 xor edx , edx ;0x0056b905 : 33d2 call Fun51eadb ;0x0056b907 : e8cf31fbff Label56b90c :: mov ecx , dword ptr [ ebp + 24 ] ;0x0056b90c : 8b4d18 call Fun544742 ;0x0056b90f : e82e8efdff Label56b914 :: lea eax , dword ptr [ esi + 44 ] ;0x0056b914 : 8d462c push eax ;0x0056b917 : 50 mov ebx , 0FFh ;0x0056b918 : bbff000000 call Fun43627b ;0x0056b91d : e859a9ecff and dword ptr [ esi + 4 ] , 00h ;0x0056b922 : 83660400 mov byte ptr [esi] , 043h ;0x0056b926 : c60643 jmp Label56b943 ;0x0056b929 : eb18 Label56b92b :: lea eax , dword ptr [ esi + 44 ] ;0x0056b92b : 8d462c push eax ;0x0056b92e : 50 mov ebx , 0FFh ;0x0056b92f : bbff000000 call Fun43627b ;0x0056b934 : e842a9ecff mov byte ptr [esi] , 051h ;0x0056b939 : c60651 mov dword ptr [ esi + 4 ] , 01h ;0x0056b93c : c7460401000000 Label56b943 :: mov eax , dword ptr [ esi + 12 ] ;0x0056b943 : 8b460c cmp eax , ebx ;0x0056b946 : 3bc3 jle Label56b94c ;0x0056b948 : 7e02 mov eax , ebx ;0x0056b94a : 8bc3 Label56b94c :: mov ebx , dword ptr [ ebp + 12 ] ;0x0056b94c : 8b5d0c mov dword ptr [ esi + 8 ] , eax ;0x0056b94f : 894608 jmp Label452627 ;0x0056b952 : e9d06ceeff Label56b957 :: mov ecx , 0A3h ;0x0056b957 : b9a3000000 call Fun544742 ;0x0056b95c : e8e18dfdff Label56b961 :: mov ecx , 0A4h ;0x0056b961 : b9a4000000 call Fun544742 ;0x0056b966 : e8d78dfdff Label56b96b :: movzx eax ,byte ptr [esi] ;0x0056b96b : 0fb606 mov ecx , dword ptr [ ebp + 023Ch ] ;0x0056b96e : 8b8d3c020000 mov dword ptr [ ecx + 8 ] , eax ;0x0056b974 : 894108 jmp Label4526a0 ;0x0056b977 : e9246deeff Label56b97c :: call Fun901c42 ;0x0056b97c : e8c1623900 jmp Label4526b5 ;0x0056b981 : e92f6deeff Label56b986 :: cmp dword ptr [ ebp + 0244h ] , eax ;0x0056b986 : 398544020000 jne Label4526c0 ;0x0056b98c : 0f852e6deeff mov esi , dword ptr [ ebp + 0240h ] ;0x0056b992 : 8bb540020000 mov dword ptr [edi] , eax ;0x0056b998 : 8907 mov edi , dword ptr [ ebp + 023Ch ] ;0x0056b99a : 8bbd3c020000 mov eax , dword ptr [ edi + 4 * esi + 40 ] ;0x0056b9a0 : 8b44b728 cmp eax , 0FFFFFFFFh ;0x0056b9a4 : 83f8ff je Label56b9ca ;0x0056b9a7 : 7421 test byte ptr [ edi + 012Eh ] , 020h ;0x0056b9a9 : f6872e01000020 push eax ;0x0056b9b0 : 50 je Label56b9bb ;0x0056b9b1 : 7408 mov eax , dword ptr [ ebx + 0134h ] ;0x0056b9b3 : 8b8334010000 jmp Label56b9c0 ;0x0056b9b9 : eb05 Label56b9bb :: mov eax , dword ptr [ Data93d290 ] ;0x0056b9bb : a190d29300 Label56b9c0 :: call Fun43ed40 ;0x0056b9c0 : e87b33edff or dword ptr [ edi + 4 * esi + 40 ] , 0FFFFFFFFh ;0x0056b9c5 : 834cb728ff Label56b9ca :: mov ecx , dword ptr [ 4 * esi + offset Data945508 ] ;0x0056b9ca : 8b0cb508559400 test ecx , ecx ;0x0056b9d1 : 85c9 je Label56b9f6 ;0x0056b9d3 : 7421 mov eax , dword ptr [ edi + 0120h ] ;0x0056b9d5 : 8b8720010000 test eax , eax ;0x0056b9db : 85c0 je Label56b9f6 ;0x0056b9dd : 7417 push eax ;0x0056b9df : 50 mov bx , 0Ch ;0x0056b9e0 : 66bb0c00 mov esi , ecx ;0x0056b9e4 : 8bf1 call Fun5075ad ;0x0056b9e6 : e8c2bbf9ff call Fun73f215 ;0x0056b9eb : e825381d00 mov esi , dword ptr [ ebp + 0240h ] ;0x0056b9f0 : 8bb540020000 Label56b9f6 :: pushd 00h ;0x0056b9f6 : 6a00 lea eax , dword ptr [ ebp + 011Ch ] ;0x0056b9f8 : 8d851c010000 push eax ;0x0056b9fe : 50 pushd 02F7h ;0x0056b9ff : 68f7020000 call Fun4ce6c0 ;0x0056ba04 : e8b72cf6ff ; ; --------------------------------------------------------------------------------------- ; VFP 9.0 FIX - DISPLAY MORE ERROR MESSAGES FOR THE ERROR EXPRESSION IS INVALID ; March 2023 ; --------------------------------------------------------------------------------------- ; CCB ; ; In vfp9, if the expression you entered for a grid property is not valid, ; it will display the error message "Expression is invalid. Use a valid expression for name property". ; In VFP Advanced, if the expression you entered for a grid property is not valid, ; it will display the error message "Expression is invalid. Use a valid expression for name property. <more error messages>". ; ; 2023/3/18, by ccb ; cmp dword ptr vfpa_sys9124_data,0FFFFFFFFh je Label51970a cmp dword ptr vfpa_sys9124_data,00h je Label56ba09 cmp dword ptr vfpa_invalidexpression_errornumber,00h je Label56ba09 mov eax , 01h mov ecx , dword ptr [ Data937794 ] test ecx , ecx je Label56ba19 lea eax , dword ptr [ ebp + 011Ch ] push eax lea eax,byte ptr vfpa_invalidexpression_errortext push eax call lstrcpyA lea eax,byte ptr vfpa_invalidexpression_errormessage push eax lea eax,byte ptr vfpa_invalidexpression_errortext push eax call lstrcatA lea eax,byte ptr vfpa_invalidexpression_errorsource push eax lea eax,byte ptr vfpa_invalidexpression_errortext push eax call lstrcatA pushd 00h pushd 01h lea eax,byte ptr vfpa_invalidexpression_errortext push eax call Fun6da3d3 jmp Label56ba19 Label56ba09 :: pushd 00h ;0x0056ba09 : 6a00 pushd 01h ;0x0056ba0b : 6a01 lea eax , dword ptr [ ebp + 011Ch ] ;0x0056ba0d : 8d851c010000 push eax ;0x0056ba13 : 50 call Fun6da3d3 ;0x0056ba14 : e8bae91600 Label56ba19 :: cmp eax , 01h ;0x0056ba19 : 83f801 je Label51970a ;0x0056ba1c : 0f84e8dcfaff xor eax , eax ;0x0056ba22 : 33c0 inc eax ;0x0056ba24 : 40 mov ecx , esi ;0x0056ba25 : 8bce shl eax , cl ;0x0056ba27 : d3e0 and eax , 03FFFFh ;0x0056ba29 : 25ffff0300 or dword ptr [ edi + 0B8h ] , eax ;0x0056ba2e : 0987b8000000 jmp Label51970a ;0x0056ba34 : e9d1dcfaff 4. APPLIES TO: VFP 6.0.8167.0 VFP 6.0.8961.0 (SP5) VFP 7.0.0.9262 VFP 7.0.0.9465 (SP1) VFP 8.0.0.2521 VFP 8.0.0.3117 (SP1) VFP 9.0.0.2412 VFP 9.0.0.3504 (SP1) VFP 9.0.0.4611 (SP2) VFP 9.0.0.5015 (SP2) VFP 9.0.0.5411 (SP2) VFP 9.0.0.5721 (SP2) VFP 9.0.0.5815 (SP2) VFP 9.0.0.6303 (SP2) VFP 9.0.0.6602 (SP2) VFP 9.0.0.7423 (SP2) The bug has been fixed in VFP Advanced. 5. REFERENCE WEBSITES: 1, baiyujia.com: http://www.baiyujia.com http://www.baiyujia.com/vfpdocuments/f_vfp9fix253.asp http://www.baiyujia.com/vfpdocuments/f_vfp9fix263.asp http://www.baiyujia.com/vfpdocuments/f_vfp9fix264.asp 2, foxite.com: https://www.foxite.com/archives/dynamicback-colour-0000386155.htm https://www.foxite.com/archives/dynamicbackcolor-0000159922.htm https://www.foxite.com/archives/grid-expression-invalid-0000181090.htm https://www.foxite.com/archives/grid-dynamicbackcolors-error-0000419030.htm https://www.foxite.com/archives/color-grid-cell-dynamic-columns-0000376645.htm 6. OTHER: For reference only, there is no guarantees. Any questions or suggestions, please send me an email at ccb2000@163.com. |