ALINES useless for such activities - even if it didn't exceed limits, it
would be very slow in this case. Used ALINE in this code to demonstrate
concept.

Use the FGetsEx(nFileHandle [, nMaxBytesToRead]) function - read line by
line and use that in place of the ALINES and lcLine code.

Cheers

Darren

-----Original Message-----
From: ProfoxTech [mailto:[email protected]] On Behalf Of MB
Software Solutions General Account
Sent: Friday, 3 January 2014 3:26 PM
To: [email protected]
Subject: RE: Determining maximum field widths in text file

This looks very cool, Darren....but some of these files are well over 2GB so
I'm using the FOpenEx/FReadEx/FCloseEx commands from VFP2C32.FLL. 
ALINES would overflow (I think).  I'm not in the office now but will try
tomorrow to verify.

Thanks,
--Mike


On Thu, January 2, 2014 6:32 pm, Darren wrote:
> Some very simple code for regexp.  Easy to change the pattern and 
> specify  the limits of each field and very quickly determine what is 
> correct and what is not. Powerful !!
>
> ACTIVATE SCREEN
> CLEAR
>
>
> TEXT TO lcFile NOSHOW
> "123","Anna","Manchester United","London, UK",""
> "1234","Ann","Gas House Gorillas","New York, NY",""
> "12345","Anna Maria","Brooklyn Dodgers","Brooklyn, NY","This is a 
> really long string" "678901","Santa Anna","New York Rangers","New York 
> City, NY",""
> ENDTEXT
>
>
> lnLines = ALINES(laLines, m.lcFile)
>
> *-----------------------------------------------
> loRegExp = CREATEOBJECT("vbscript.regexp") loRegExp.global = .T.
>
> loRegExp.pattern = '"([^"]*)"'
>
> FOR EACH lcLine IN laLines
>
>
> loResults = loRegExp.execute(m.lcLine)
>
> ? "Fields " + transform(m.loResults.count)
>
>
> FOR lnFld = 0 TO m.loResults.count - 1   && zero based
> ? "   (" + PADL(m.loResults.item(m.lnFld).length - 2, 3, "0") + ") - " +
> m.loResults.item(m.lnFld).submatches(0) && -2 for the quotes around 
> each element ENDFOR
>
>
> ?
>
>
> ENDFOR
>
>
>
> -----Original Message-----
> From: ProfoxTech [mailto:[email protected]] On Behalf Of MB 
> Software Solutions General Account
> Sent: Friday, 3 January 2014 8:26 AM
> To: [email protected]
> Subject: Determining maximum field widths in text file
>
>
> VFP9SP2
>
>
> Goal:  to determine maximum field widths for entire input/text file.
>
>
> Input file is Sample.txt.  It contains 'n' fields, let's say 5 for 
> this
> example:  Field1, Field2, Field3, Field4, Field5.
>
>
> Example of file:
> "123","Anna","Manchester United","London, UK",""
> "1234","Ann","Gas House Gorillas","New York, NY",""
> "12345","Anna Maria","Brooklyn Dodgers","Brooklyn, NY","This is a 
> really long string" "678901","Santa Anna","New York Rangers","New York 
> City, NY",""
>
>
> * Notice some commas may appear INSIDE fields.
>
>
> I want my output array to basically have the maximum widths for each 
> field. I'm trying to build an import tool and this will help me when 
> the provider sends me data without field layouts.  I figure I'll grab 
> the line with FGetsEx and then analyze each field from there.  Off the 
> top of my head I can create a stub cursor with each field type being 
> Memo, import the line read into that cursor and then cycle through 
> each and calculate the max via LEN(ALLTRIM(Fieldn)), but that seems 
> like an awfully big hammer (in other words, it seems very 'kludgey').
>
> Mind you, it's not ideal, but it's something to give me an idea of 
> where my truncations are occurring.  I'm importing into a MySQL 
> database and getting a ton of truncations.  I want to see where he's 
> sending me something different than officially expected.  The SHOW 
> WARNINGS command in MySQL isn't the solution either.  I just want to 
> know what fields have longer data values than he's declaring.
>
> tia, --Mike
>
>
>
>
[excessive quoting removed by server]

_______________________________________________
Post Messages to: [email protected]
Subscription Maintenance: http://mail.leafe.com/mailman/listinfo/profox
OT-free version of this list: http://mail.leafe.com/mailman/listinfo/profoxtech
Searchable Archive: http://leafe.com/archives/search/profox
This message: 
http://leafe.com/archives/byMID/profox/[email protected]
** All postings, unless explicitly stated otherwise, are the opinions of the 
author, and do not constitute legal or medical advice. This statement is added 
to the messages for those lawyers who are too stupid to see the obvious.

Reply via email to