Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

194 commentaire(s) de Nono40 sur des sources sur tout CodeS-SourceS

Le : 11/05/2008 02:47:25
Source : KEY-LOGGER SIMPLE À PARTIR DES HOOKS DE WINDOWS
Bonsoir,

C'est normal car dans le Hook on récupère le code virtuel de touche et non pas le caractère. Il faut tenir compte de l'état de Shift, Ctrl et Alt pour en déduire la touche exacte (Ces états sont aussi donnés dans le hook)


Le : 12/09/2006 03:31:43
Source : SUDOKU
=> Tigris1.
Ton approche est bonne mais la solution imparfaite.
Le (1) est inutile voire dangereux, car le TEdit que tu crées ne sera pas celui que tu vas détruire. Vu que ta variable Edit va contenir le dernier TEdit sélectionné par ta ligne Edit := TEdit(FindComponent('Edit' + IntToStr(nCount)));
Edit n'a nullement besoin d'être instancié avant l'appel de FindComponent. Il suffit juste de vérifier (comme tu le soulignes) le <> de nil avant de l'utiliser.


Le : 16/06/2006 01:05:12
Source : CONVERTIR DBGRID EN STRINGGRID
Pas grand intéret. Surtout si le Dataset est important. Pas de mise à jour automatique en fonction des données ( cas de plusieurs PC/applications ).

Ne déplace pas l'enregistrement courant, et donc ne facilite pas les modifs sur la ligne en cours.

Dans tous les avantages que tu donnes dans ton commentaire, tout peut se faire dans le DBGrid et sans que ce soit plus compliqué.


Le : 07/06/2006 23:04:47
Source : CONVERTISSEUR
Trois remarques.
- Le case avec les 101 cas, ce n'est pas top. Utilise plutôt un tableau constant
- Le code n'est pas indenté correctement
- Le code peut se simplifier énormément avec un méthode récursive tout en gardant ta logique :

function Centaine (i: integer) : String; { NOM DES CHIFFRES }
begin
  case i of
   1..100: Result:=chif(i);
   101..199: Result:=' cent ' + Chif(i mod 100);
   200..999: case (i mod 100) of
              0:  Result:=Chif(i div 100) + ' cent';
              1..99:  Result:=Chif(i div 100) + ' cent ' + Chif(i mod 100);
             end;
   1000..999999: case (i div 1000) of
                1: Result:=' mille '+ Centaine(i mod 1000);
                2..999:Result:=Centaine(i div 1000)+' milles '+ Centaine(i mod 1000);
                end;
   1000000..999999999:  Result:= Centaine(i div 1000000)+' millions '+ Centaine(i mod 1000000);
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var i:Int64;
begin
  i:=StrToInt64(edit1.Text);
  if (i <= 999999999) then
    edit2.Text:= Centaine(i)
  else
    edit2.Text:= Centaine(i div 1000000000)+' milliards '+ Centaine(i mod 1000000000);
end;


Le : 07/06/2006 22:39:50
Source : RÉCUPÉRER LES TOUCHES TAPÉS AU CLAVIER
Je vois pas l'interet de ce source... Ca ne fait qu'utiliser un évènement de base de chaque composant. Le touche F1 de Delphi en fera apprendre bien plus.

La touche TAB peut être récupérée sur la fiche ( avec KeyPreview à true ) ou sur un TMemo avec WantTabs à True.

Ne pas utiliser $73 mais VK_F1

PS : la coloration syntaxique de ce site me fera toujours rigoler...


Le : 23/04/2006 18:34:39
Source : RECHERCHER LES PREMIERS NOMBRES PREMIERS
Tout sauf optimisé ton code :wink:

Il ne faut pas utiliser Power(xxx,0.5) mais SQRT()
Il ne faut calculer le SQRT qu'une seule fois au début de boucle car il ne change pas.
Il ne faut pas faire trop de processMessages, ça perd un temps fou.
Il ne faut pas mettre à jour la liste à chaque fois, mais seulement une fois sur N  ou sur demande ( touche ou sortie ). La mise à jour de la liste est énormement plus longue que le calcul d'un nombre.


Le : 22/04/2006 21:29:26
Source : COMPOSANT DYNAMIQUE : COMMENT CODER POUR UN COMPOS NON ENCORE CRÉÉ
--> Delphiprog
Je ne proposait cette méthode que pour la faire coonnaitre. J'utilise régulièrement la création dynamique et quand ce n'est que pour quelques objets j'utilise bien sur le transtypage et les objet existants ( TComponent.Components, TWinControl.Controls ).

Mais dans le cas d'un grand nombre avec des besoin particulier un héritage est bien mieux adapté.

PS : je viens te voir ici vu que l'on ne te vois pas beaucoup là ba. :wink:


Le : 21/04/2006 22:10:22
Source : MAKE CAB + CHECKLISTBOX
Merci je sais la différence entre un Whiol et un repeat....

Regarde ma solution de près et tu veras que le code Repeat Until n'est appelé que si le If est vrai. Le traitement ne seront donc bien effectué que sur le premier élément.

Pour ta solution
procedure SetList(List : TStrings);
var TMPLIST : TStringList;
begin
  try
    TMPLIST := TStringList.Create;
    ...
    TMPLIST.Add(...);
    ...
    List.Assign(TMPLIST);
  finally
    TMPLIST.Free;
  end;
end;

La création est inutile ici.
procedure SetList(List : TStrings);
begin
  list.Clear
  List.Add(...);
end;

Pour répondre à un point au dessus aussi, tu dis que le résultat est libéré car c'est une variable locale. C'est FAUX. Seules les chaines et les tableaux dynamiques sont dans ce cas, dans tous les autres c'est à toi de le gérer.


Le : 21/04/2006 00:15:51
Source : COMPOSANT DYNAMIQUE : COMMENT CODER POUR UN COMPOS NON ENCORE CRÉÉ
"la création dynamique de compos est toujours d'actualité?"
Imagine une visionneuse de diapos miniatures, par exemple...

Exactement, et il y a des tas d'autres cas... Je rejoints DelphiProg sur les TObjectList. Tu dérives une classe descendante de TObjectList ou même un TComponentList et tu n'as plus rien à transtyper non plus.


Le : 21/04/2006 00:10:23
Source : MAKE CAB + CHECKLISTBOX
Deux trucs. FindFirst et FindNext ça s'utilise avec un repeat until, le findclose ne doit être fait que si le FindFirst réussi.
If FindFirst()=0 Then
Begin
  Repeat
    // Le code de gestion d'une occurence ici et seulement ici
  Until FindNext()<>0;
  FindClose()
End;

Le deuxième truc encore plus moche c'est le GetSelection:TStringList. Une grosse fuite de mémoire en perpective car il faut détruire la liste retournée par la fonction ce que personne ne fera... Regarde dans le code de la VCL pour voir comment sont gérées les propriétés de type TStrings. Ta méthode ne gère pas non plus les éventuelles erreur de durant le code entre la création de la liste et sa destruction.

Si vraiment tu veux faire une fonction que retourne un TStrings il faut faire comme suit :
Proceudre GetSelection(Selection:TStrings);
Begin
  // Pas de create ici
End;
L'appel :
MaListe := TStringList.Create;
Try
  GetSelection(MaListe);
  // Traitement de la liste
Finally
  MaListe.Free;
End;



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,281 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.