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 !

124 commentaire(s) de TeBeCo sur des sources sur tout CodeS-SourceS

Le : 23/06/2009 18:25:44
Source : UN EDITEUR APPELER MYPAD
merci de la réponse,
je suggérais par la d'écrire ça dans la partie "DESCRIPTION" qui ne sert absolument qu'à ça plutôt qu'en commentaire.


Le : 22/06/2009 18:19:16
Source : UN EDITEUR APPELER MYPAD
en tant qu'utilisateur lambda ne chargeant pas n'importe quoi sur son PC, est qu'on peux demander a savoir a quoi sert ton programme parce que "Éditeur" ...
Peut être que si c'est changer des utilisateur visitant cette page regarderont de plus prêt (dont moi) du coup je passe a la suite


Le : 02/05/2009 13:56:00
Source : TRADUCTEUR ALGO VISUAL BASIC .NET/C#
en toute sincérité je n'ai pas non plus eu le temps de regardé en détails.
Je ne pense pas en avoir énormément non plus.
Si on le limite a l'architecture du logiciel lui même et non pas au code un problème apparait : tu as coder la partit logique dans la couche de présentation ce qui induit en cas de problème d'exécution des problèmes au niveau de la couche de présentation tel que "écran freezer" ou "ne répond pas", ou encore un plantage complet de l'application pour une simple défaillance (potentielle) du code.

et dans le code survolé :
pas de try catch
et le code en super gros pavé

il y a probablement d'autre chose mais comme indiqué j'ai pas eu le temps de regarder en détails


Le : 30/04/2009 19:18:20
Source : TRADUCTEUR ALGO VISUAL BASIC .NET/C#
pourquoi ne pas avoir implementé un Parser/Lexer de C# & vb.net a cet effet ?

http://www.codeproject.com/KB/recipes/grammar_support_1.aspx

