Chaine longueur fixe [Résolu]

sp40 1293 Messages postés mardi 28 octobre 2003Date d'inscriptionContributeurStatut 3 juillet 2015 Dernière intervention - 30 nov. 2012 à 10:10 - Dernière réponse : sp40 1293 Messages postés mardi 28 octobre 2003Date d'inscriptionContributeurStatut 3 juillet 2015 Dernière intervention
- 26 déc. 2012 à 09:08
Bonjour,

A tout hasard, existe-t'il une fonction toute faite qui formate un texte sur x caractères ?
Exemple : si je veux afficher sur 3 caractères dans une liste box, les trois nombres suivants 1, 25 et 330 en leur ajoutant des espaces devant ?
(j'ai fait une fonction maison, mais ne perdons pas une occasion de s'instruire...)

Simon
Afficher la suite 

Votre réponse

22 réponses

Guillemouze 1015 Messages postés samedi 25 octobre 2003Date d'inscription 29 août 2013 Dernière intervention - 30 nov. 2012 à 11:13
+3
Utile
la fonction format doit le permettre. Il me semble que Format('%.3d', [25]) doit t'afficher '025'
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Guillemouze
Caribensila 2674 Messages postés jeudi 15 janvier 2004Date d'inscription 11 mai 2018 Dernière intervention - 30 nov. 2012 à 12:20
+3
Utile
Si, si. Format() te permet de faire ça pour des chaînes.

Et, pour info, il y a aussi FormatFloat() pour les nombres (accepte aussi les entiers).
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de Caribensila
korgis 415 Messages postés samedi 17 mai 2003Date d'inscription 11 mai 2018 Dernière intervention - 30 nov. 2012 à 16:09
+3
Utile
Salut,

oui, avec Format, les spécificateurs width et prec sont utilisables, même si le résultat est surprenant avec les chaînes de caractères.

