At 12:47 PM 3/2/2017, you wrote:
Content-Transfer-Encoding: base64Hi Ken,
You may want to use SET COVERAGE at the beginning and turn it off at the end of the method that errors, and add that log, of it exists to your error logging. You'll see what lines for called and which iteration it was on.
Sometimes, forgetting to LOCAL a variable changes it in a function called later.
Yup. See my responses to others.
Thanks.
Tracy
On March 2, 2017 12:24:43 PM EST, "Fernando D. Bozzo" fdbozzo@gmail.com wrote:
Hi Ken,
Seems a difficult one to trace, but just in case I give you some ideas based on personal experience with strange errors:
H[ÈÛÛXÝYÛH\ror rutine, put it in a try/catch that
adds info to a var in a step by step basis, so you later can log it to a file. Must be bomb proof. I've once found an error there when iterating tge stack array, with some fields that normally are null but somerimes are not. In any case, an error there must not hide the real error.
ÈÝtrust UI controls to call or not a method, add validation in
the methods called from UI so even if you call them from VFP command line, if a condition is noot meet, the method is not executed. Normally can be done an enabled_funtionallity() like method that can be used by the UI to enable/disable controls and the same method can be used on the business
Y]ÙÈÜHØ[YHÛØ[âFP worst situation, you can generate log info in real time while
the
\Ù\\ÈÛÜÚ[Ë[Ø]H][ÈHXHÚ]h info about controls used
(important events like click), screens loaded/unloaded, some meaning variables and timer events may be, to have some context about executed order. Analyzing it later can give you some inside about how the user interacts with your app.
Once, many years agi, a user notified a bug on which when loading the
main ØÜY[[ÛÛXØÞ\ÈÚ\H[ F&VBöbæ÷Bfnding the bug days later I did go with the user to watch
him
Ú[H[\[È[H\[Ý[]H@ser while the app
was
ØY[ÈY][\[\[er, enter,....., many times to bypass BÙÈØÜY[ut all that enter keystrokes where present in the keyboard Y\Ú]Ø]\ÙYHÛÛXØÞ\ÈÈÝÚÝÈZ\efault options.
Solution was a clear typeahead before showing the UI :D
[ÌËÌMÈ NNKÙ[XH krdibble@stny.rr.com escribió: FòföÆÆ÷rWg&öÐ yesterday evening, now that I'm back at work: âFRcode in question is a FOR ... ENDFOR loop that iterates an array,
with
the loop limiting value being the number of rows in the array, and
there is
Ý[ÈÚ][hat loop that removes or adds rows or columns to the \ay.
Bw2§W7C £ãà£ãâdõ"ÒçÒDòÄTâ D4dõ$ÒæðMail.aSortList,1)
thekey = THISFORM.oMail.aSortList(m.x,10) && "array dimensions[[Y£ ** More inoffensive code here.
SÔ\ÈIÝHÀaid, I can't reproduce this error myself but I've seen it
\ÜYH^H\Ü[\ÚXÙH[ÛÈ^\ËÛÈHdon't know if
BFW&FöâfÆVBöâFRf'7B&÷rðr some later row of the array.
2ÖVçFöæVBV&Æer, my initial assumption that the array was supposed to have 5 columns was incorrect, because I was looking at the wrong control. wfRæ÷rfW&fVBFBâFs case, when the problem code executes, this \^HØ@n only contain 10 columns:
- It is a predefined property of the oMail object (based on the
Ý\ÝÛB6Æ70, and defined in a .prg file) and is DIMENSIONed as (1) at the
outset.
- It is then populated by a SELECT [10 specified fields] FROM
[variable
XKØÝ\ÛÜH. INTO ARRAY expression with no WHERE clause.
2âÀthough the name of the FROM table or cursor is variable, the ÜXÚYYYY[È\HÝ[H^\ÜÚ[ÛÙ\Ènot use AS clauses to
Ú[ÙHH[Y\ÈÙH\Ý[fields or supply default values for
them. \YÜKif a specified field did not exist in the FROM table, an error ÛÝ[HÙ[\]Y]]Ú[ÈÝXÚ\Ü occurs.
- It is not possible for the FROM table to contain no records when
BöffVæFær6öFRWV7WFW0, because in that case the code that generates Be OM table would display a message for the user stating that the
query ÙXÙYÈ\Ý[È[[ÙH[]@d controls on the form would
B\ØXY\ÈH\Ý[, the method containing the SELECT ... INTO TVB^ression would not be called, the list control's array rowsource
would
ÛÛZ[ÈXÛÜË[H\ÝÛÛÛ's sort method, where the \ÜØØÝ\ËÛÝ[ÝHcalled. â6òÒ6öæfFVçBFBFR'&6âöæÇave 10 columns (no more
and no
\ÜÊH]HÚ[Ú@re the error is generated.
Thus the only "possible" sources of an "array dimensions invalid"
error,
Yhe error did indeed occur on the line indicated by the trace, ÛÝ[N£¸Q¡M1 P¸¸¸%9Q<IIdáIÌsion somehow generated fewer ÛÛ[[ÂâFâvW&R7V6`ied in its field list. â"âFRW6W"v26öÖV÷r&ÆP to induce one of the disabled GUI ÛÛÛÈÛÛYZÀw call the sort method when there was no data to sort.
ËSS
H]\Y[[ÛÜXÝ\Ý[\ÈÈH[Xer of rows in B'&GW&ærFRFW&FöâÆö÷à£à
[ÙÜÙH[ÜÈÚÝ[H[\ÜÜÚXK£Q¡Ðhird
possibility is that the trace provided by ASTACKINFO() is
wrong.
[^H\XØ][ÛH]Y[HÈÙYH@ry strange things with error XÙ\ËÝXÚ\ÈÙ]\[evels of code that should be in the stack
not
Z[Èeported. I have also seen, in the debugger, that errors don't XÙ\ÜØ\[HÝ\XÙH[[YYX][H[H[HÙ code that generates
them
may not be the line on which the debugger stops.
FW&R6÷VÆBÇ6ò&R6öÖWFæp wrong with my assumptions regarding how
XYHace. In the case of the issue I've been talking about, the XÙBÛÛZ[ÈHÛÝÚ[È[\Î][ H Program File: c:\cil data 2\genmaillst.sct Module/Object:
genmaillst.listdisplay.resortlistbox Source File: c:\cil data 2\genmaillst.sct Line Number: 86 Line Contents: thekey =
TÑÔKÓXZ[TÛÜ\Ý L B]el: 6 Program File: c:\stic foxpro framework\base
classes\sticbase.vct Module/Object: genmaillst.listdisplay.error
Source
File: c:\stic foxpro framework\base classes\sticbase.vct Line
Number: 23
Line Contents: DO FinalSTICError WITH 0, LINENO(1), theprogram,
MESSAGE(1),
à ø$É Ñ¡¥Ì Ìè]¡¸Ñ¡±¥¹½½ Ð0evel 5 was executed, the
TÔ
HY]ÙÙHØXÝthat contains that code was triggered,
as ÚÝÛ[@vel 6. Therefore, the error occurred in the stated line of
ÛÙBââÆWfVÂRâ £ãà£ãâöb6÷W'6RÂFRvFòæFÀe this is to add code to test the size of
the
\^Hefore trying to iterate it, which I have now done. But I am
still at HÜÜÈÈ[\Ý[ÝÈH\ÜÛÝ[occur. Fæ·2à£ãà£ãâ¶Và£à((´´)M¹Ðɽ´µä¹É¼id
device with K-9 Mail. Please excuse my brevity.
[excessive quoting removed by server]