Accueil > Forum > > > > Modifier valeur TStringList
Modifier valeur TStringList
jeudi 29 mars 2007 à 17:24:49 |
Modifier valeur TStringList

Sat83
|
Bonjour! Je voudrais modifié une valeur dans une TStringList. J'ai donc créer la méthode: var myList : TstringList; [...]
procedure TMyObjet.changeValue(const index:word; const str : String); begin if (index<=myList.Count)) then begin myList.Delete(index); myList.Insert(index,str); end; end;A prioris ça semble marché correctement (j'ajoute aussi que la TStringList n'est pas triée), mais je souhaiterais savoir si il y a une autre solution, ou si celle-çi vous semble correcte... Merci de votre avis..
|
|
jeudi 29 mars 2007 à 17:54:19 |
Re : Modifier valeur TStringList

Loulibier
|
Réponse acceptée !
Bonjour Sat83, voici une autre solution qui semble être plus simple : procedure TMyObjet.changeValue(const index:word; const str : String); begin if (index < myList.Count) then myList[index] := str; end;
Cette méthode t'évite de supprimer ton enregistrement et d'en rajouter un nouveau. Bonne Prog,  Olivier PS : Lorsqu'une réponse vous convient, n'oubliez pas de la valider.
|
|
jeudi 29 mars 2007 à 18:53:57 |
Re : Modifier valeur TStringList
|
vendredi 30 mars 2007 à 07:46:49 |
Re : Modifier valeur TStringList

f0xi
|
tout simplement : procedure TMyObjet.changeValue(const index : integer; const str : String); begin MyList[index] := str end;
ou
procedure TMyObjet.changeValue(const index : integer; const str : String); begin if MyList[index] <> str then MyList[index] := str end;
ou
procedure TMyObjet.changeValue(const index : integer; const str : String); begin
if index < MyList.Count then { if (index < MyList.Count) or (MyList.Count = 0) then }
MyList[index] := str
else
MyList.Add(Str); end;
ensuite l'objet MyList doit appartenir a l'objet MyObject ... un objet ne doit en aucun cas (du moins la plupart du temps et dans les cas generaux) faire appel a un objet externe si ce dernier n'est pas utilisé ailleur. TMyObjet = class({ancetre}) private fMyList : TStrings; fOnChange : TNotifyEvent; procedure SetMyList(val : TStrings); protected procedure Change; virtual; public constructor Create; {override;} destructor Destroy; {override;} property fMyList : TStrings read fMyList write SetMyList; property OnChange : TnotifyEvent read fOnChange write fOnChange; end;
constructor TMyObject.Create; begin inherited Create; fMyList := TStringList.Create; end;
destructor TMyObject.Destroy; begin fMyList.Free; inherited Destroy; end;
procedure TMyObject.Change; begin if Assigned(fOnChange) then fOnChange(Self); end;
procedure TMyObject.SetMyList(val : TStrings); begin fMyList.Assign(val); Change; end;
aussi, c'est une erreur de mettre des parentheses dans un if quand il n'y a qu'une seule condition : correct :if truc <= machin then if truc in machin then if truc then if not truc then if not (truc in machin) then if not (truc = machin) then if (X mod 2) = 0 then if not ((X mod 2) = 0) then if (truc <= machin) or (truc => machin) then if (truc = machin) and (machin <> bidule) then if CheckBox1.Checked and CheckBox2.Checked and CheckBox3.Checked then incorrect :if (truc <= machin) then if (truc in machin) then if (not truc) then if ((truc = machin) and (machin <> bidule)) thenbecause Delphi is not C++ et il en vas de meme pour while ou repeat ... Croc (click me)
|
|
vendredi 30 mars 2007 à 09:16:03 |
Re : Modifier valeur TStringList