Voici un petit code de démonstration (j'avais un peu de temps à tuer).
Il suffit de placer un Memo et 2 Buttons sur une fiche et de remplir les évènements OnCreate et OnClick sans oublier la procedure GenerateDummyStrings.
Pas besoin de se fatiguer pour la disposition, tout se met en place dans OnCreate (j'avais du temps à tuer, je vous dis...).

{ génération d'une liste de chaînes dont la longueur varie aléatoirement de 1 à Length }
procedure GenerateDummyStrings(const Count: Integer; Strings: TStrings);
const
  Length = 9;
var
  i, j: Integer;
  L: Integer;
  Tmp: string;
begin
  Strings.Clear;
  for i := 1 to Count do
  begin
    L := Random(Length) + 1;
    Tmp := '';
    for j := 1 to L do
    begin
      Tmp := Tmp + (Char(Random(26) + 97));
    end;
    Strings.Add(Tmp);
  end;
end;

{ les chaînes seront alignées à droite, comme des chiffres }
procedure TForm1.Button1Click(Sender: TObject);
var
  List: TStringList;
  i: Integer;
begin
  List := TStringList.Create;
  try
    { génération d'une liste de 100 chaînes }
    GenerateDummyStrings(100, List);
    for i := 0 to List.Count - 1 do
    begin
      List[i] := Format('%20.13s', [List[i]]);
    end;
    Memo1.Lines.Assign(List);
  finally
    List.Free;
  end;
end;

{ les chaînes seront alignées à gauche, c'est plus habituel }
procedure TForm1.Button2Click(Sender: TObject);
var
  List: TStringList;
  i: Integer;
  Inter, W: Integer;
const
  Interval = 20;
begin
  List := TStringList.Create;
  try
    { génération d'une liste de 100 chaînes }
    GenerateDummyStrings(100, List);
    for i := 0 to List.Count - 1 do
    begin
      W := Length(List[i]);
      Inter := Interval + W;
      List[i] := Format('%*.*s', [Inter, W, List[i]]);
    end;
    Memo1.Lines.Assign(List);
  finally
    List.Free;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Width := 533;
  Height := 523;
  with Memo1 do
  begin
    Left := 0;
    Top := 0;
    Width := 385;
    Height := 481;
    Align := alLeft;
    ScrollBars := ssVertical;
    Font.Name := 'Courier New';
    Font.Size := 10;
    Clear;
  end;
  with Button1 do
  begin
    Left := 420;
    Top := 184;
  end;
  with Button2 do
  begin
    Left := 420;
    Top := 228;
  end;
  Randomize;
end;


Avec Delphi, tout devient possible

JP
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de korgis
sp40 1293 Messages postés mardi 28 octobre 2003Date d'inscriptionContributeurStatut 3 juillet 2015 Dernière intervention - 30 nov. 2012 à 11:21
0
Utile
ok, merci. J'ai bien jeté un oeil au tuto de f0xi sur l'instruction format, mais je ne pensais pas que le ".3" pouvait s'appliquer à des chaines. Je teste ça.


Simon
Commenter la réponse de sp40
sp40 1293 Messages postés mardi 28 octobre 2003Date d'inscriptionContributeurStatut 3 juillet 2015 Dernière intervention - 30 nov. 2012 à 12:34
0
Utile
Ok, merci aussi Cari !

Simon
Commenter la réponse de sp40
sp40 1293 Messages postés mardi 28 octobre 2003Date d'inscriptionContributeurStatut 3 juillet 2015 Dernière intervention - 30 nov. 2012 à 16:22
0
Utile
Pas mal !
Merci pour l'idée

Simon
Commenter la réponse de sp40
Caribensila 2674 Messages postés jeudi 15 janvier 2004Date d'inscription 11 mai 2018 Dernière intervention - 30 nov. 2012 à 16:51
0
Utile
« Pas besoin de se fatiguer pour la disposition... »


Ouais...
Mais 'faut quand même Copier/coller.
Commenter la réponse de Caribensila
korgis 415 Messages postés samedi 17 mai 2003Date d'inscription 11 mai 2018 Dernière intervention - 30 nov. 2012 à 21:02
0
Utile
Ouais...
Mais 'faut quand même Copier/coller


No problem...
Commenter la réponse de korgis
sp40 1293 Messages postés mardi 28 octobre 2003Date d'inscriptionContributeurStatut 3 juillet 2015 Dernière intervention - 30 nov. 2012 à 23:19
0
Utile
Excellent !!!
Comment tu fais ça ?


Simon
Commenter la réponse de sp40
korgis 415 Messages postés samedi 17 mai 2003Date d'inscription 11 mai 2018 Dernière intervention - 1 déc. 2012 à 14:32
0
Utile
Excellent !!!
Comment tu fais ça ?


Heu... comment je fais quoi ?
Incorporer une image dans le post, tu veux dire ?
Ça le fait, hein ?
Une solution simple est d'uploader l'image sur un serveur dédié, ImageShack par exemple.
C'est gratuit.
Puis tu utilises les outils de mise en page fournis ici dans la barre au-dessus du post pour entrer l'adresse de l'image (adresse fournie par l'hébergeur).
That's all...
Commenter la réponse de korgis
sp40 1293 Messages postés mardi 28 octobre 2003Date d'inscriptionContributeurStatut 3 juillet 2015 Dernière intervention - 1 déc. 2012 à 16:01
0
Utile
Ok, ça peut être utile pour des copies d'écran aussi...
Merci pour le truc

Simon
Commenter la réponse de sp40
Caribensila 2674 Messages postés jeudi 15 janvier 2004Date d'inscription 11 mai 2018 Dernière intervention - 1 déc. 2012 à 16:06
0
Utile
Nous, c'est surtout pour les conneries qu'on trouve ça utile...
Commenter la réponse de Caribensila
sp40 1293 Messages postés mardi 28 octobre 2003Date d'inscriptionContributeurStatut 3 juillet 2015 Dernière intervention - 2 déc. 2012 à 14:07
0
Utile
J'avais bien compris Cari !
;)

Simon
Commenter la réponse de sp40
korgis 415 Messages postés samedi 17 mai 2003Date d'inscription 11 mai 2018 Dernière intervention - 2 déc. 2012 à 15:04
0
Utile
Moi j'ai rien compris.

Bostik c'est pourtant une marque sérieuse...
Commenter la réponse de korgis
sp40 1293 Messages postés mardi 28 octobre 2003Date d'inscriptionContributeurStatut 3 juillet 2015 Dernière intervention - 2 déc. 2012 à 20:12
0
Utile
Simon
Commenter la réponse de sp40
Caribensila 2674 Messages postés jeudi 15 janvier 2004Date d'inscription 11 mai 2018 Dernière intervention - 3 déc. 2012 à 14:15
0
Utile


«Une solution simple est d'uploader l'image sur un serveur dédié, ImageShack par exemple»


Pour une photo trouvée sur le Net, on peut aussi le faire directement, sans UpLoader :

1) Clic droit sur la photo.
2) Choisir "Propriétés'.
3) Copier l'URL
4) Coller l'URL de l'image dans l'outil de mise en page du post.
5) Héhéhé !
Commenter la réponse de Caribensila
korgis 415 Messages postés samedi 17 mai 2003Date d'inscription 11 mai 2018 Dernière intervention - 3 déc. 2012 à 14:29
0
Utile
Pour une photo trouvée sur le Net, on peut aussi le faire directement, sans UpLoader


Oui, ça s'appelle le hotlink
C'est plutôt à éviter, quoi.

Moi, ce que j'en dis...
Commenter la réponse de korgis
Caribensila 2674 Messages postés jeudi 15 janvier 2004Date d'inscription 11 mai 2018 Dernière intervention - 3 déc. 2012 à 14:41
0
Utile
J'ai appris un truc, là.

Mais ce que je ne comprends pas c'est qu'il n'y aurait plus de problème en passant par un site dédié comme tu le décris, korgis...
Commenter la réponse de Caribensila
korgis 415 Messages postés samedi 17 mai 2003Date d'inscription 11 mai 2018 Dernière intervention - 3 déc. 2012 à 21:18
0
Utile


Mais ce que je ne comprends pas c'est qu'il n'y aurait plus de problème en passant par un site dédié comme tu le décris, korgis...


Ben justement, c'est que le site est dédié.
C'est étudié pour, quoi...
Je crois savoir qu'ImageShack est le premier à avoir proposé ce service, depuis plusieurs années.
Sans entrer dans le détail du modèle économique, ça semble fonctionner ainsi :
- le service de base est gratuit mais limité,
- si on veut des prestations supplémentaires, c'est payant, diverses formule étant proposées (au mois, à l'année, sauvegardes et autres options "pro" à voir sur le site).
Après, il existe des prestations personnalisées pour les entreprises, certainement aussi des revenus publicitaires etc...
Je n'en sais guère plus.
Commenter la réponse de korgis
korgis 415 Messages postés samedi 17 mai 2003Date d'inscription 11 mai 2018 Dernière intervention - 4 déc. 2012 à 08:19
0
Utile
Commenter la réponse de korgis

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Chaine longueur fixe - page 2