------------------------------------------------------------------------------
[BUG/PRB.] VFP 9.0 FIX - ALL COMMANDS RESET THE OBJECT.NAME PROPERTY
January 2025
------------------------------------------------------------------------------
CCB
1. BUG:
In vfp9 (and vfp6, vfp7, vfp8), the MODIFY FORM command will reset the Form.Name property to the name in the Name Table Index (NTI)
if the name already exists in the Name Table Index (NTI),
sometimes the Form.Name property value will be converted to uppercase.
There is a test program:
*PROC testmodifyformcommand
form_lowername="aaa" && the variable name is the same as the Form.Name property value ("form_lowername").
MODIFY FORM testmodifyformcommand.scx && the Form.Name property value will be converted to uppercase ("FORM_LOWERNAME") in vfp9!
RETURN
* END OF PROC TESTMODIFYFORMCOMMAND.
2. CAUSE:
There are some BUGs in the following code.
3. RESOLUTION:
We can write some code to fix the BUG.
Fun4bba2b :: ; proc near
push ebp ;0x004bba2b : 55
lea ebp , dword ptr [ esp + 0FFFFFA60h ] ;0x004bba2c : 8dac2460faffff
sub esp , 076Ch ;0x004bba33 : 81ec6c070000
mov eax , dword ptr [ Data937090 ] ;0x004bba39 : a190709300
or dword ptr [ ebp + 68 ] , 0FFFFFFFFh ;0x004bba3e : 834d44ff
mov dword ptr [ ebp + 059Ch ] , eax ;0x004bba42 : 89859c050000
mov eax , dword ptr [ Data936d5c ] ;0x004bba48 : a15c6d9300
push ebx ;0x004bba4d : 53
push esi ;0x004bba4e : 56
mov esi , dword ptr [ ebp + 05A8h ] ;0x004bba4f : 8bb5a8050000
mov dword ptr [ ebp + 48 ] , eax ;0x004bba55 : 894530
mov eax , dword ptr [ esi + 4 ] ;0x004bba58 : 8b4604
mov eax , dword ptr [eax] ;0x004bba5b : 8b00
mov ecx , dword ptr [eax] ;0x004bba5d : 8b08
push edi ;0x004bba5f : 57
xor edi , edi ;0x004bba60 : 33ff
lea eax , dword ptr [ ebp + 120 ] ;0x004bba62 : 8d4578
mov dword ptr [ ebp + 84 ] , edi ;0x004bba65 : 897d54
mov dword ptr [ ebp + 100 ] , edi ;0x004bba68 : 897d64
mov dword ptr [ ebp + 76 ] , edi ;0x004bba6b : 897d4c
mov dword ptr [ ebp + 108 ] , edi ;0x004bba6e : 897d6c
call Fun41975b ;0x004bba71 : e8e5dcf5ff
mov edx , dword ptr [ esi + 8 ] ;0x004bba76 : 8b5608
mov dword ptr [ Data936d5c ] , 01h ;0x004bba79 : c7055c6d930001000000
mov dword ptr [ ebp + 96 ] , edi ;0x004bba83 : 897d60
mov dword ptr [ ebp + 92 ] , edi ;0x004bba86 : 897d5c
call Fun43b5d5 ;0x004bba89 : e847fbf7ff
mov dword ptr [ ebp + 80 ] , eax ;0x004bba8e : 894550
lea edx , dword ptr [ ebp + 56 ] ;0x004bba91 : 8d5538
lea eax , dword ptr [ ebp + 0FFFFFED8h ] ;0x004bba94 : 8d85d8feffff
call Fun42c27f ;0x004bba9a : e8e007f7ff
push edi ;0x004bba9f : 57
push eax ;0x004bbaa0 : 50
call Fun42c2be ;0x004bbaa1 : e81808f7ff
cmp eax , edi ;0x004bbaa6 : 3bc7
mov ebx , dword ptr [ ebp + 05A8h ] ;0x004bbaa8 : 8b9da8050000
pop ecx ;0x004bbaae : 59
pop ecx ;0x004bbaaf : 59
mov dword ptr [ ebp + 104 ] , eax ;0x004bbab0 : 894568
jne Label4cbe11 ;0x004bbab3 : 0f8558030100
mov eax , dword ptr [ ebx + 4 ] ;0x004bbab9 : 8b4304
mov ecx , dword ptr [ ebx + 28 ] ;0x004bbabc : 8b4b1c
mov dword ptr [ ebp + 116 ] , eax ;0x004bbabf : 894574
mov eax , dword ptr [ ebx + 24 ] ;0x004bbac2 : 8b4318
add ecx , eax ;0x004bbac5 : 03c8
cmp eax , ecx ;0x004bbac7 : 3bc1
mov dword ptr [ ebp + 112 ] , eax ;0x004bbac9 : 894570
jnl Label4cbe11 ;0x004bbacc : 0f8d3f030100
jmp Label4c466d ;0x004bbad2 : e9968b0000
Label4c455b ::
mov eax , dword ptr [ ebp + 108 ] ;0x004c455b : 8b456c
mov dword ptr [ Data93cbd4 ] , eax ;0x004c455e : a3d4cb9300
mov eax , edi ;0x004c4563 : 8bc7
call Fun53c387 ;0x004c4565 : e81d7e0700
mov esi , dword ptr [ ebp + 05A8h ] ;0x004c456a : 8bb5a8050000
add esi , 054h ;0x004c4570 : 83c654
mov eax , dword ptr [esi] ;0x004c4573 : 8b06
test eax , eax ;0x004c4575 : 85c0
je Label4c457e ;0x004c4577 : 7405
call Fun53c387 ;0x004c4579 : e8097e0700
Label4c457e ::
mov eax , dword ptr [ Data9388dc ] ;0x004c457e : a1dc889300
mov eax , dword ptr [ ebx + eax + 48 ] ;0x004c4583 : 8b440330
test eax , eax ;0x004c4587 : 85c0
js Label4c1129 ;0x004c4589 : 0f889acbffff
Label4c458f ::
pushd 0E9h ;0x004c458f : 68e9000000
push dword ptr [ ebp + 05ACh ] ;0x004c4594 : ffb5ac050000
push edi ;0x004c459a : 57
call Fun43bc72 ;0x004c459b : e8d276f7ff
cmp dword ptr [esi] , 00h ;0x004c45a0 : 833e00
mov dword ptr [ ebp + 64 ] , eax ;0x004c45a3 : 894540
je Label4c45c3 ;0x004c45a6 : 741b
mov ecx , dword ptr [esi] ;0x004c45a8 : 8b0e
call Fun4f17b1 ;0x004c45aa : e802d20200
mov ecx , dword ptr [esi] ;0x004c45af : 8b0e
mov dword ptr [ ebp + 40 ] , eax ;0x004c45b1 : 894528
call Fun43b3af ;0x004c45b4 : e8f66df7ff
cmp dword ptr [ ebp + 40 ] , 01h ;0x004c45b9 : 837d2801
je Label5df4dd ;0x004c45bd : 0f841aaf1100
Label4c45c3 ::
mov ecx , edi ;0x004c45c3 : 8bcf
call Fun4f17b1 ;0x004c45c5 : e8e7d10200
cmp eax , 01h ;0x004c45ca : 83f801
je Label5df4fa ;0x004c45cd : 0f8427af1100
mov ecx , edi ;0x004c45d3 : 8bcf
call Fun43b3af ;0x004c45d5 : e8d56df7ff
Label4c45da ::
mov ecx , dword ptr [ ebp + 64 ] ;0x004c45da : 8b4d40
xor esi , esi ;0x004c45dd : 33f6
cmp ecx , esi ;0x004c45df : 3bce
jne Label5df506 ;0x004c45e1 : 0f851faf1100
cmp dword ptr [ ebp + 100 ] , esi ;0x004c45e7 : 397564
jne Label5df511 ;0x004c45ea : 0f8521af1100
Label4c45f0 ::
mov dword ptr [ Data93cbd4 ] , esi ;0x004c45f0 : 8935d4cb9300
Label4c45f6 ::
cmp dword ptr [ ebp + 100 ] , 00h ;0x004c45f6 : 837d6400
jne Label5df52e ;0x004c45fa : 0f852eaf1100
cmp dword ptr [ ebp + 80 ] , 04h ;0x004c4600 : 837d5004
jne Label4c4613 ;0x004c4604 : 750d
mov esi , edi ;0x004c4606 : 8bf7
call Fun4c4bb0 ;0x004c4608 : e8a3050000
mov dword ptr [ ebp + 100 ] , eax ;0x004c460d : 894564
mov dword ptr [ ebp + 108 ] , edi ;0x004c4610 : 897d6c
Label4c4613 ::
cmp dword ptr [ ebp + 100 ] , 00h ;0x004c4613 : 837d6400
jne Label5df52e ;0x004c4617 : 0f8511af1100
Label4c461d ::
mov esi , dword ptr [ ebp + 05A8h ] ;0x004c461d : 8bb5a8050000
mov edx , dword ptr [ esi + 4 ] ;0x004c4623 : 8b5604
pushd 09h ;0x004c4626 : 6a09
call Fun42a5df ;0x004c4628 : e8b25ff6ff
test eax , eax ;0x004c462d : 85c0
jne Label5df594 ;0x004c462f : 0f855faf1100
Label4c4635 ::
xor eax , eax ;0x004c4635 : 33c0
cmp dword ptr [ ebp + 72 ] , eax ;0x004c4637 : 394548
jne Label4c4652 ;0x004c463a : 7516
cmp dword ptr [esi] , 01h ;0x004c463c : 833e01
jne Label4c4652 ;0x004c463f : 7511
push eax ;0x004c4641 : 50
push eax ;0x004c4642 : 50
push eax ;0x004c4643 : 50
push edi ;0x004c4644 : 57
pushd 022h ;0x004c4645 : 6a22
mov dword ptr [ esi + 56 ] , eax ;0x004c4647 : 894638
call Fun4f8b6c ;0x004c464a : e81d450300
add esp , 014h ;0x004c464f : 83c414
Label4c4652 ::
mov ebx , dword ptr [ ebp + 05A8h ] ;0x004c4652 : 8b9da8050000
Label4c4658 ::
inc dword ptr [ ebp + 112 ] ;0x004c4658 : ff4570
inc dword ptr [ ebx + 32 ] ;0x004c465b : ff4320
mov eax , dword ptr [ ebx + 28 ] ;0x004c465e : 8b431c
add eax , dword ptr [ ebx + 24 ] ;0x004c4661 : 034318
cmp dword ptr [ ebp + 112 ] , eax ;0x004c4664 : 394570
jnl Label4cbe0f ;0x004c4667 : 0f8da2770000
Label4c466d ::
mov edx , dword ptr [ ebp + 112 ] ;0x004c466d : 8b5570
mov ecx , dword ptr [ ebp + 116 ] ;0x004c4670 : 8b4d74
xor esi , esi ;0x004c4673 : 33f6
mov dword ptr [ ebp + 72 ] , esi ;0x004c4675 : 897548
mov dword ptr [ ebx + 56 ] , esi ;0x004c4678 : 897338
call Fun434624 ;0x004c467b : e8a4fff6ff
cmp dword ptr [ ebp + 100 ] , esi ;0x004c4680 : 397564
jne Label5df2ce ;0x004c4683 : 0f8545ac1100
Label4c4689 ::
mov edx , dword ptr [ ebp + 116 ] ;0x004c4689 : 8b5574
pushd 040h ;0x004c468c : 6a40
pop ecx ;0x004c468e : 59
xor eax , eax ;0x004c468f : 33c0
lea edi , dword ptr [ ebp + 0288h ] ;0x004c4691 : 8dbd88020000
rep stosd ;0x004c4697 : f3ab
pushd 03h ;0x004c4699 : 6a03
stosb ;0x004c469b : aa
push esi ;0x004c469c : 56
lea eax , dword ptr [ ebp + 0288h ] ;0x004c469d : 8d8588020000
push eax ;0x004c46a3 : 50
mov ecx , 0100h ;0x004c46a4 : b900010000
call Fun42a569 ;0x004c46a9 : e8bb5ef6ff
mov edx , dword ptr [ ebp + 116 ] ;0x004c46ae : 8b5574
pushd 04h ;0x004c46b1 : 6a04
call Fun42a5df ;0x004c46b3 : e8275ff6ff
cmp eax , esi ;0x004c46b8 : 3bc6
mov dword ptr [ ebp + 88 ] , eax ;0x004c46ba : 894558
jne Label4bbd4c ;0x004c46bd : 0f858976ffff
Label4c46c3 ::
cmp dword ptr [ebx] , 01h ;0x004c46c3 : 833b01
jne Label4bbbdc ;0x004c46c6 : 0f851075ffff
lea edx , dword ptr [ ebp + 44 ] ;0x004c46cc : 8d552c
lea eax , dword ptr [ ebp + 0FFFFFF78h ] ;0x004c46cf : 8d8578ffffff
call Fun42c27f ;0x004c46d5 : e8a57bf6ff
push esi ;0x004c46da : 56
push eax ;0x004c46db : 50
call Fun42c2be ;0x004c46dc : e8dd7bf6ff
mov ebx , eax ;0x004c46e1 : 8bd8
cmp ebx , esi ;0x004c46e3 : 3bde
pop ecx ;0x004c46e5 : 59
pop ecx ;0x004c46e6 : 59
jne Label5df3a4 ;0x004c46e7 : 0f85b7ac1100
mov edx , dword ptr [ ebp + 116 ] ;0x004c46ed : 8b5574
pushd 040h ;0x004c46f0 : 6a40
pop ecx ;0x004c46f2 : 59
xor eax , eax ;0x004c46f3 : 33c0
lea edi , dword ptr [ ebp + 0180h ] ;0x004c46f5 : 8dbd80010000
rep stosd ;0x004c46fb : f3ab
pushd 05h ;0x004c46fd : 6a05
stosb ;0x004c46ff : aa
call Fun42a5df ;0x004c4700 : e8da5ef6ff
test eax , eax ;0x004c4705 : 85c0
je Label4c4720 ;0x004c4707 : 7417
mov edx , dword ptr [ ebp + 116 ] ;0x004c4709 : 8b5574
pushd 05h ;0x004c470c : 6a05
push esi ;0x004c470e : 56
lea eax , dword ptr [ ebp + 0180h ] ;0x004c470f : 8d8580010000
push eax ;0x004c4715 : 50
mov ecx , 0100h ;0x004c4716 : b900010000
call Fun42a569 ;0x004c471b : e8495ef6ff
Label4c4720 ::
mov edi , dword ptr [ ebp + 05A8h ] ;0x004c4720 : 8bbda8050000
push edi ;0x004c4726 : 57
call Fun4c4982 ;0x004c4727 : e856020000
mov cl , byte ptr [ ebp + 0180h ] ;0x004c472c : 8a8d80010000
push dword ptr [ edi + 8 ] ;0x004c4732 : ff7708
neg cl ;0x004c4735 : f6d9
lea edx , dword ptr [ ebp + 0180h ] ;0x004c4737 : 8d9580010000
mov dword ptr [ ebp + 92 ] , eax ;0x004c473d : 89455c
sbb ecx , ecx ;0x004c4740 : 1bc9
and ecx , edx ;0x004c4742 : 23ca
push ecx ;0x004c4744 : 51
mov ecx , dword ptr [ ebp + 88 ] ;0x004c4745 : 8b4d58
neg ecx ;0x004c4748 : f7d9
sbb ecx , ecx ;0x004c474a : 1bc9
lea edx , dword ptr [ ebp + 0390h ] ;0x004c474c : 8d9590030000
and ecx , edx ;0x004c4752 : 23ca
push ecx ;0x004c4754 : 51
lea ecx , dword ptr [ ebp + 0288h ] ;0x004c4755 : 8d8d88020000
push ecx ;0x004c475b : 51
push eax ;0x004c475c : 50
call Fun4c4a62 ;0x004c475d : e800030000
mov esi , eax ;0x004c4762 : 8bf0
mov dword ptr [ ebp + 96 ] , esi ;0x004c4764 : 897560
mov dword ptr [ edi + 12 ] , esi ;0x004c4767 : 89770c
Label4c476a ::
lea eax , dword ptr [ ebp + 44 ] ;0x004c476a : 8d452c
push eax ;0x004c476d : 50
lea eax , dword ptr [ ebp + 0FFFFFF78h ] ;0x004c476e : 8d8578ffffff
call Fun42d200 ;0x004c4774 : e8878af6ff
cmp ebx , 03D4h ;0x004c4779 : 81fbd4030000
je Label5df3ac ;0x004c477f : 0f8427ac1100
cmp ebx , 01A4h ;0x004c4785 : 81fba4010000
jnl Label5df3c3 ;0x004c478b : 0f8d32ac1100
Label4c4791 ::
test ebx , ebx ;0x004c4791 : 85db
jne Label5df3df ;0x004c4793 : 0f8546ac1100
mov eax , dword ptr [ Data9388dc ] ;0x004c4799 : a1dc889300
lea edi , dword ptr [ esi + 4 * esi ] ;0x004c479e : 8d3cb6
shl edi , 05h ;0x004c47a1 : c1e705
xor ebx , ebx ;0x004c47a4 : 33db
test byte ptr [ edi + eax + 51 ] , 080h ;0x004c47a6 : f644073380
jne Label5df3e6 ;0x004c47ab : 0f8535ac1100
Label4c47b1 ::
mov eax , dword ptr [ Data9388dc ] ;0x004c47b1 : a1dc889300
cmp word ptr [ edi + eax + 16 ] , 0332h ;0x004c47b6 : 66817c07103203
je Label4bcc04 ;0x004c47bd : 0f844184ffff
Label4c47c3 ::
mov edx , dword ptr [ ebp + 116 ] ;0x004c47c3 : 8b5574
mov eax , esi ;0x004c47c6 : 8bc6
call Fun4c4b94 ;0x004c47c8 : e8c7030000
cmp dword ptr [ ebp + 92 ] , ebx ;0x004c47cd : 395d5c
mov eax , dword ptr [ ebp + 112 ] ;0x004c47d0 : 8b4570
mov ecx , dword ptr [ Data9388dc ] ;0x004c47d3 : 8b0ddc889300
mov dword ptr [ edi + ecx + 088h ] , eax ;0x004c47d9 : 89840f88000000
je Label4c48a0 ;0x004c47e0 : 0f84ba000000
push dword ptr [ ebp + 92 ] ;0x004c47e6 : ff755c
mov ebx , esi ;0x004c47e9 : 8bde
call Fun4cdfb0 ;0x004c47eb : e8c0970000
test eax , eax ;0x004c47f0 : 85c0
je Label5df433 ;0x004c47f2 : 0f843bac1100
Label4c47f8 ::
lea edx , dword ptr [ ebp + 60 ] ;0x004c47f8 : 8d553c
lea eax , dword ptr [ ebp + 0FFFFFF28h ] ;0x004c47fb : 8d8528ffffff
call Fun42c27f ;0x004c4801 : e8797af6ff
pushd 00h ;0x004c4806 : 6a00
push eax ;0x004c4808 : 50
call Fun42c2be ;0x004c4809 : e8b07af6ff
mov esi , dword ptr [ ebp + 96 ] ;0x004c480e : 8b7560
mov edi , eax ;0x004c4811 : 8bf8
test edi , edi ;0x004c4813 : 85ff
pop ecx ;0x004c4815 : 59
pop ecx ;0x004c4816 : 59
mov dword ptr [ ebp + 104 ] , edi ;0x004c4817 : 897d68
jne Label4c487d ;0x004c481a : 7561
mov ebx , dword ptr [ ebp + 05A8h ] ;0x004c481c : 8b9da8050000
;
; -------------------------------------------------------------------
; VFP 9.0 FIX - ALL COMMANDS RESET THE OBJECT.NAME PROPERTY
; April 2023
; -------------------------------------------------------------------
; CCB
;
; In vfp9, the MODIFY FORM command will reset the Form.Name property to the name in the Name Table Index (NTI)
; if the name already exists in the Name Table Index (NTI),
; sometimes the Form.Name property value will be converted to uppercase.
; In VFP Advanced, the MODIFY FORM command will not reset the Form.Name property.
;
; 2023/4/6, by ccb
;
; mov dword ptr vfpa_modifyform_ismodifyform,01h
movzx eax , byte ptr [ ebx + 20 ]
mov dword ptr vfpa_modifyform_isdoform,eax
push dword ptr [ ebp + 92 ] ;0x004c4822 : ff755c
mov ecx , dword ptr [ ebx + 8 ] ;0x004c4825 : 8b4b08
mov eax , esi ;0x004c4828 : 8bc6
call Fun4c4bd0 ;0x004c482a : e8a1030000
;
; -------------------------------------------------------------------
; VFP 9.0 FIX - ALL COMMANDS RESET THE OBJECT.NAME PROPERTY
; April 2023
; -------------------------------------------------------------------
; CCB
;
; In vfp9, the MODIFY FORM command will reset the Form.Name property to the name in the Name Table Index (NTI)
; if the name already exists in the Name Table Index (NTI),
; sometimes the Form.Name property value will be converted to uppercase.
; In VFP Advanced, the MODIFY FORM command will not reset the Form.Name property.
;
; 2023/4/6, by ccb
;
Label4c482e ::
; mov dword ptr vfpa_modifyform_ismodifyform,00h
mov dword ptr vfpa_modifyform_isdoform,00h
Label4c482f ::
mov edx , dword ptr [ ebp + 116 ] ;0x004c482f : 8b5574
pushd 06h ;0x004c4832 : 6a06
call Fun42a5df ;0x004c4834 : e8a65df6ff
mov edx , dword ptr [ ebp + 116 ] ;0x004c4839 : 8b5574
pushd 06h ;0x004c483c : 6a06
mov edi , eax ;0x004c483e : 8bf8
pushd 00h ;0x004c4840 : 6a00
lea eax , dword ptr [ ebp + 0498h ] ;0x004c4842 : 8d8598040000
push eax ;0x004c4848 : 50
mov ecx , 0FEh ;0x004c4849 : b9fe000000
call Fun42a569 ;0x004c484e : e8165df6ff
pushd 0FFFFFFFFh ;0x004c4853 : 6aff
push edi ;0x004c4855 : 57
lea eax , dword ptr [ ebp + 0498h ] ;0x004c4856 : 8d8598040000
push eax ;0x004c485c : 50
push dword ptr [ ebx + 8 ] ;0x004c485d : ff7308
mov byte ptr [ ebp + edi + 0498h ] , 00h ;0x004c4860 : c6843d9804000000
pushd 00h ;0x004c4868 : 6a00
pushd 0FFFFFFFFh ;0x004c486a : 6aff
pushd 01A5h ;0x004c486c : 68a5010000
push esi ;0x004c4871 : 56
call Fun41c715 ;0x004c4872 : e89e7ef5ff
mov edi , dword ptr [ ebp + 104 ] ;0x004c4877 : 8b7d68
add esp , 020h ;0x004c487a : 83c420
Label4c487d ::
lea eax , dword ptr [ ebp + 60 ] ;0x004c487d : 8d453c
push eax ;0x004c4880 : 50
lea eax , dword ptr [ ebp + 0FFFFFF28h ] ;0x004c4881 : 8d8528ffffff
call Fun42d200 ;0x004c4887 : e87489f6ff
cmp edi , 01A4h ;0x004c488c : 81ffa4010000
jnl Label5df462 ;0x004c4892 : 0f8dcaab1100
Label4c4898 ::
test edi , edi ;0x004c4898 : 85ff
jne Label5df479 ;0x004c489a : 0f85d9ab1100
Label4c48a0 ::
mov eax , dword ptr [ Data9388dc ] ;0x004c48a0 : a1dc889300
mov ebx , dword ptr [ ebp + 05A8h ] ;0x004c48a5 : 8b9da8050000
lea edi , dword ptr [ esi + 4 * esi ] ;0x004c48ab : 8d3cb6
shl edi , 05h ;0x004c48ae : c1e705
test byte ptr [ edi + eax + 48 ] , 02h ;0x004c48b1 : f644073002
jne Label4bee78 ;0x004c48b6 : 0f85bca5ffff
cmp dword ptr [ebx] , 01h ;0x004c48bc : 833b01
jne Label4bee78 ;0x004c48bf : 0f85b3a5ffff
Label4c48c5 ::
xor edi , edi ;0x004c48c5 : 33ff
cmp esi , edi ;0x004c48c7 : 3bf7
je Label5df4c4 ;0x004c48c9 : 0f84f5ab1100
cmp dword ptr [ ebx + 16 ] , edi ;0x004c48cf : 397b10
je Label4bc96a ;0x004c48d2 : 0f849280ffff
Label4c48d8 ::
lea edx , dword ptr [ ebp + 28 ] ;0x004c48d8 : 8d551c
lea eax , dword ptr [ ebp - 56 ] ;0x004c48db : 8d45c8
call Fun42c27f ;0x004c48de : e89c79f6ff
push edi ;0x004c48e3 : 57
push eax ;0x004c48e4 : 50
call Fun42c2be ;0x004c48e5 : e8d479f6ff
mov esi , dword ptr [ ebp + 05A8h ] ;0x004c48ea : 8bb5a8050000
mov ebx , eax ;0x004c48f0 : 8bd8
cmp ebx , edi ;0x004c48f2 : 3bdf
pop ecx ;0x004c48f4 : 59
pop ecx ;0x004c48f5 : 59
mov dword ptr [ ebp + 104 ] , ebx ;0x004c48f6 : 895d68
jne Label4c4903 ;0x004c48f9 : 7508
pushd 08h ;0x004c48fb : 6a08
push esi ;0x004c48fd : 56
call Fun4f8f8f ;0x004c48fe : e88c460300
Label4c4903 ::
lea eax , dword ptr [ ebp + 28 ] ;0x004c4903 : 8d451c
push eax ;0x004c4906 : 50
lea eax , dword ptr [ ebp - 56 ] ;0x004c4907 : 8d45c8
call Fun42d200 ;0x004c490a : e8f188f6ff
cmp ebx , 03D4h ;0x004c490f : 81fbd4030000
je Label5df4ce ;0x004c4915 : 0f84b3ab1100
cmp ebx , edi ;0x004c491b : 3bdf
jne Label5df4d6 ;0x004c491d : 0f85b3ab1100
pushd 02h ;0x004c4923 : 6a02
pop eax ;0x004c4925 : 58
cmp dword ptr [esi] , eax ;0x004c4926 : 3906
je Label4beadb ;0x004c4928 : 0f84ada1ffff
Label4c492e ::
mov esi , dword ptr [ ebp + 05A8h ] ;0x004c492e : 8bb5a8050000
push eax ;0x004c4934 : 50
pushd 0Bh ;0x004c4935 : 6a0b
pushd 0Ah ;0x004c4937 : 6a0a
pushd offset Label4fa1ee ;0x004c4939 : 68eea14f00
call Fun4f9527 ;0x004c493e : e8e44b0300
mov edi , dword ptr [ ebp + 96 ] ;0x004c4943 : 8b7d60
mov eax , dword ptr [ Data9388dc ] ;0x004c4946 : a1dc889300
mov ecx , dword ptr [ ebp + 112 ] ;0x004c494b : 8b4d70
lea ebx , dword ptr [ edi + 4 * edi ] ;0x004c494e : 8d1cbf
shl ebx , 05h ;0x004c4951 : c1e305
add eax , ebx ;0x004c4954 : 03c3
mov dword ptr [ eax + 088h ] , ecx ;0x004c4956 : 898888000000
and dword ptr [ eax + 48 ] , 0FFFFFFBFh ;0x004c495c : 836030bf
mov eax , esi ;0x004c4960 : 8bc6
cmp dword ptr [eax] , 01h ;0x004c4962 : 833801
jne Label4c45f6 ;0x004c4965 : 0f858bfcffff
cmp dword ptr [ ebp + 108 ] , 00h ;0x004c496b : 837d6c00
jne Label4c455b ;0x004c496f : 0f85e6fbffff
call Fun4bc80f ;0x004c4975 : e8957effff
mov dword ptr [ ebp + 108 ] , eax ;0x004c497a : 89456c
jmp Label4c455b ;0x004c497d : e9d9fbffff
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.
IMPORTANT NOTE:
Some commands will reset the Object.Name property to the name in the Name Table Index (NTI)
if the name already exists in the Name Table Index (NTI),
sometimes the Object.Name property value will be converted to uppercase, lowercase or mixedcase.
We can use the Form.Name property to locate a form, for example,
PRIVATE m.q_form_main
m.q_form_main=""
PRIVATE m.q_forms_nn
m.q_forms_nn=1
DO WHILE TYPE("_SCREEN.FORMS(m.q_forms_nn)")="O"
IF UPPE(ALLTRIM(_SCREEN.FORMS(m.q_forms_nn).NAME))==UPPE(ALLTRIM("form_main"))
m.q_form_main=_SCREEN.FORMS(m.q_forms_nn)
EXIT
ENDI
m.q_forms_nn=m.q_forms_nn+1
ENDDO
5. REFERENCE WEBSITES:
1, baiyujia.com:
http://www.baiyujia.com
http://www.baiyujia.com/vfpdocuments/f_vfp9fix265.asp
http://www.baiyujia.com/vfpdocuments/f_vfp9fix15.asp
2, foxite.com:
https://www.foxite.com/archives/delta-show-form-name-case-changed-0000494235.htm
6. OTHER:
For reference only, there is no guarantees.
Any questions or suggestions, please send me an email at ccb2000@163.com.
|