WhiteHippo
|
Hello foxi,
"aussi, c'est une erreur de mettre des parentheses dans un if quand il n'y a qu'une seule condition" [...] "because Delphi is not C++"???
Je vois pas en quoi c'est une erreur et surtout en quoi sa se rapproche du C++ ?
Tout d'abord, le compilateur l'accepte de par sa grammaire formelle :
InstructionIf -> IF Expression THEN Instruction [ELSE Instruction] Expression -> ExpressionSimple [OpRel ExpressionSimple]... ExpressionSimple -> ['+' | '-'] Terme [OpAdd Terme]... Terme -> Facteur [OpMul Facteur]... Facteur -> Désignateur ['(' ListeExpr ')'] -> '@' Désignateur -> Nombre -> Chaîne -> NIL -> '(' Expression ')' -> NOT Facteur -> ConstructeurEnsemble -> IdentType '(' Expression ')'
Ensuite, d'un point de vue logique si l'on met des parenthèses avec des conditions multiples, il est normal d'en mettre également dans une condition simple.
En résumé : Ce n'est pas une erreur !
P.S. Pour le repeat et le while, c'est idem.
Cordialement.
"L'imagination est plus importante que le savoir." Albert Einstein
|
|
vendredi 30 mars 2007 à 15:53:31 |
Re : Modifier valeur TStringList

florenth
|
Ce n'est pas une erreur, c'est juste inutile.
Tout comme écrire :
var
Bool: Boolean;
begin
if (Bool = True) then
begin
DoSomething();
end;
end;
car :
- "if Bool = True" => "if Bool".
- Pas besoin de parenthèses autour.
- begin..end inutile si une seule ligne.
- parenthèses à la procédure inutiles si pas de paramètres.
En gros, en allégé, ça donne ça:
var
Bool: Boolean;
begin
if Bool then
DoSomething;
end;
C'est quand même plus clair qu'avant.
Et encore, j'ai pas fait le coup de l'indentation foireuse où on saute 2 lignes entre le then et le begin ...
Ce ne sont que des détails, mais je pense que bien coder, c'est surtout et avant tout bien écrire.
Un code fonctionnel ne suffit pas: il faut qu'il soit maintenable.
Donc il fait qu'il soit lisible.
Donc il faut que le gars qui code écrive bien.
Donc il faut un minimum de respect quand aux nomenclatures.
Voila.
|
|
vendredi 30 mars 2007 à 16:32:25 |
Re : Modifier valeur TStringList

WhiteHippo
|
"Un code fonctionnel ne suffit pas: il faut qu'il soit maintenable."
Entièrement d'accord , cependant lequel de ces deux codes : // Code 1 var Bool : Boolean ; begin if Bool then DoSomething ; end; // Code 2 var Bool : Boolean ; begin if ( Bool ) then begin DoSomething ; end ; end ;
est le plus facile à maintenir si tu as : - une condition à ajouter à ton if : Exemple ( a and (b+c)) - plusieurs actions à effectuer dans ton if : Exemple, DoSomething1 et DoSomething2 Sans hésitation, c'est le code 2. "- "if Bool = True" => "if Bool". - Pas besoin de parenthèses autour. - begin..end inutile si une seule ligne. - parenthèses à la procédure inutiles si pas de paramètres."
Dans tous ces cas, c'est avoir une vision à court terme que de ne pas mettre des parenthèses et/ou des begin..end, et donc c'est de ne pas envisager d'éventuelles futures modifications. "Donc il fait qu'il soit lisible."Les parenthèses, les begin..end ne gènent en rien la lisibilité, bien au contraire. "Donc il faut un minimum de respect quand aux nomenclatures."
Je suppose que c'est aux normes que tu faisais allusions.  Cordialement. "L'imagination est plus importante que le savoir." Albert Einstein
|
|
vendredi 30 mars 2007 à 16:51:46 |
Re : Modifier valeur TStringList

