IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Lazarus Pascal Discussion :

Utilisation de Lazarus


Sujet :

Lazarus Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Avatar de chris37
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Juillet 2007
    Messages
    378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 378
    Par défaut Utilisation de Lazarus
    Bonjour

    Mon site est en cours de mise à jour afin d'améliorer la qualité des cours et tutos sur Lazarus. Certains seront également disponibles sur DVP pour votre plus grand plaisir

    J'ai mis à jour le complément concernant l'utilisation de Lazarus avec MySql et notament comment afficher les champs de la base de données comportant des accents . Un petit rappel ne fait pas de mal....Vous pouvez le consulter ICI

    Cordialement,
    Chris

  2. #2
    Membre confirmé Avatar de danucc
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Novembre 2008
    Messages
    70
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2008
    Messages : 70
    Par défaut
    Merci pour votre travail, très aprécié.

    Danilo Uccelli

  3. #3
    Membre chevronné
    Avatar de richard
    Homme Profil pro
    Inscrit en
    Avril 2002
    Messages
    475
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Avril 2002
    Messages : 475
    Par défaut
    Merci beaucoup pour ces tutos toujours clairs et bien faits.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Problème d'affichage des accents avec Mysql
    --------------------------------------------------------------------------------
    Par défaut; les composants d'accès natif de Lazarus ne proposent pas la gestion UTF8 et les données ne seront pas affichées correctement dans les champs (TDBEdit, TDBGrid, etc....).
    Ce problème peut également survenir avec d'autres composants d'accès comme ceux de ZEOS. Appliquer dans ce cas la même méthode que pour les composants natif.

    Pour remédier à cela, placer un TSqlQuery (Name = SqlQuerySet) sur votre Form ou votre DataModule et utilisez le de la manière suivante.

    Dans le code de l'évenement AFTERCONNECT du TSqlConnection, placer le code suivant

    SQLQuerySet.SQL.Text : = 'SET CHARACTER SET `utf8`';
    SQLQuerySet.ExecSql;

    Lors de la connection, la séquence sera envoyée à la base de données et vos données seront bien affichée par la suite
    Bonjour,

    à propos de mySQL et Lazarus, comme j'ai beaucoup galéré sur leur "compatibilité" et surtout pour obtenir un code polyvalent sous Windows et Linux, je me permets quelques observations qui pourront éventuellement être utiles (ou contredites) et une autre possibilité :

    En Zeos, je préfère utiliser la propriété du connecteur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    if ZConnection1.Connected then ZConnection1.Disconnect;
    ZConnection1.Properties.Clear;
    ZConnection1.Properties.Add('character_set_client=utf8');
    ZConnection1.Properties.Add('character_set_connection=utf8');
    ZConnection1.Properties.Add('character_set_database=utf8');
    ZConnection1.Properties.Add('character_set_results=utf8');
    ZConnection1.Properties.Add('character_set_server=utf8');
    ZConnection1.Properties.Add('character_set_system=utf8');
    ZConnection1.Properties.Add('collation_connection=utf8_unicode_ci');
    ZConnection1.Properties.Add('collation_database=utf8_unicode_ci');
    ZConnection1.Properties.Add('collation_server=utf8_unicode_ci');
    ZConnection1.Properties.Add('codepage=utf8');
    ZConnection1.Connect;
    Il ne faut pas oublier que l'interclassement de la table peut très bien être latin1_swedish_ci alors qu'en même temps l'interclassement pour la connexion mySQL peut être en utf8_unicode_ci. Les properties peuvent le traduire. On peut le faire également avec des requêtes... mais ligne par ligne ce qui entrainent leur multiplication. Dans la majorité des cas, le code de Chris est suffisant...

    Concernant mySQL, quelques constatations :

    1. Compte tenu de mes connaissances actuelles (et dans l'attente d'avoir "la" solution), je ne suis pas du tout partisan d'utiliser un interclassement de table UTF8 pour contenir l'alphabet français:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    procedure TForm1.btUTF8Click(Sender: TObject);
    begin
      if ZConnection1.Connected then ZConnection1.Disconnect;
      ZConnection1.Connect;
     
      ZQuery1.Close;
      ZQuery1.SQL.Clear;
      ZQuery1.SQL.Add('SET CHARACTER SET `utf8`;');
      ZQuery1.ExecSQL;
     
      ZQuery1.SQL.Clear;
      ZQuery1.SQL.Add('DROP TABLE IF EXISTS `accents` ;');
      ZQuery1.ExecSQL;
     
      ZQuery1.SQL.Clear;
      ZQuery1.SQL.Add('CREATE TABLE `accents` ('+
      '`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,'+
      '`nom` VARCHAR( 5 ) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL ,'+
      'UNIQUE ( `nom` ) ) ENGINE = MYISAM CHARACTER SET utf8 COLLATE utf8_unicode_ci;');
      ZQuery1.ExecSQL;
     
      ZQuery1.SQL.Clear;
      ZQuery1.SQL.Add('INSERT INTO `accents` (`nom`) VALUES ('+QuotedStr('lbc')+');');
      ZQuery1.ExecSQL;
     
      ZQuery1.SQL.Clear;
      ZQuery1.SQL.Add('INSERT INTO `accents` (`nom`) VALUES ('+QuotedStr('lac')+');');
      ZQuery1.ExecSQL;
     
      ZQuery1.SQL.Clear;
      ZQuery1.SQL.Add('INSERT INTO `accents` (`nom`) VALUES ('+QuotedStr('lâc')+');');
      ZQuery1.ExecSQL;
     
      ZQuery1.Close;
      ZQuery1.SQL.Clear;
      ZQuery1.SQL.Add('SELECT `id`, `nom` FROM `accents` ORDER BY `nom` ASC;');
      ZQuery1.Open;
    end;
     
    procedure TForm1.btLATINClick(Sender: TObject);
    begin
      if ZConnection1.Connected then ZConnection1.Disconnect;
      ZConnection1.Connect;
     
      ZQuery1.SQL.Clear;
      ZQuery1.SQL.Add('DROP TABLE IF EXISTS `accents` ;');
      ZQuery1.ExecSQL;
     
      ZQuery1.SQL.Clear;
      ZQuery1.SQL.Add('CREATE TABLE `accents` ('+
      '`id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,'+
      '`nom` VARCHAR( 5 ) NOT NULL ,'+
      'UNIQUE ( `nom`)) '+
      'ENGINE = MYISAM CHARACTER SET latin1 COLLATE latin1_general_ci;');
      ZQuery1.ExecSQL;
     
      ZQuery1.SQL.Clear;
      ZQuery1.SQL.Add('INSERT INTO `accents` (`nom`) VALUES ('+QuotedStr('lbc')+');');
      ZQuery1.ExecSQL;
     
      ZQuery1.SQL.Clear;
      ZQuery1.SQL.Add('INSERT INTO `accents` (`nom`) VALUES ('+QuotedStr('lac')+');');
      ZQuery1.ExecSQL;
     
      ZQuery1.SQL.Clear;
      ZQuery1.SQL.Add('INSERT INTO `accents` (`nom`) VALUES ('+QuotedStr('lâc')+');');
      ZQuery1.ExecSQL;
     
      ZQuery1.Close;
      ZQuery1.SQL.Clear;
      ZQuery1.SQL.Add('SELECT `id`, `nom` FROM `accents` ORDER BY `nom` ASC;');
      ZQuery1.Open;
    end;
    Le code de btUTF8 engendre une erreur : Duplication de clé unique. Pour lui lac et lâc sont identiques. Cela ramène à un vieux message sur ce forum ... alors que le "latin" fonctionne. Comme remarqué dans le message, pas de problème en UTF8 avec Postgresql avec un code adapté aux différences des 2 BDD...

    2. Le "par défaut" utilisé par Chris ne vaut malheureusement que pour un OS. Par exemple sous Linux, si la base est en UTF8, on peut se passer de "ZConnection1.Properties" et de "SET CHARACTER SET `utf8'". Ce qui "prouve" que par défaut, on est en UTF8. Le même code sous Windows génère des problèmes avec les lettres accentuées. Combien de fois ai-je obtenu des résultats différents par un même programme compilé sous Linux et sur Windows accédant sur un poste tierce où mes bases mySQL étaient hébergées. Après avoir pas mal galéré, la solution ".Properties" m'a toujours permis d'accéder à mes données (sauf parfois avec les dbMemo qui ont nécessité un travail supplémentaire). Voilà une raison qui m'amène à penser que la cross-compilation avec Lazarus et au moins hasardeuse... Le jour où Windows sera en UTF8, il faudra réexaminer la situation.

    3. Enfin un petit truc, pour utiliser mySQL sous Nux sur le poste d'un utilisateur de votre programme* alors que le client mySQL n'y est pas installé où n'est pas la bonne version :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    uses
      ..., dl; 
    var
      Form1: TForm1; 
      HandleMysql : THandle; 
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
    HandleMysql:=THandle(dlopen(pchar(IncludeTrailingPathDelimiter(ExtractFilePath(Application.ExeName))+'libmysqlclient.so.15'),RTLD_NOW));
    end;
     
    procedure TForm1.FormDestroy(Sender: TObject);
    begin
      dlclose(HandleMysql);
    end;
    Il suffit de placer votre libmysql.so dans le répertoire du programme...

    Cordialement. Gilles

    *sur un poste de développement, il est toujours nécessaire d'installer mySQL client pour pouvoir utiliser toutes les fonctions de l'IDE...

    Vérifié ce matin sur Lazarus 0.9.31-fpc 2.4.3 (Win&Nux) - Version du client MySQL: 5.0.32
    Dernière modification par Invité ; 24/01/2011 à 11h26. Motif: Précisions

  5. #5
    Membre émérite
    Avatar de chris37
    Homme Profil pro
    Directeur des systèmes d'information
    Inscrit en
    Juillet 2007
    Messages
    378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France

    Informations professionnelles :
    Activité : Directeur des systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 378
    Par défaut
    Merci Gilles,

    Je vais ajouter tes remarques au tutos sur mon site

    Jean luc sera content, il est en pleine reprise vers DVP

    Cordialement,
    Chris

  6. #6
    Membre émérite
    Avatar de Gouyon
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    1 137
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 137
    Billets dans le blog
    5
    Par défaut
    Bravo très bien. Je vais enfin peut être pouvoir régler mon problème d'accents

    Sinon je suis très content de cette mise à jour. Il faudrait d'ailleurs que ce soit le cas pour pas mal d'articles. Je sais c'est beaucoup de boulot mais l'informatique évolue vite et on se retrouve assez souvent avec des articles obsolètes

Discussions similaires

  1. [Lazarus] Utilisation de SynEdit
    Par JoseF dans le forum Lazarus
    Réponses: 3
    Dernier message: 27/07/2007, 12h42
  2. [Lazarus] Problème pour l'utilisation des fichiers
    Par Lulu_n10 dans le forum Lazarus
    Réponses: 7
    Dernier message: 30/03/2007, 16h54
  3. [Lazarus] Utilisation d'images jpeg
    Par lohot dans le forum Lazarus
    Réponses: 1
    Dernier message: 12/02/2007, 23h27
  4. [Lazarus][Linux] Utilisation des composants powerpdf
    Par orion07 dans le forum Lazarus
    Réponses: 1
    Dernier message: 24/01/2007, 11h34
  5. Réponses: 3
    Dernier message: 11/12/2005, 16h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo