Insérer retour chariot

cs_Roje Messages postés 7 Date d'inscription mercredi 21 août 2002 Statut Membre Dernière intervention 22 juin 2004 - 24 sept. 2002 à 13:52
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 - 24 sept. 2002 à 23:21
Voila, j'ai un fichier texte en entrée écrit sur une seule ligne. J'aimerais insérer un retour chariot tous les 10 caractères.

Je suis sûr que c'est tout simple mais je suis un vrai débutant de base et je ne trouve pas de solution. J'ai besoin d'un peu d'aide.

Merci.

3 réponses

cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
24 sept. 2002 à 21:32
En pratiquant ainsi, Bruto ajoute toujours les CR (Carriage Return) à la fin de text. Or, ce n'est pas l'effet recherché.

Proposition :
procedure DecoupeMemo(var AMemo : TMemo; LenStr : integer = 10);
var
sl: TStrings;
Text : String;
begin
Text := Copy(AMemo.Text, 1, Length(AMemo.text));
Sl := TStringList.Create;
try
While Length(Text) > 0 do
begin
sl.Add(Copy(Text, 1, LenStr));
Delete(Text, 1, LenStr);
end;
AMemo.Lines.Assign(sl);
finally
Sl.Free;
end;
end;

Exemple d'appel :
DecoupeMemo(Memo_File);

May Delphi be with you.
Delphi advanced
0
Bruto Messages postés 214 Date d'inscription jeudi 21 mars 2002 Statut Membre Dernière intervention 14 mai 2004
24 sept. 2002 à 23:09
Bin je suis pas tout à fait d'accord :dissapprove) sur ta remarque :

Tant que index est inférieur à la longueur du text, on copie lettre par lettre le contenu du memo dans un autre memo. Donc je reprends chaque fois le contenu du nouveau memo + le nouveau caractère.
Arrivé au 10ieme caract, j'insère le 'Enter' puis je recommence jusqu'au 20ième, ...

Sans doute n'as tu pas remarqué que je travaillais avec deux memo's : Memo qui contient le texte de base, & memo_File qui est la nouvelle chaîne avec les 13.

Maintenant t'as méthode est meilleure :blush) car facile et sans risque. Je n'avais pas pensé au TStringList. Ne pas oublié de désalloué la mémoire avec le Free comme spécifié.

Je pense que c'est maintenant bon pour cette question. Bonne prog
;) Bruto --- Le p'tit belge --- pour vous servir
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
24 sept. 2002 à 23:21
Remarque 1:
For Index := 0 to Len(Memo.Text) do
begin
if (Index mod 10) = 0 thensi Index 0 alors Index mod 10 0, donc tu ajoutes un CR dés le départ.

Remarque 2 : effectivement, je n'avais pas remarqué que tu travaillais avec un nouveau memo.
Seulement, tu ne le crées pas, tu ne lui affectes pas de propriétaire et tu ne le libères pas une fois terminé.

Remarque 3 :
Tu travailles caractère par caractère alors que l'on peut le faire par bloc de caractères. Ce qui, tu en conviendras, est à priori plus rapide.

May Delphi be with you.
Delphi advanced
0
Rejoignez-nous