LIBRAIRIE DE FONCTIONS DE GESTION DE SOUS-CHAINES.

Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 - 29 janv. 2009 à 19:17
ibra25 Messages postés 1 Date d'inscription samedi 4 décembre 2010 Statut Membre Dernière intervention 22 décembre 2010 - 22 déc. 2010 à 14:27
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/49109-librairie-de-fonctions-de-gestion-de-sous-chaines

ibra25 Messages postés 1 Date d'inscription samedi 4 décembre 2010 Statut Membre Dernière intervention 22 décembre 2010
22 déc. 2010 à 14:27
salut esque je veu te voir des mcd et le mod de cette programme stp je besion dille mon msn et alfie@live.fr
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
10 févr. 2009 à 10:15
Salut Simon,

Oui, pourquoi pas ^^

De toute façon, chacun est libre de transformer cet exemple car d toute façon il n' y a pas de standard sur l' utilisation des sous-chaines :)

A+
sp40 Messages postés 1276 Date d'inscription mardi 28 octobre 2003 Statut Contributeur Dernière intervention 3 juillet 2015 15
10 févr. 2009 à 08:53
Salut Mauricio et bravo pour cette source. Une petite remarque, si je peux me permettre : Placer les séparateur en dernier paramètre des fonctions et procédures pour leur donner une valeur par défaut. On s'économise ainsi la saisie du ";" à chaque appel, tout en gardant la possibilité d'utiliser un autre séparateur ponctuellement...
Sinon c'est très pratique, merci encore.
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
31 janv. 2009 à 15:32
Salut Cirec,

tes commentraires sont toujours pertinents.
Vu que c' est objectif je vois pas le problème.

StringList & delimitedChar permettent en effet d' utiliser les sous-chaines j' y avais pas pensé.
De toute façon, on passe souvent du temps à réinventer la roue ^^

Cependant:
"la différence est là:
Exemple: Str = '' pas d'élément
et le reste est strictement pareil:
Exemple: Str = 'xxx' 1 élément rempli ...
Exemple: Str = ';' 2 éléments (vides) ..."

Bem justement, comment différencier un élément vide de 0 élément?
"Str = '' pas d'élément".
Comment distinguer d' un élément vide (un élément de valeur = "") ?

J' ai fait le test suivant :
procedure TFrmPrin.SpeedButton1Click(Sender: TObject);
begin
ListBox1.Items.Delimiter := ';';
ListBox1.Items.DelimitedText := '';
SpeedButton1.Caption := IntToStr(ListBox1.Items.Count);
end;
SpeedButton1.Caption est 0

Si on fait :
ListBox1.Items.Delimiter := ';';
ListBox1.Items.DelimitedText := 'xx';
SpeedButton1.Caption est 1

Si on fait :
ListBox1.Items.Delimiter := ';';
ListBox1.Items.DelimitedText := ';';
SpeedButton1.Caption est de 2

Impossible d' avoir une chaine vide de 1 élément!
C' est vrai que mes fonctions se basent sur le fait qu' il y ait au moins un élément lorsque la chaine est vide!

Il y a autre chose qui me chagrine qui possède un bon et un mauvais côté:
Si je fais cela:
ListBox1.Items.Delimiter := ';';
ListBox1.Items.DelimitedText := 'aaa';
ListBox1.Items.Add('xxx;yyy');
ListBox1.Items.Add('zzz');
Le résultat est que j' ai 3 éléments:
- aaa
- xxx;yyy
- zzz

xxx;yyy est considéré un élément à part entière!

A+
Utilisateur anonyme
30 janv. 2009 à 19:38
ah je me disais bien ... d'où mon étonnement ^^

Mais je le savais déjà ;)
quand le père noël m'a emmener le miens il m'a dit qu'il devait encore passer chez toi pour t'en déposer un :D

sinon coté code ... je vais encore passer pour le relou de service mais on peut faire la même chose avec les StringList & delimitedChar + DelimitedText !!!!

pareil on peut choisir le délimiteur que l'on veut.
pareil il ne différencie pas une chaine vide d'un enregistrement vide.

