that would be like this:
**********************************************************************************************************************
FUNCTION MaakDLM &&dutch for: make delimited(dlm)
********************************************************************************************************************
lcFile = "c:\temp\rop.txt"
lnOutHandle = FCREATE(lcBestand)
SELECT (lcCursor)
SCAN
*-- read line
lcRegel = ""
lcRegel = lcRegel + LeesRegel(lcCursor)
*-- write line
SchrijfRegel(lnOutHandle ,lcRegel)
ENDSCAN
FCLOSE(lnOutHandle)
**********************************************************************************************************************
FUNCTION LeesRegel
*read line
LPARAMETERS tcCursor
&& veld is field in dutch, velden are fields..
LOCAL lcRegel,laVelden,liAantal,liCnt,lcType,luVeld,lcVeld,lcWaarde
DECLARE laVelden[1]
lcRegel = ''
SELECT (tcCursor)
FOR liCnt = 1 TO AFIELDS(laVelden,tcCursor)
luVeld = laVelden[liCnt,1]
lcType = laVelden[liCnt,2]
liWidth = laVelden[liCnt,3]
liDecimal = laVelden[liCnt,4]
DO CASE
CASE lcType = 'C'
lcVeld = ALLTRIM(&luVeld)
lcVeld = STRTRAN(lcVeld,'"',"'"

lcRegel = lcRegel + '"'
lcRegel = lcRegel + lcVeld
lcRegel = lcRegel + '",'
CASE lcType = 'D'
lcRegel = lcRegel + '"' + ALLTRIM(DTOC(&luVeld)) + '"' + ','
CASE lcType = 'L'
lcRegel = lcRegel + '"' + IIF(&luVeld=.F.,'False','True') + '"' + ','
CASE lcType = 'M'
lcVeld = ALLTRIM(&luVeld)
lcVeld = STRTRAN(lcVeld,'"',"'"

lcRegel = lcRegel + '"'
lcRegel = lcRegel + lcVeld
lcRegel = lcRegel + '",'
CASE lcType = 'N'
lcWaarde = ALLTRIM(STR(&luVeld,liWidth,liDecimal))
lcRegel = lcRegel + '"' + lcWaarde + '"' + ','
CASE lcType = 'I'
lcRegel = lcRegel + '"' + ALLTRIM(STR(&luVeld)) + '"' + ','
OTHERWISE
RETURN .F.
ENDCASE
ENDFOR
RETURN lcRegel
ENDFUNC
********************************************************************************************************************
PROCEDURE SchrijfRegel
*write line
LPARAMETERS lnUitHandle,lcRegel
LOCAL liRegels,lcMemoRegel,liCnt,liPos
liRegels = OCCURS(CHR(10),lcRegel)
IF liRegels > 0
*in this case we have a memo with chr(10), which was a problem for my app, maybe you don't care..
lcMemoRegel = lcRegel
FOR liCnt = 1 TO liRegels
liPos = AT(CHR(10),lcMemoRegel)
lcRegel = LEFT(lcMemoRegel,liPos-1)
*-- write part before LineFeed:
FPUTS(lnUitHandle,lcRegel)
*-- low-level LF:
FPUTS(lnUitHandle,'')
*-- cut away what we wrote...
IF LEN(lcMemoRegel) > liPos
lcMemoRegel = SUBSTR(lcMemoRegel,liPos+1)
ENDIF
ENDFOR
*-- and the last piece..
IF !EMPTY(lcMemoRegel)
lcRegel = STRTRAN(lcMemoRegel,CHR(10),'')
FPUTS(lnUitHandle,lcRegel)
ENDIF
ELSE
*-- no CHR(10) ...
FPUTS(lnUitHandle,lcRegel)
ENDIF
ENDPROC
I can't promise it works, because I took out a lot of confusing code. This is the essential part. Maybe it helps you, or somebody...
greetings, great forum, Ropje
[sig][/sig]