Há diversas formas, depende de como vai gerar o txt.
Código: Selecionar todos
SET ALTERNATE TO TEXTO.TXT
SET ALTERNATE ON
SET CONSOLE OFF
?? "sxxxx" + "XXXXX" + Chr(13) + Chr(10)
SET CONSOLE OFF
SET ALTERNATE OFF
SET ALTERNATE TO
que pode ser melhorado usando função ou #define
Código: Selecionar todos
#define CRLF Chr(13) + Chr(10)
?? "Texto" + CRLF
?? "outro texto" + CRLF
?? "Texto" + CrLf()
?? "outro texto" + CrLf()
FUNCTION CrLf()
RETURN Chr(13) + Chr(10)
Tem também fOpen(), fWrite(), que grava em disco.
Tem esse que foi mencionado.
Dependendo da opção, pode ser necessário no final fOpen(), fSeek(), fWrite() pra eliminar o Chr(26) que indica fim de arquivo, pra ficar compatível com Windows.
Se o arquivo ficar limitado a 64kb, que é o limite do Clipper pra string, pode criar em TXT e gravar no final.
Código: Selecionar todos
cTxt := ""
cTxt += "linha1" + CrLf()
cTxt += "linha2" + CrLf()
MemoWrit( "texto.txt", cTxt )
E por aí vai.
No caso de #define, o CRLF é substituído por Chr(13) + Chr(10), o que deixa o EXE grande.
No caso de função CrLf(), pode reduzir o tamanho do EXE, por eliminar todos os Chr(13)+Chr(10) que existiriam nos fontes.
Se preferir, pode até usar como nome hb_Eol() que é o mesmo usado no Harbour, assim o fonte fica pronto pra Harbour.
Lembrando que isto também é possível
?? indica que a saída será em sequência ao texto atual
? indica que vai pular uma linha ANTES do texto atual
Por isso, pra não ter uma linha em branco no início, o primeiro tem que ser ??
E um ? no final pra encerrar a última linha