la différence est là:
Exemple: Str = '' pas d'élément
et le reste est strictement pareil:
Exemple: Str = 'xxx' 1 élément rempli ...
Exemple: Str = ';' 2 éléments (vides) ...
Exemple: Str = 'xxx;' 2 éléments (dont 1 vide) ...
Exemple: Str = ';xxx' 2 éléments (dont 1 vide) ...
Exemple: Str = 'xxx;yyy' 2 éléments ...

et l'index commence à 0 "Zéro" et pas à 1

avec tout les avantages de la classe TStrings en plus ;)
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
30 janv. 2009 à 12:26
J' ai aussi des fonctions pour les TStrings et pour les TreeNode, faut voir si ça interesse ...

A+
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
30 janv. 2009 à 12:25
@Cari:
Tu es donc d' accord avec moi pour dire que:

Str '' > 1 élément vide

au lieu de :

Str '' > 0 élément
Str ';' > 1 élément vide

Je trouve que c' est bien plus simple à gérer mais c' est à chacun de voir ...

@Cantador: une démo c' est bien, mais comme Cari le montre, tout dépend de l' imagination de chacun! Si je fais une démo utilisant le FileStream, ça va limiter à cette application alors que les sous-chaines c' est comme les chaines: on les utilise pour tout! C' est comme vouloir faire une démo sur les Integer, ça pas trop de sens ...

A+
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
30 janv. 2009 à 12:19
Oui, ce serait pour connaître la structure du FileStream. Il commencerait toujours par un Integer indiquant la longueur de ta chaîne, puis la chaîne elle-même (signature incluse) indiquant la structure du FileStream... à voir en pratique.

Mais moi, j'aime bien ton idée :
Str '' > 1 élément vide
Str 'xxx'> 1 élément rempli, etc...
Ca n'a l'air de rien, comme ça, une fois expliqué. Mais c'est ce qui fait toute la différence, je trouve.
Bravo!
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
30 janv. 2009 à 11:43
Bonjour,

Un ressemblance certaine avec une bonne vieille gestion de tables..
cela mériterait une démo afin d'apprécier l'utilité et les performances.
En tout cas, bravo pour cette approche Mauricio.
Très intéressant..
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
30 janv. 2009 à 11:15
J' ai déjà étudié les particularités de D2009 car j' ai Delphi 2009 chez moi.
J' attends de le recevoir au boulot pour passer le tout vers Delphi 2009.
J' ai déjà passé mon pack de compos pour toutes les versions de Delphi, D2009 inclu!

Désolé pour le lien ^^

A+
Utilisateur anonyme
30 janv. 2009 à 11:09
"Je vais faire le saut vers Delphi 2009 dans peu de temps!!!"

fait le de suite sinon tu risques de devoir reprendre une partie de tes modifications rien que pour Delphi2009 !!!

il vaut mieux le faire de suite afin de comprendre les nouvelles subtilités de Delphi2009 ... surtout dans le travail avec chaine et sous-chaine.

ps: t'avais même pas vu que je t'ai changé le lien qui pointe vers ta source d'exemple ^^
testez vos liens avant de les mettre en ligne ;)

ps2: comment ça; t'as pas encore testé Delphi2009 !!!! lol
cs_L_art_ment Messages postés 19 Date d'inscription vendredi 21 septembre 2007 Statut Membre Dernière intervention 30 janvier 2009
30 janv. 2009 à 08:20
Merci Mauricio, moi qui travail souvent avec les sous-chaines, ca m'évitera des manipulations fastidieuses des sous-chaines...

a+ !
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
30 janv. 2009 à 00:03
Après avoir parcouru l'historique...

Y'a pas à dire. T'as de la suite dans les idées, depuis 2004!
J'espère que t'es pas devenu accro au Chouchen de Kenavo. lolll
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
29 janv. 2009 à 19:18
... Et un 'tit zip? Histoire de pouvoir garder ça sous la main... ;)
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
29 janv. 2009 à 19:17
Content de te revoir Mauricio. :)

Tout ça m'a l'air bien intéressant !
Dis-moi si je me trompe, mais je verrais bien une telle structure en tête d'un TFileStream pour en facilité l'utilisation.
Qu'en penses-tu?