<?xml version="1.0" encoding="iso-8859-1"?>
<rss version="2.0" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <title>Blog Michel L&#233;vy</title>
  <link>http://www.vfp.fr/michel.asp</link>
  <copyright>Copyright KitWeb.fr</copyright>
  <pubDate>Mon, 2 May 2011 19:15:29 GMT</pubDate>
  <description>Blog Michel L&#233;vy - FLUX RSS</description>
  <atom:link href="http://www.vfp.fr/rss/michel.xml" rel="self" type="application/rss+xml" />
  <item>
    <title>Migration, migration...</title>
    <description>En lisant VFP Advisor, je suis tombé sur une publicité qui m'a semblé intéressante : STRATAFRAME ...
Je suis allé voir le site, et évidemment, j'ai tout de suite repéré la page d'accroche pour les développeurs VFP .
Et bien évidemment, j'ai tout lu, regardé les vidéos de présentation, téléchargé la version d'essai, et.... je vais commander ce framework.
C'est quoi, Strataframe ? C'est un framework pour VB.NET ou C# centré sur les données. En deux mots (j'en reparlerai plus longuement), ça vous met à disposition des objets métiers qui sont très proches des cursoradapter de VFP (mais on peut avoir autant de requètes SQL qu'on veut dans le même objet), et ça offre le databinding aux controles des Winforms de .net.
Allez, on en reparle plus tard, mais pour moi, c'est choisi, Strataframe sera ma solution de migration.
</description>
    <pubDate>Sun, 27 May 2007 22:00:00 GMT</pubDate>
    <link>http://www.vfp.fr/michel.asp#article_0000000161</link>
    <guid isPermaLink="true">http://www.vfp.fr/michel.asp#article_0000000161</guid>
  </item>
  <item>
    <title>Je découvre StrataFrame</title>
    <description>J'ai donc acheté StrataFrame, et je commence à l'étudier parallèlement à la lecture du livre de Les Pinter (VFP to VB.NET)... et je ne regrette pas mon achat!
Bien sur, il y a l'aspect le plus visible : il faut moins de 10 minutes pour construire un formulaire dont les controles sont liés aux données, avec une barre de navigation et les boutons ajout / modif / supprime / validatation / annulation.
C'est un bon début, mais c'est encore mieux quand on commence à regarder ce que ça fait (parcequ'il n'y a pas vraiment besoin de StrataFrame pour faire ça en VB.NET)
Et en regardant comment ça marche, je vais de bonne suprise en émerveillement, et d'émerveillement en attente de la suite de ce que vais découvrir, comme un enfant devant un joli cadeau (500$ par an quand même, le cadeau a un prix).
ça, par exemple, ça ne vous rappelle rien?
 DeleteCurrentRow(OnlyMarkAsDeleted) - When OnlyMarkAsDeleted is given a value of True , the current row is deleted within the internal data table only and a Save() must be executed before the changes are reflected back to the server. This is recommended when deleting a large number of records.
et ça, est-ce que ça n'est pas parfois utile?
 Dynamic Foreign Key Management - This feature is the most important - and most convenient - parent-child relationship element. By establishing a relationship between parent and child, the foreign key can be automatically managed, thereby negating the need for the developer to manually track and update child records. Additionally, new child records can be created on top of a new parent record without requiring an existing parent record. When a new child record is created, the foreign key field will automatically be set to the value of the primary key of the parent business object. When saved, the keys will be automatically cascaded from the parent record to the children records.
