Page 1 of 1

Eroare SUBSTR la listare anumite documente de iesire

Posted: 23 Dec 2012, 16:20
by imre.bodosi
Apare la executabile xHarbour 1.2 la listarea anumitor documente de iesire ca TBON, TFACI etc.
EROARE: BASE/1110 Argument error: SUBSTR

Motiv:
tipul de document este incoerent:
- textul liber are 4 linii si
- in formule model este referita si linia 5:
Cumparator ; Cumparator ;
(xF_5 := EMPTY (SUBSTR(xF_Linia5,12))),
IF (xF_5, xF_Client, SUBSTR(xF_Linia5,12)) ; C30

Pina la aceasta versiune nu aparea eroare pentru ca aceste versiuni aveau o anomalie:
pentru prima linie de dupa ultima completata au returnat linie cu spatii,
iar de la V1.2 nu se mai intoarce linie de spatii.

Solutie:
in formule sa nu fie referiri xF_Linia... la linii din text liber care nu exista.

Re: Eroare SUBSTR la listare anumite documente de iesire

Posted: 23 Dec 2012, 16:30
by imre.bodosi
Test de exemplicificare:

Text liber:

Code: Select all

1: Unu
2: Doi
Formular:

Code: Select all

{L1            }
{L2            }
{L3            }
{L4            }
Formule:

Code: Select all

[code]L1 ; ; "["+MEMOLINE (fac->TXTLIB, 10, 1)+"]"; C12
L2 ; ; "["+MEMOLINE (fac->TXTLIB, 10, 2)+"]"; C12
L3 ; ; "["+MEMOLINE (fac->TXTLIB, 10, 3)+"]"; C12
L4 ; ; "["+MEMOLINE (fac->TXTLIB, 10, 4)+"]"; C12
[/code]
In Clipper si pana la V1.2 se listeaza:

Code: Select all

[code][Unu         ]
[Doi          ]
[               ]      - linia 3, desi nu exista, apar spatii
[]
[/code]
In V1.2 listeaza:

Code: Select all

[Unu         ]
[Doi          ]
[]                     - linia 3 vida: corect
[]
Variabilele xF_Linia..., daca linia este vida, au valoarea NIL,
daca MEMOLINE(...) returneaza "" se schimba in NIL, pentru ca liniile vide din text liber sa nu fie listate.