florenth
|
On ne doit pas avoir la même version du mot "lisible" (le code 2 est bien trop lourd à mon goût, pour le peu qu'il fait ...) mais bon, chacun fait comme il le sent après tout...
Pour "norme" vs. "nomenclature" tu a tout à fait raison. Remarque, ça me permet de dire qu'utiliser une nomenclature stricte pour les noms de variables, etc améliore grandement la lisibilité.
|
|
mercredi 26 septembre 2007 à 16:05:44 |
Re : Modifier valeur TStringList

mounjetado
|
pour ma part, je pense que vous vous prenez la tête sur des histoires de sémiologie, pourdéfendre vos points de vue respectifs (ce que je comprends tout à fait) mais... en définitive, ça dépend du degré de complexité du code à produire, non? enfin, je peux me tromper et je ne veux pas donner des leçons à des personnes certainement beaucoup plus efficaces que moi en matière de programmation... sur ce, je retourne dans les entrailles de mon système... si on me demande, dites que nous ne m'avez pas vu, ok? lol mes salutations admiratives à vous tous! si Delphi m'était conté...
|
|
Cette discussion est classée dans : valeur, modifier, index, tstringlist, mylist
Répondre à ce message
Sujets en rapport avec ce message
TDBLookUpCombobox [ par sosososo ]
Bonjour,J'utilise TDBLookUpComboBox qui charge des valeurs à partir de la base. ex: aaaa, bbbb, cccc, dddd.Enfait, je veux que mon TDBLookUpCombobox a
Ecrire/modifier la valeur '(défaut)' d'une clé de registre [ par mikesvl ]
Pour ce qui est de la lecture et de l'écriture de clés et/ou de valeurs dans le registre : pas de problème. Mais en ce qui concerne la valeur '(défaut
Modifier la valeur des enregistrements d'un champ dans une table [ par DGPat ]
Bonjour, J'ai une table paradox qui reprend les informations salariés,et par exemple lors d'une augmentation de salaire (il est interdit de rire,les
Configuration BDE [ par simonpelloquin ]
Bonjour, Je voudrais savoir s'il existe un moyen de modifier une propriété du BDE par delphi... Pour être plus clair : Session.GetConfigParams('DRIVE
Modifier la valeur d'un pixel dans une image au formta FITS [ par faymarcel ]
Bonjour à tous,But : application en Imagerie astronomiqueComment s'y prendre pour changer la (les) valeur(s) numérique de pixel(s) à l'adresse x,y, da
Comment puis-je rechercher une valeur spécifique dans un fiche bin [ par aliilyas ]
SALUT Comment puis-je rechercher une valeur spécifique dans un fiche bin + Ne comprend pas cette code http://www.delphifr.com/codes/MAPPING-FICHIER-TS
comment chercher une valeur hex dans un fichier binaire "file of byte" [ par fartotodz2004 ]
salut pour tous je cherche une fonction qui cherche une valeur hexa (par ex:longword $FFE6ABC9) dans un fichier binaire, jai trouver des fontions pour
recuperation d'une valeur depuis la base afin de comparer avec ce qui se trouve ds le tedit [ par evarice ]
Merci pour le code sur le Tlistbox! Je commence à prendre goût et j'aimrais si vous le voulez bien continuer. Voici le nouveau PB: j'ai dans ma base
delphi combox [ par GMAO2 ]
Bonjour a tous et a toutes, j'ai un combox et un dbedit qui devra prendre sa valeur de la table selon la valeur a l'tem choisis alors je doit positio
Comment modifier un DBF avec ADO ? [ par cbg1964 ]
Bonjour à tous, Je galère depuis plusieurs heures pour trouver comment J'ai 2 tables DBF (dBase IV) de même structure Table1.dbf et Table2.dbf. Je ve
Livres en rapport
|
Derniers Blogs
[SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko [FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBEWORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui m'ont suivi. Je profite de ce poste, pour faire le re...
Cliquez pour lire la suite de l'article par JeremyJeanson
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|