voila un très bon article & code traitant du sujet, de plus un fichier de regle pour le C# 3.0 est fournit avec.
Le code permet à la fois de créé ses parser avec le "PEG Generator" & le post pro
qui débite du code C# 3.0 et plus (utilisation d'expression lambda)
mais il permet aussi (après de très légère manipulation du projet de base) de rajouter son code C# généré a la liste des parser utilisable et donc de pouvoir a la volé modifier & tester son parser.
Il permet aussi de générer un AST (l'arbre issue du Parse) qui lui permettra de reconstruire du code par la suite.


Le : 05/02/2009 21:54:37
Source : ANALYSEUR LEXICAL
je suis désolé de t'annoncer que si tu modifie un peu ta chaine t'as une superbe boucle sans fin il détecte pas la fin de chaine.
de manière simple si tu mets juste :
a

dans la case ça reste bloqué.

j'ai virer le code derrière le bouton "analyser" je l'ai mis dans une autre procédure qui est lancer sur un thread différent du thread UI pour pouvoir bien se rendre compte du problème avec un bouton d'abandon qui Abort le thread (et les try catch qui vont bien pour le AbortThreadException et les delegate pour les CrossThreadException)

et j'ai aussi rajouté un "textbox2.Clear()" derrière le click du bouton d'analyse (si on change la chaine) et d'autre changement dans l'UI pour pouvoir tout agrandir
bref ce code m'intéresse vu que j'essaye d'en apprendre sur le sujet, j'ai voulu faire quelque test sur un projet pré existant mais malheureusement je suis bloqué

merci encore pour ce début de piste

(si jamais quelqu'un passe par la et connaitrais des endroit ou des tutoriaux cours etc ... sur le sujet sont disponible j'ai chercher pendant quelque heure ces derniers jour le peu que j'ai trouver ne concerne pas la théorie elle même des lexer/parser mais uniquement les cas spécialisés de certain parse (html, C, etc ....)


Le : 08/08/2008 12:58:38
Source : OPTIMISER WINDOWS POUR JOUER
vive les blague ...
vas y kill le "dwn" sous vista quand tu joue en mode fenetré on en reparle

apres :
taskkill /f /im jusched.exe

c'est une bonne idée aussi de kill ca si jamais y a un acces de fait ca se relance de tte facon mdr suffit qu'une autre tache en fond l'utilise, pour ce que ca coute en ressource quand il fait rien ca sert ... a rien

enfin tu devrais eviter de bidouiller des choses au hasard et te renseigner sur les process
surtout quand ton code n'est en rien de ".net" mais du shell de .bat depuis un executable que tu peux faire a la main ca a aucun interet
pourquoi double clicker sur un exe alors qu'on peux double cliquer le .bat ?


Le : 06/08/2008 13:15:57
Source : PROGRESSBAR
ca serais pas mal qu'un admin annule la coche ".Net" ou l'auteur si il y a acces quand il s'agit de vb6


Le : 05/08/2008 13:42:11
Source : SUPPRESSION DE RÉPERTOIRE
sinon tu fais comme sebmafate te le suggère reduis ton code a la simple necessité c'est a dire ici :

Directory.Delete(R.FullName, true);

et poste le dans les snippets


Le : 05/08/2008 13:40:57
Source : SUPPRESSION DE RÉPERTOIRE
Je peux te proposer un tout petit remplacement dans ton code ?
Remplacer:

        private void delDir(System.IO.DirectoryInfo R)
        {
            try
            {
                affDir(R.FullName);
                foreach (System.IO.DirectoryInfo D in R.GetDirectories())
                {
                    delDir(D);
                }
                foreach (System.IO.FileInfo F in R.GetFiles())
                {
                    try
                    {
                        F.Delete();
                    }
                    catch (Exception ex)
                    {
                        log(ex.Message, "delDir.Files");
                    }
                }
                if (R.GetFiles().Length == 0 && R.GetDirectories().Length == 0)
                    R.Delete();
                else
                    log("Répertoire " + R.FullName + " non supprimé", "delDir.Aff");
            }
            catch (Exception ex)
            {
                log(ex.Message, "delDir");
            }
        }

par :
                Directory.Delete(R.FullName, true);

A par ce petit remplacement
Je te suggère aussi de remplacer :
            catch (Exception ex)
            {
                log(ex.Message, "delDir");
            }

Par une réelle prise en charge des erreurs, là ca vaux pas grand chose l'utilisateur sera comme un crétin devant un message du genre : "et nooooon ca marche pas" super ...
ouvre la page des méthode que tu utilises genre pour : Directory.Delete(R.FullName, true);
Tu vas sur MSDN :
http://msdn.microsoft.com/en-us/library/fxeahc5f.aspx
Et la t'as une liste des exceptions que ca peut retourner et c'est les seuls que ca pourra retourner
Donc faut toutes les gérer, je cite :

Exceptions:
* IOException :
    A file with the same name and location specified by path exists.
    -or-
    The directory specified by path is read-only, or recursive is false and path is not an empty directory.
    -or-
    The directory is the application's current working directory.

* UnauthorizedAccessException :
    The caller does not have the required permission.

* ArgumentException :
    path is a zero-length string, contains only white space, or contains one or more invalid characters as defined by InvalidPathChars.

* ArgumentNullException :
    path is nullNothingnullptra null reference (Nothing in Visual Basic).

* PathTooLongException :
    The specified path, file name, or both exceed the system-defined maximum length. For example, on Windows-based platforms, paths must be less than 248 characters and file names must be less than 260 characters.

* DirectoryNotFoundException :
    The specified path does not exist or could not be found.
    -or-
    The specified path is invalid (for example, it is on an unmapped drive).



que dire d'autre hum je dirais :

        [System.Runtime.InteropServices.DllImport("kernel32.dll")]
        private static extern void Sleep(int msec);

        private void affDir(string sD)
        {
            this.lblAff.Text = sD;
            Sleep(1);
        }

Le sleep est à éviter
As tu réellement besoin de faire un sleep ce dont je doute ENORMEMENT pour une suppression de répertoire sur le disque dur perso ca me ferais chié de perdre 1 milliseconde sur chaque fichier du disque dur sur une grosse suppression sur mon disque dur au boulot j'ai 137k fichier ca fait plus de 2 minute de bouffer pour rien.
et pour les petites suppressions un Sleep d'une millisecondes est pour le moins symbolique au niveau de la durée mais sert a rien dans le code .

Si tu choisis de faire du C# et donc du .net il faudrait peut être éviter de faire des appels a du code Unmanaged (c'est-à-dire non .Net) autant que possible, je parle de ton API via cette ligne :
        [System.Runtime.InteropServices.DllImport("kernel32.dll")]
        private static extern void Sleep(int msec);

A quoi ca sert de redéfinir quelque chose de disons "extra .net" alors que ca existe déjà en .net
Même démarche, ouvrons la doc MSDN et demandons nous a quoi sert la fonction
"Sleep" de Kernel32.dll
ca "endors" le thread courant pour le nombre de millisecondes spécifiées
Demandons nous donc si en .net le thread n'existeraient ils pas ?
System.Threading.Thread
Mince ca existe  et y a même une propriété statique :
System.Threading.Thread.CurrentThread
Qui renvois l'instance du thread en cours autant dire qu'on se rapproche du but
Maintenant que j'ai mon thread courant faut l'endormir cherchons dans sa liste de membre, a tiens je trouve un "Sleep" qui demande un délai en millisecondes ...
ca ferais donc la même chose
Ce qui reviendrait à écrire ceci :

soit :
System.Threading.Thread.CurrentThread.Sleep(1);
soit :
//avec dans using
using System.Threading;


//dans le code
Thread.CurrentThread.Sleep(1);
Par contre déjà tu devrais passer le thread en Background via le .IsBackground et proposé un curseur pour la priorité via le .Priority de ta classe Thread


Je pourrais aussi te suggérer de changer complètement ta méthode :
private void log(String Message, string sProc);
en quelque chose de plus structuré en commençant déjà par virer la RichTextBox et mettre une ListView
Créé une classe abstraite qui hériterais de ListViewItem avec les propriétés, et assesseurs correspondants a tes infos ainsi que toute la mécanique de log tel que l'horodatage au hasard
gérer ca dans une liste générique du type de ta classe
Ensuite de créé des classe qui hérite de ta classe abstraite qui pourront par exemple gérer des "simulacres" de priorité, warning etc. ...
Et rendre l'affichage propre grâce à cet héritage
Ex :
* choix d'icone automatique d'affichage
* Tri possible en fonction des chemins
* Tri par date
* Tri par évènements etc. ...
Enfin toute la mécanique qu'on attend d'une UI de manipulation de fichier


Et la grande question aussi ...
Pourquoi afficher a la fois le chemin du répertoire à parcourir a la fois dans une textbox a la ligne :
                this.txtDel.Text = FBD.SelectedPath;
Et dans un label a la ligne :
this.lblAff.Text = sD;


Déjà c'est assez hasardeux et "dangereux" pour la simple raison qu'il faut penser "double" dans le sens ou a chaque fois que t'en modifie un faut modifier l'autre pour la correspondance. Cela implique un mécanisme pour le moins inattendu et des oublies possibles
Par exemple si quelqu'un va modifier la textbox durant l'opération ca pourrait être sympathique

Et en plus de ca un contrôle a énormément de mécanisme de sécurité pour éviter par exemple le Cross Threading dessus et donc chaque accès a ce contrôle implique des appelle sécuritaire et autre bout de code autour donc lent
Pourquoi ne pas simplement écrire ce chemin dans une variable de type string, donc a accès rapide et ensuite mettre a jour ta textbox quand tu mets a jour ta variable, supprimé ton label et simplement locké la textbox et le mettre en readonly par exemple le temps de l'opération.



Le : 17/07/2008 15:56:39
Source : SÉPARATEUR DÉCIMAL UNIVERSEL AVEC TEXTBOX
de nombreux point sombres dans ce code malheuresement.
Tout d'abord quand je vois :
CStr, VB.Right, Len, VB.Left
ca fait deja peur ...
en gros tu fais pas de .net la tu reste bloqué sur tes vieilles habitude vb6
Ces fonctions sont a eviter completement quasiment 90% du "Microsoft.VisualBasic" (si c'est pas 100%) est a eviter.
pour quelle raison ?
les lignes :
Dim s1 as String = "toto"
Dim n as Interger = 1
Dim s2 As String = Right(s1, integer)

ont un equivalents .net :
Dim s1 as String = "toto"
Dim n as Interger = 1
Dim s2 As String = s1.SubString(s1.Length - n)

que va-t-il se passer avec la ligne :
Right(s1, integer)

il va te faire un :
return s1.substring(s1.length - n)

tu me dira c'est pareil
ben non tu perd en temps d'execution et en ressource a force de dupliquer et empiler les appel
donc passe vraiment a .net
oublie Microsoft.VisualBasic le plus possible et cherche un peu dans la doc
la tu fais quoi ?
des manipulation de String ?
ben ouvre la doc de la classe System.String et lis t'as pas d'autre choix

avec comme l'a dis "Gwendal3" les 40 "If" imbrique c'est une blague ?
Le Select Case est deja beaucoup mieux mais c'est pas encore ca
.Net c'est de la prog objet donc faut reflechir objet et entité
t'as un super framework qui te fournis plein de classe avec des automatisme pré existant
la par exemple tu peux te créé une liste generique du type :
imports System.Collections.Generic
Dim lstCaractereASuivre As List(of String)
ou
Dim lstCaractereASuivre As List(of Char)

pourquoi "of Char" ben parce que y a aucun interet a utiliser "String" a toi de voir mais 1 caractère convertit en String a t il vraiment son interet ? a voir
et dans la liste au moment du load tu formulaire tu fais un truc dans le genre :
lstCaractereASuivre.Add("1")
ou
lstCaractereASuivre.Add('1')

suivant la liste que t'as pris
et tu rajoute tous tes caractère important en question
pourquoi ca ?
la reponse dans la doc MSDN encore une fois
tout d'abord tu peux interroger la collection pour voir si elle contient un caractère et ca renvois un true/false
if (lstCaractereASuivre.IndexOf(textbox.text.substring(textbox.text.length-1)) > 0) Then
'alors il est dans la liste
else
'il y est pas
end if

encore autre chose :
ecrire "TextBox1.Text" c'est super beau c'est genial c'est magique etc ....
sauf que une textebox c'est pas une variable faites pour te donné que du texte, y a une interface graphique y a pas mal de code derriere en plus pour la securité, le cross threas etc ...
donc les appels dessus sont relayé par du code derriere et donc plus lents
dans ces cas quand tu sais que tu va faire plusieur accces dessus il vaux mieux dupliqué la valeur 1 fois dans une variable String au debut du sub (variable de classe ou locale suivant ou tu t'en sert avec les Call) et a la fin recopié la valeur dans la textbox elle en sera d'autant plus contente
en plus de cas comme le multithread est possible en .net si jamais la valeur de ta textbox change entre le debut et la fin de la sub avec ton code tu l'a dans l'os


ensuite pour revenir sur la remarque de Eldim en .net (cf msdn pour changer) t'as une fonction qui te permet de recuperer le separateur decimal de l'utilisateur loguer sur la machine qui utilise ton application ca te permet de savoir si c'est un "." ou une "," ca aussi a stocké en varaible de classe ou globale je presume et a remettre a jour (a toi de voir quand mais si l'utilisateur le change pendant l'appli faut que ca soit gerer donc un timer c'est a eviter)

enfin y a beaucoup de chose a revoir
par ou commencer ?
je dirais qu'il faut plus se servir de MSDN => a chaque classe utiliser va lire la liste des membres, la description de la classe et les exemple associé
ensuite je te dirais d'arreter de raisoner a la VB6 si VB6 est marqué par microsoft comme obsolete depuis le debut de l'année c'est pas pour rien il faut penser plutot Programmation Objet.

Sur ce bonne continuation en .net



1 2 3 4 5 6 7 8 9 10 11 12


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,234 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é.