Allez, je continue de préparer mes valises pour ma migration, la suite de mes découvertes un autre jour...
</description>
    <pubDate>Wed, 6 Jun 2007 22:00:00 GMT</pubDate>
    <link>http://www.vfp.fr/michel.asp#article_0000000164</link>
    <guid isPermaLink="true">http://www.vfp.fr/michel.asp#article_0000000164</guid>
  </item>
  <item>
    <title>Mes premiers pas avec StrataFrame</title>
    <description>Ouff!
 ça n'a pas été facile, mais ça commence à venir.
 En VFP, j'ai l'habitude d'avoir sur mon serveur SQL une base de données de paramétrages de l'application, qui permet entre autres choses de choisir le "dossier de travail", c'est à dire la base de données qui contient les datas vraiment utilisés dans l'application (ce qu'on faisait avant avec des dbf dans des répertoires différents).
 Faire ça en VFP sur SQL Server, c'est facile (il suffit d'une propriété dans le form de premier niveau, qui stocke la connectstring qui sera utilisée dans le SQL Pass-Throug ou dans les vues).
 Et en VB.NET??
 J'ai mis 3 semaines à comprendre comment faire , et heureusement que le forum strataframe est réactif... Mais ça y est, j'y suis enfin arrivé:
 MicroFour.StrataFrame.Data.DataLayer.DataSources.Remove( "" )
 _cnxString = "Data Source=localhost;Initial Catalog=databcuv" &amp; _DBstring &amp; ";Integrated Security=True;Persist Security Info=False;Asynchronous Processing=True"
 Dim cnxCuv As New MicroFour.StrataFrame.Data.SqlDataSourceItem( "" , _cnxString)
 MicroFour.StrataFrame.Data.DataLayer.DataSources.Add(cnxCuv)
 Vous aurez compris que la variable _DBstring contient une chaine qui complète "databcuv" pour pointer sur le bon database.
 Mais surtout, surtout, vous aurez repéré ce DataLayer, qui est au coeur de StrataFrame!
 A partir de là, construire une appli multi-dossiers multi-sociétés n'est guère plus complexe qu'en VFP, et ça, c'est la bonne nouvelle d'aujourdhui.
</description>
    <pubDate>Mon, 16 Jul 2007 22:00:00 GMT</pubDate>
    <link>http://www.vfp.fr/michel.asp#article_0000000171</link>
    <guid isPermaLink="true">http://www.vfp.fr/michel.asp#article_0000000171</guid>
  </item>
  <item>
    <title>Et avec une table de 600 000 enregistrements?</title>
    <description>Un petit test à la va-vite, comme ça, ce matin....
 Comment se comportent .NET et les forms surchargés avec les objets d'accès aux données de StrataFrame, quand il s'agit d'une table de 626 000 enregistrements?
 J'avais envie de voir comment ça se passerait pour mon form de saisie et pour mon grid, tous les 2 liés à cette table sur un serveur SQL de test qui tourne sur la même machine locale que mon environnement de dev.
 Eh bien, la surprise est heureuse, là encore ; environ 30 secondes pour charger TOUS les enregistrements, quel que soit le form!
 Bien sur, ça ne rivalise pas avec les 5 ou 6 secondes de VFP ; et je sais bien que je ne chargerai jamais autant de lignes à la fois, c'est une aberration.
 Mais ça me donne une idée de ce qui est faisable. On ne peut plus continuer à répéter que 1000 lignes sont un maximum au delà duquel un winform .NET se traine, ce n'est plus vrai aujourdhui. Je pense que quelques dizaines de milliers de lignes doivent fonctionner sans délai d'affichage. Je vais faire quelques tests pour vérifier.
</description>
    <pubDate>Sun, 12 Aug 2007 22:00:00 GMT</pubDate>
    <link>http://www.vfp.fr/michel.asp#article_0000000176</link>
    <guid isPermaLink="true">http://www.vfp.fr/michel.asp#article_0000000176</guid>
  </item>
  <item>
    <title>Gestion des conflits de mise à jour</title>
    <description>Le problème de .NET, c'est qu'on a l'impression que ceux qui l'ont conçu ont juste oublié un petit détail : il ne suffit pas d'accéder aux données pour les lire, il faut aussi pouvoir écrire, les modifier , en ajouter, les supprimer...
 Et là, les choses se compliquent : déjà qu'il faut 3 objets pour accéder aux données, quelle propriétés/méthodes utiliser dans lesquels de ces objets pour faire un update qui gère les conflits?
 les forums .net sont pleins de ces questions-là, et les réponses sont aussi tordues les unes que les autres, et chaque réponse ne fait que prouver l'inadaptation complète de ces langages à cette problématique.
 Alors, j'attendais StrataFrame au tournant, parceque pour moi, c'est un point capital, cette question de la gestion des conflits.
 Créer un form simple de gestion des données, c'est rapide et facile en quelques drag and drop, que ce soit avec ou sans Strataframe.
 Mais pouvoir choisir le mode de mise à jour "OptimisticAllFields" , "OptimisticTimeStamp" ou "OptimisticRowVersion", avec ou sans transaction, là, c'est du StrataFrame 100%!
 Et pouvoir faire ces choix différemment pour Insert, Update, ou Delete, là, c'est le luxe!
 Et pouvoir choisr de le faire au niveau de la classe (ce qu'ils appellent un assembly) de l'objet d'accès aux données ou au niveau du form lui-même, c'est encore mieux que mieux.
 Je n'ai pas encore essayé de passer par des procédures stockées sur le serveur, mais c'est aussi une option proposée : encore une fois, rien que du connu pour un développeur VFP/SQL.
 Cerise sur le gâteau, si on a un retour d'erreur (que ce soit sur un doublon ou sur un conflit de mise à jour), on a le choix entre intercepter l'erreur pour la traiter soi-même ou laisser StratFrame gérer sur la base de messages personnalisables (et localisables pour une appli multilingue).
 Les messages apparaissent au bon endroit, les champs incorrects en saisie sont bien pointés à l'utilisateur, ou bien un form est affiché qui propose le choix entre les valeurs actualisées depuis le serveur ou celles que l'utilisateur a saisies.
 Allez, j'y retourne, je n'ai pas encore réussi à afficher ce form de choix exactement là où je voudrais, et il faut aussi que je trouve où on le localise en français.
</description>
    <pubDate>Wed, 1 Aug 2007 22:00:00 GMT</pubDate>
    <link>http://www.vfp.fr/michel.asp#article_0000000172</link>
    <guid isPermaLink="true">http://www.vfp.fr/michel.asp#article_0000000172</guid>
  </item>
  <item>
    <title>Utilitaires</title>
    <description>Quelques documentations parfois utiles...
</description>
    <pubDate>Sun, 15 Jul 2007 22:00:00 GMT</pubDate>
    <link>http://www.vfp.fr/michel.asp#article_0000000170</link>
    <guid isPermaLink="true">http://www.vfp.fr/michel.asp#article_0000000170</guid>
  </item>
  <item>
    <title>Syntaxes comparées VB.NET / VFP</title>
    <description>Objet Visual Basic 6.0
 Contrôle Windows Forms
 Objet Visual FoxPro
 ComboBox
 ComboBox
 ComboBox
 ImageCombo
 ComboBox
 Image
 CheckBox
 CheckBox
 CheckBox
 CommandButton
 Button
 CommandButton
 Frame
 GroupBox
 Panel
 FlowLayoutPanel
 TableLayoutPanel
 N/A
 OptionButton
 RadioButton
 OptionButton
 OptionGroup
 CommonDialog
 FileDialog
 PrintDialog
 ColorDialog
 FontDialog
 CommonDialog
 GETFILE ( )
 GETDIR ( )
 ListBox
 ListBox
 ListBox
 FileSystemObject
 Classes dans System.IO
 Fonctions diverses
 HScrollBar
 VScrollBar
 HScrollBar
 VScrollBar
 N/A
 COOLBar
 ToolStrip
 Toolbar
 Label
 Label
 Label
 TextBox
 TextBox
 TextBox
 EditBox
 MaskedEdBox
 MaskedTextBox
 N/A
 Menu
 ToolStrip
 MainMenu
 ContextMenu
 Commandes de menu
 Animation
 Les images situées sur les contrôles prennent en charge les images GIF animées
 Image
 Form
 Form
 Form
 FormSet
 Timer
 Timer
 Timer
 DataGrid
 DataGridView
 DataGrid
 Grid
 DateTimePicker
 DateTimePicker
 N/A
 ImageList
 ImageList
 ImageList
 ListView
 ListView
 ListView
 Internet Transfer
 WebBrowser
 Classes dans System.Net
 Web Browser
 MonthView
 MonthCalendar
 Calendar
 MonthView
 ProgressBar
 ProgressBar
 ProgressBar
 PictureBox
 PictureBox
 Image
 RichTextBox
 RichTextBox
 RichTextBox
 SSTab
 TabStrip
 TabControl
 SSTab
 StatusBar
 StatusStrip
 StatusBar
 StatusBar
 Slider
 TrackBar
 Slider
 Toolbar
 ToolStrip
 Toolbar
 Toolbar
 TreeView
 TreeView
 TreeView
 UpDown
 NumericUpDown
 DomainUpDown
 Spinner
 WinSock
 Classes dans System.Net
 WinSock
 Visual Basic
 Visual FoxPro
 Additive
 Addition
 +
 +
 Soustraction
 -
 -
 Multiplicative
 Multiplication
 *
 *
 Division
 /
 /
 Division par un entier [1]
 \
 Modulus division (ne retourne que le reste)
 Mod (fonctionne également avec la virgule flottante)
 %
 Mod
 Élévation à la puissance
 ^
 ^ **
 Assignation
 Assignation
 =
 =
 Addition
 +=
 +
 Soustraction
 -=
 -
 Multiplication
 *=
 *
 Division
 /=
 /
 Division par un entier
 \=
 N/A
 Concaténation de chaînes
 &amp;=
 +
 -
 $
 Division modulo
 N/A
 %
 Décalage vers la gauche
 BITLSHIFT ( )
 Décalage vers la droite
 &amp;gt;&amp;gt;=
 BITRSHIFT ( )
 Opération de bits AND
 N/A
 BITAND ( )
 Opération de bits OR exclusif
 N/A
 BITXOR ( )
 Opération de bits OR inclusif
 N/A
 BITOR ( )
 Null coalescing
 N/A
 N/A
 Opérateurs relationnels et d'égalité
 Inférieur à
 Inférieur ou égal à
 Supérieur à
 &amp;gt;
 &amp;gt;
 Supérieur ou égal à
 &amp;gt;=
 &amp;gt;=
 Égal à
 =
 =
 Différent de
 &amp;lt;&amp;gt;
 &amp;lt;&amp;gt;
 #
 !=
 Comparaison des variables de référence
 Is
 IsNot
 COMPOBJ ( )
 Comparaison des types de référence
 TypeOf x Is Class1
 N/A
 Comparaisons de chaînes
 StrComp( )
 =
 Concaténation CString
 &amp;
 +
 AND booléen court-circuité
 AndAlso
 AND
 .AND.
 OR booléen court-circuité
 OrElse
 N/A
 Décalage de bits
 Décalage vers la gauche
 N/A
 Décalage vers la droite
 &amp;gt;&amp;gt;
 N/A
 Visual Basic
 Visual FoxPro
 Résolution de portée
 Résolution de portée
 .
 MyBase
 MyClass
 ::
 Suffixe [2]
 Élément de tableau
 ( )
 [ ]
 ( )
 Appel de fonction
 ( )
 ( )
 Cast de type ou conversion
 CInt
 CDbl
 ...
 CType
 N/A
 Sélection de membres
 .
 !
 .
 Incrément par suffixe
 N/A
 N/A
 Décrément par suffixe
 N/A
 N/A
 Unaire [3]
 Adressage indirect
 N/A
 N/A
 Opérateur d'adresse
 AddressOf
 N/A
 NOT logique
 Not
 !
 NOT
 .NOT.
 Complément à 1
 Not
 BITNOT ( )
 Incrément par préfixe
 N/A
 N/A
 Décrément par préfixe
 N/A
 N/A
 Taille de type
 N/A
 N/A
 Comma (virgule)
 N/A
 N/A
 Opérateurs de bits
 Opération de bits AND
 And
 BITAND ( )
 Opération de bits OR exclusif
 Xor
 BITXOR ( )
 Opération de bits OR inclusif
 Or
 BITOR ( )
 Opérateurs logiques
 ET logique
 And
 AND
 .AND.
 OU logique
 Or
 OR
 .OR.
 Conditionnel
 Conditionnel ternaire
 IIf( )
 N/A
 Pointeur vers membre
 Pointeur vers membre
 N/A
 N/A
 Opérateurs de référence
 Opérateurs de référence
 N/A
 @
 Contenu et taille
 Visual Basic
 Visual FoxPro
 Données inconnues
 N/A
 Variant
 Decimal
 Decimal (structure .NET Framework)
 N/A
 Date
 Date (structure .NET Framework)
 Date
 DateTime
 Caractère SBCS
 (1 octet)
 N/A
 Character
 Caractère Unicode (2 octets)
 Char (structure .NET Framework)
 N/A
 Séquence de caractères Unicode
 String (classe .NET Framework)
 VarChar
 Boolean (dépendant de la plate-forme)
 Boolean (structure .NET Framework)
 Logical
 1 octet
 SByte, type de données (Visual Basic) (structure .NET Framework)
 N/A
 2 octets
 Short (structure .NET Framework)
 N/A
 4 octets
 Integer (structure .NET Framework)
 Integer
 8 octets
 Long (structure .NET Framework)
 Float
 1 octet non signé
 Byte (structure .NET Framework)
 Integer
 2 octets non signés
 UShort, type de données (Visual Basic) (structure .NET Framework)
 N/A
 4 octets non signés
 UInteger, type de données (structure .NET Framework)
 N/A
 8 octets non signés
 ULong, type de données (Visual Basic) (structure .NET Framework)
 N/A
 4 octets virgule flottante
 Single (structure .NET Framework)
 Float
 8 octets virgule flottante
 Double (structure .NET Framework)
 Double
 But
 Visual Basic
 Visual FoxPro
 Déclarer une variable
 Dim , instruction
 Public
 Friend
 Protected
 Private
 Shared
 Static [4]
 [déclaration implicite]
 PUBLIC
 LOCAL
 PRIVATE
 Déclarer une constante nommée
 Const
 #DEFINE
 Crée une instance de la classe.
 New
 Fonction NEWOBJECT( )
 Créer un nouvel objet
 CreateObject ()
 Fonction CREATEOBJECT( )
 Assigner un objet à une variable objet
 =
 =
 STORE
 La fonction/méthode ne retourne pas de valeur
 Sub [5]
 Void (serveurs COM uniquement)
 Surcharger une fonction ou une méthode (en Visual Basic : surcharger une procédure ou une méthode)
 Surcharge
 (Aucun mot clé du langage n'est requis à cet effet)
 Faire référence à l'objet en cours
 Me [6]
 this
 thisform
 Effectuer un appel non virtuel à une méthode virtuelle de l'objet en cours
 MyClass
 N/A
 Récupérer un caractère d'une chaîne
 GetChar , fonction
 SUBSTR ( )
 Déclarer un type de données composé (structure)
 Structure
 N/A
 Initialiser un objet (constructeur)
 Sub New() [7]
 Événement Init
 Terminer un objet directement
 N/A
 N/A
 Une méthode appelée par le système juste avant une opération garbage collection récupère un objet 7
 Finalize (dans Visual Basic 6.0, Class_Terminate )
 Événement Destroy
 Initialiser une variable à l'endroit où elle est déclarée
 Dim x As Long = 5
 Dim c As New Car (FuelTypeEnum.Gas)
 LOCAL x
 x = 5
 Prendre l'adresse d'une fonction
 AddressOf (Pour les membres de classe, cet opérateur retourne la référence à une fonction sous la forme d'une instance de délégué)
 N/A
 Rappel
 N/A
 N/A
 Déclarer qu'un objet peut être modifié de manière asynchrone.
 N/A
 N/A
 Forcer une déclaration explicite de variables
 Option Explicit
 _VFP.LanguageOptions
 Tester une variable objet ne faisant pas référence à un objet
 obj = Nothing
 VARTYPE(obj)=="0"
 Valeur d'une variable objet ne faisant pas référence à un objet
 Nothing
 .F.
 Tester une expression de base de données null
 IsDbNull
 ISNULL ( )
 Tester si une variable Variant a été initialisée
 N/A
 EMPTY ( )
 Définir une propriété par défaut
 Default
 N/A
 Programmation orientée objet
 But
 Visual Basic
 Visual FoxPro
 Faire référence à une classe de base
 MyBase
 Propriété BaseClass
 Propriété ParentClass
 DODEFAULT()
 Classe::membre
 Déclarer une interface
 Interface
 DEFINE CLASS
 Spécifier une interface à implémenter
 Implements (instruction)
 IMPLEMENTS NOUVEAU
 Déclarer une classe
 Class
 DEFINE CLASS MyClass AS
 Déclarer un module
 Module , instruction
 N/A
 Déclarer la définition partielle d'une classe ou d'une structure
 Partial (Visual Basic)
 N/A
 Spécifier qu'une classe peut uniquement être héritée. Il est impossible de créer une instance de la classe.
 MustInherit
 N/A
 Spécifier qu'une classe ne peut pas être héritée.
 NotInheritable
 N/A
 Déclarer un type énuméré
 Enum End Enum
 N/A
 Déclarer une constante de classe
 Const
 #DEFINE
 Dériver une classe d'une classe de base
 Inherits C2
 DEFINE CLASS MyClass AS ParentClass
 Substituer une méthode ou une propriété
 Overrides
 (Aucun mot clé du langage n'est requis à cet effet)
 Déclarer une méthode qui doit être implémentée dans une classe dérivée
 MustOverride
 (Aucun mot clé du langage n'est requis à cet effet)
 Déclarer une méthode qui ne peut pas être substituée
 NotOverridable (Les méthodes sont NotOverridable par défaut.)
 N/A
 Déclarer une méthode virtuelle ou une propriété, ou un accesseur de propriété
 Overridable
 N/A
 Masque un membre de la classe de base dans une classe dérivée
 Occultation
 N/A
 Déclarer une référence de type sécurisé à une méthode de classe
 Délégué
 N/A
 Spécifier qu'une variable peut contenir un objet dont vous souhaitez gérer les événements
 WithEvents
 EVENTHANDLER( ) NOUVEAU
 Spécifier les événements pour lesquels une procédure événementielle sera appelée
 Handles (les procédures événementielles peuvent toujours être associées à une variable WithEvents par modèle d'affectation de noms)
 BINDEVENTS( )
 Évaluer une expression d'objet une fois, afin d'accéder à plusieurs membres
 With objExpr End With
 WITH ... ENDWITH
 Gestion des exceptions
 But
 Visual Basic
 Visual FoxPro
 Gestion structurée des exceptions
 Try
 Catch
 Finally
 End Try
 Throw
 TRY
 [ tryCommands ]
 [ CATCH [ To VarName ] [ WHEN IExpression ] ]
 [ catchCommands ] ]
 [ THROW [ eUserExpression ] ]
 [ EXIT ]
 [ FINALLY
 [ finallyCommands ] ]
 ENDTRY
 Structures de décision
 But
 Visual Basic
 Visual FoxPro
 Structure de la décision (sélection)
 Select Case ..., Case , Case Else , End Select
 CASE
 ICASE
 Structure de la décision (if ... then)
 If ... Then , ElseIf ... Then , Else , End If
 IF ... ENDIF
 IIF( )
 Structure de boucle (conditionnelle)
 While , Do [While, Until] ..., Loop [While, Until]
 DO , WHILE (clauses)
 Structure de boucle (itération)
 For ..., [Exit For,] Next
 For Each ..., [Exit For] , Next
 FOR (clauses)
 FOR ... ENDFOR
 Continue
 NEXT
 FOR EACH (clauses), FOR ... ENDFOR , Continue , Next
 Tableaux
 But
 Visual Basic
 Visual FoxPro
 Déclarer un tableau
 Dim a() As Long
 DIMENSION
 DECLARE
 Initialiser un tableau
 Dim a() As Long = {3, 4, 5}
 x[1] = 1
 x[2] = 2
 Réallouer un tableau
 Redim
 DIMENSION
 DECLARE
 Portée de classe
 But
 Visual Basic
 Visual FoxPro
 Visible en dehors du projet ou de l'assembly
 Public
 N/A
 Invisible à l'extérieur de l'assembly ou dans le package
 Friend
 N/A
 Visible uniquement dans les classes courantes ou dérivées
 Protected (Visual Basic)
 N/A
 L'accès est restreint à l'assembly en cours ou aux types dérivés de la classe conteneur.
 Protected Friend
 N/A
 Visible uniquement dans le projet (pour les classes imbriquées, dans la classe englobante)
 Private
 N/A
 Durée de vie diverse
 But
 Visual Basic
 Visual FoxPro
 Conserver les variables locales de la procédure
 Static [8]
 N/A
 Partagé par toutes les instances d'une classe
 Shared
 N/A
 Divers
 But
 Visual Basic
 Visual FoxPro
 Commenter le code
 '
 Rem
 *
 &amp;&amp;
 NOTE
 Respect de la casse ?
 Non
 Non
 Appeler une API Windows
 Declare
 DECLARE - DLL
 Déclarer et déclencher un événement
 Événement
 RaiseEvent
 Fonction RAISEEVENT( )
 Primitives de thread
 SyncLock
 N/A
 Aller à (branche)
 Goto
 N/A
 [1] L'opérateur de division est surchargé pour gérer à la fois la division par des entiers et la division par zéro en virgule flottante, en fonction des opérandes.
 [2] Les opérateurs suffixe ont la priorité la plus élevée dans l'évaluation de l'expression.
 [3] Les opérateurs unaires sont affichés avant l'opérande et sont associés de droite à gauche.
 [4] En Visual Basic, la seule place où Static peut être utilisé seul pour déclarer une variable - par exemple, Static x As Long- est dans une procédure.
 [5] En Visual Basic, les procédures déclarées avec le mot clé Sub ne peuvent pas retourner de valeurs. Si une procédure doit retourner une valeur, vous devez la déclarer avec le mot clé Function.
 [6] En Visual Basic, Me n'est pas résolu au moment de la compilation ; vous pouvez donc l'utiliser comme valeur de retour d'une propriété ou d'une méthode.
 [7] En Visual Basic, les constructeurs des classes dérivées du .NET Framework System.Object sont toujours nommés New.
 [8] En Visual Basic, les variables locales statiques de méthodes de classe non partagées sont stockées par instance de classe, au lieu de partager une seule et même copie comme dans d'autres langages. Lorsque le mot clé Static est utilisé pour déclarer une variable, la valeur de cette variable est conservée même si la variable perd puis reprend sa portée.
</description>
    <pubDate>Sun, 15 Jul 2007 22:00:00 GMT</pubDate>
    <link>http://www.vfp.fr/michel.asp#article_0000000169</link>
    <guid isPermaLink="true">http://www.vfp.fr/michel.asp#article_0000000169</guid>
  </item>
  </channel>
</rss>
