Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Indent a long string into a txt file
Message
De
02/05/2022 13:10:55
 
 
Information générale
Forum:
Visual FoxPro
Catégorie:
Codage, syntaxe et commandes
Divers
Thread ID:
01684311
Message ID:
01684325
Vues:
31
>>>>>>>>Hi,
>>>>>>>>
>>>>>>>>The code writes a long string (it could be up to 200 or more characters) into a .txt file. The string is written to the .txt file using strtofile() function. I would like the long string to be indented by, say 10 characters. I can indent the first line, by adding a space(10). But the rest of the string go to the 1st column,
>>>>>>>>Is there a way to do it, other than parsing the string into 60-70 characters and adding a space(10) before each line?
>>>>>>>>
>>>>>>>>TIA
>>>>>>>
>>>>>>>Sorry for a newbie question. I think VFP has a function that will populate an array from a long string, setting the max number of characters in each element. If my memory services me right, what is this function?
>>>>>>>Basically I want the VFP to parse the string into smaller strings, each one no more than 60 char in length.
>>>>>>>TIA
>>>>>>
>>>>>>AFAIK there's no such function.
>>>>>
>>>>>I suppose since I didn't remember this function, my memory works :)
>>>>
>>>>Right. 😂
>>>
>>>I think I found it: memlines() and mline()
>>
>>Not quite what you asked for, but may be useful.
>>
>>Anyway, I am convinced that my first advice is the easiest to implement. If you don't understand my idea and/or want me to assist you, feel free to send me an email with realistic data. Should be a fun challenge.
>
>Thank you for your offer. If my approach does not work, I may take you up on your offer.

This code does the job. Note that most of the code is probably redundant. It checks the parameters, takes care of setting the necessary parameters and resetting them.

The last line was added for testing.
*dmitry.prg
Lparameters tcText, tcFileName, tnMargin, tnMaxLength
If Pcount()<4
  m.tnMaxLength = 60
Endif
If Pcount()<3
  m.tnMargin = 10
EndIf
If Empty(m.tcFileName) or Vartype(m.tcFileName)#'C'
  messagebox('No filename given')
  Return .F.
Endif
If Empty(m.tcText) or Vartype(m.tcText)#'C'
  messagebox('No text given')
  Return .F.
EndIf
lnMargin = Set("Margin")
Set Margin To m.tnMargin 
tnMemo=Set("Memowidth")
Set Memowidth To m.tnMaxLength - m.tnMargin 
lcPrinter = Set("Printer",1)
llPrinter = Set("Printer")
llEcho = Set("Echo")
llConsole = Set("Console")
Set printer to file (m.tcFileName)
Set printer on
Set echo off
Set Console off
??m.tcText 
Set Printer &llPrinter
Set Echo &llEcho
Set Console &llConsole 
Set Margin To m.lnMargin
Set Memowidth To m.tnMemo 
Set Printer to (m.lcPrinter)
Modify File (m.tcFileName)
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform