Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Whether to Use an Array or a Cursor ?
Message
De
14/08/2013 15:33:16
 
 
À
Tous
Information générale
Forum:
Visual FoxPro
Catégorie:
Codage, syntaxe et commandes
Titre:
Whether to Use an Array or a Cursor ?
Versions des environnements
Visual FoxPro:
VFP 9 SP2
OS:
Windows XP
Network:
Windows XP
Database:
Visual FoxPro
Application:
Desktop
Divers
Thread ID:
01580497
Message ID:
01580497
Vues:
150
I am trying to some Extract Data from a Text file and preform some Manipulation on it.

For Extraction of Data I have two options, 1st create a cursor using Append from abc.txt SDF and Use The Locate Command to find my Data inside and extract it.

2nd Use an Array. Initially I opted the second option. Now, to extract the Data from The array I am Scaning the entire Array from top Until the record is Matched, but since the volume of Data to be extracted from ech file and the number of files are also too Large, its taking huge time for entire processing.

Alternatively, now i am thinking to take the data of each file in cursor and Use LOCATE FOR Command.

What would be More Faster Mode or what should I do ?

Here's a small portion of my current code. Should I Continue with Array or Cursor ?
*****************Extract Usage Charges From PS File******************
cExit='N'
lnRowposition=10000

FOR I= 1 TO nU1 && nU1 is the Length of Array
IF 'Usage Charges' $ laArray(I)=.T.
lnRowposition =    VAL(GETWORDNUM(laArray(I), GETWORDCOUNT(laArray(I)) - 1)) && The second last word
lnLeftColumnposition = GETWORDNUM(laArray(I), GETWORDCOUNT(laArray(I)) - 2) && The Third last word
lnLeftColumnposition=VAL(STREXTRACT(lnLeftColumnposition,')',''))
EXIT
ENDIF
ENDFOR

FOR nFor=-1 TO 1
lcRowposition=ALLTRIM(STR(lnRowposition+nFor))+' x'
FOR I= 1 TO nU1
IF lcRowposition $ laArray(I)=.T.
lnRightColumnposition=GETWORDNUM(laArray(I), GETWORDCOUNT(laArray(I)) - 2) && The Third last word
lnRightColumnposition=VAL(STREXTRACT(lnRightColumnposition,')',''))
IF lnRightColumnposition>lnLeftColumnposition
IF TYPE(STREXTRACT(laArray(I),'(',')'))='N'
nUsagecharges=VAL(STREXTRACT(laArray(I),'(',')'))
cEXit='Y'
EXIT
ENDIF
ENDIF
ENDIF
IF cExit='Y'
EXIT
ENDIF
ENDFOR
ENDFOR
************************************************************************
*****************Extract Balance Minimum Guarantee PS File******************
cExit='N'
lnRowposition=10000

FOR I= 1 TO nU1
IF 'Minimum Guarantee' $ laArray(I)=.T.
lnRowposition =    VAL(GETWORDNUM(laArray(I), GETWORDCOUNT(laArray(I)) - 1)) && The second last word
lnLeftColumnposition = GETWORDNUM(laArray(I), GETWORDCOUNT(laArray(I)) - 2) && The Third last word
lnLeftColumnposition=VAL(STREXTRACT(lnLeftColumnposition,')',''))
EXIT
ENDIF
ENDFOR

FOR nFor=-1 TO 1
lcRowposition=ALLTRIM(STR(lnRowposition+nFor))+' x'
FOR I= 1 TO nU1
IF lcRowposition $ laArray(I)=.T.
lnRightColumnposition=GETWORDNUM(laArray(I), GETWORDCOUNT(laArray(I)) - 2) && The Third last word
lnRightColumnposition=VAL(STREXTRACT(lnRightColumnposition,')',''))
IF lnRightColumnposition>lnLeftColumnposition
IF TYPE(STREXTRACT(laArray(I),'(',')'))='N'
nBalMinimumGuarantee=VAL(STREXTRACT(laArray(I),'(',')'))
cEXit='Y'
EXIT
ENDIF
ENDIF
ENDIF
IF cExit='Y'
EXIT
ENDIF
ENDFOR
ENDFOR
************************************************************************
Harsh
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform