Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 14 sur 14
  1. #1
    Expert Confirmé Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    avril 2011
    Messages
    1 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : avril 2011
    Messages : 1 741
    Points : 2 696
    Points
    2 696

    Par défaut SQLite3, Zeos et RichMemo

    Bonjour,

    voilà, j'essaie d'enregistrer dans une base SQLite, un texte mis en forme saisi dans un RichMemo.

    J'utilise les composants ZeosLib (7.0.3), et Lazarus 1.0.4.

    Je n'arrive pas à enregistrer correctement les textes et encore moins à les récupérer.

    Quelqu'un a déjà fait cela ?

    Merci d'avance

    JS
    Citations :
    Le scientifique lira des centaines de livres au cours de sa vie et restera persuadé qu'il lui reste beaucoup à apprendre.
    Un religieux n'en lira qu'un et sera persuadé d'avoir tout compris.

    Il n'est pas de vent favorable pour celui qui ne sait pas où il va. (Sénèque)

  2. #2
    Membre émérite

    Homme Profil pro Gilles
    Enseignant
    Inscrit en
    novembre 2006
    Messages
    917
    Détails du profil
    Informations personnelles :
    Nom : Homme Gilles
    Âge : 55
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : novembre 2006
    Messages : 917
    Points : 987
    Points
    987

    Par défaut

    Bonjour,

    C'est la mise en forme que vous n'arrivez pas à enregistrer ? A restituer dans un (autre) RichMemo après enregistrement et relecture dans la base ? ou cela concerne uniquement le texte contenu dans le RichMemo ? Parce qu'en réalité, il y a 2 problèmes. Si vous voulez afficher votre RichMemo dans une dbGrid (ou une StringGrid), évidemment le texte brut suffit. Mais si après lecture dans la base, vous voulez également l'afficher à nouveau dans un Richmemo, là, il faut enregistrer en plus les attributs du texte ce qui implique l'enregistrement dans de 2 champs différents de votre table. Il faudrait utiliser pour le 2ème champ les fonctions Load/SaveRichText.
    J'ai lu mais pas testé (je ne les utilise plus) que les RichMemo avaient (eu) des problèmes avec l'UTF8 et sous Nux... A regarder de près, même si je suppose que cela a été réglé depuis le temps : http://bugs.freepascal.org/view.php?id=19624

    Cordialement. Gilles

  3. #3
    Expert Confirmé Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    avril 2011
    Messages
    1 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : avril 2011
    Messages : 1 741
    Points : 2 696
    Points
    2 696

    Par défaut

    Tout d'abord merci d'avoir répondu, ensuite mon problème est assez bizarre.

    Après plusieurs recherche il s'avère en fait que c'est l'utilisation des "MemoryStream" qui pose problème.

    Je m'explique. Afin d'enregistrer et lire du texte mis en forme dans une base SQLite j'utilise les possibilités des champs blob et du composant RichMemo de lire et ecrire dans des stream. Afin de ne pas solliciter le disque dur, je suis passé par des MemoryStream. Le problème est que ça ne fonctionne pas. Si je passe par des FileStream, tout roule. Mais, dans ce cas, je dois écrire sur le disque le filestream depuis le champsblob ou depuis le RichMemo pour le lire à nouveau et le mettre soit dans le RichMemo ou dans le champ blob.

    En gros, j'ai les schémas suivants :

    ChampBlob --> fichier temporaire --> RichMemo
    et
    RichMemo --> fichier temporaire --> ChampBlob

    Ça fonctionne, mais ce n'est pas très optimisé au niveau du disque dur.

    Du coup, je me demandais s'il ne serait pas plus simple de faire comme je fais déjà pour les blob images, que je stocke sur le disque dur (dans un dossier spécifique) et dont seul le nom est stocké dans la base...

    JS
    Citations :
    Le scientifique lira des centaines de livres au cours de sa vie et restera persuadé qu'il lui reste beaucoup à apprendre.
    Un religieux n'en lira qu'un et sera persuadé d'avoir tout compris.

    Il n'est pas de vent favorable pour celui qui ne sait pas où il va. (Sénèque)

  4. #4
    Modérateur
    Avatar de tourlourou
    Homme Profil pro Yves Lemaire
    Biologiste ; Progr(amateur)
    Inscrit en
    mars 2005
    Messages
    2 151
    Détails du profil
    Informations personnelles :
    Nom : Homme Yves Lemaire
    Âge : 51
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : mars 2005
    Messages : 2 151
    Points : 4 136
    Points
    4 136

    Par défaut

    Pardon pour cette question, mais as-tu essayé avec des MemoryStream dont tu avais remis la Position à 0 avant de les passer pour lecture ?
    Delphi 5 Pro et Code Typhon 4.41 sous Win 7 64 bits - Code Typhon 4.50 sous Ubuntu 12.04 64 bits (VM)

  5. #5
    Expert Confirmé Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    avril 2011
    Messages
    1 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : avril 2011
    Messages : 1 741
    Points : 2 696
    Points
    2 696

    Par défaut

    A priori, je dirais... non ? Mais plus réellement, ce serait !

    Bref, que veux-tu dire exactement ? Je ne suis pas du tout, mais alors pas du tout, familiarisé avec les stream...
    Citations :
    Le scientifique lira des centaines de livres au cours de sa vie et restera persuadé qu'il lui reste beaucoup à apprendre.
    Un religieux n'en lira qu'un et sera persuadé d'avoir tout compris.

    Il n'est pas de vent favorable pour celui qui ne sait pas où il va. (Sénèque)

  6. #6
    Membre habitué
    Profil pro André Langlet
    Inscrit en
    avril 2010
    Messages
    70
    Détails du profil
    Informations personnelles :
    Nom : André Langlet

    Informations forums :
    Inscription : avril 2010
    Messages : 70
    Points : 115
    Points
    115

    Par défaut

    Bonsoir,

    Les TMemoryStream utilisent un "curseur" qui permet de lire ou d'écrire à partir d'une certaine position identifiée par la propriété MS.position. Souvent après une écriture (WriteToStream par exemple) le curseur est situé en fin du flux. Si on veut lire le flux depuis le début, certaines fonctions nécessitent de repositionner ce curseur au début par
    MS.position:=0 ou par
    MS.seek(0,soFromBeginning)
    sinon le curseur se trouvant à la fin, rien ne sera lu.

    André

  7. #7
    Expert Confirmé Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    avril 2011
    Messages
    1 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : avril 2011
    Messages : 1 741
    Points : 2 696
    Points
    2 696

    Par défaut

    Ah ... Okay !

    Ceci explique peut-être cela alors...

    Je vais refaire des essaies, fort de ces nouvelles informations.


    Merci beaucoup pour ces compléments.

    JS
    Citations :
    Le scientifique lira des centaines de livres au cours de sa vie et restera persuadé qu'il lui reste beaucoup à apprendre.
    Un religieux n'en lira qu'un et sera persuadé d'avoir tout compris.

    Il n'est pas de vent favorable pour celui qui ne sait pas où il va. (Sénèque)

  8. #8
    Expert Confirmé Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    avril 2011
    Messages
    1 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : avril 2011
    Messages : 1 741
    Points : 2 696
    Points
    2 696

    Par défaut

    Cool, ça fonctionne parfaitement.

    Merci à vous tous. Vous êtes mes Maîtres...

    JS
    Citations :
    Le scientifique lira des centaines de livres au cours de sa vie et restera persuadé qu'il lui reste beaucoup à apprendre.
    Un religieux n'en lira qu'un et sera persuadé d'avoir tout compris.

    Il n'est pas de vent favorable pour celui qui ne sait pas où il va. (Sénèque)

  9. #9
    Membre émérite

    Homme Profil pro Gilles
    Enseignant
    Inscrit en
    novembre 2006
    Messages
    917
    Détails du profil
    Informations personnelles :
    Nom : Homme Gilles
    Âge : 55
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : novembre 2006
    Messages : 917
    Points : 987
    Points
    987

    Par défaut

    Bonjour,

    j'avais commencé par quelque chose d'équivalent mais cela ne me parait pas aussi simple que cela. Win et Nux n'utilisent pas toujours les mêmes encodages dans les flux. Donc la portabilité est à vérifier de très près d'autant que si j'ai bien compris la chaine issue du flux est enregistrée dans une table. Mon idée serait de "forcer" vers une ansistring.
    Code :
    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
    {http://stackoverflow.com/questions/732666/converting-tmemorystream-to-string-in-delphi-2009}
    {Ici, sous Win}
    //sRTF : String;  
     
    function StreamToString(aStream: TStream): string;
    var
      SS: TStringStream;
    begin
      if aStream <> nil then
      begin
        SS := TStringStream.Create('');
        try
          SS.CopyFrom(aStream, 0);  // No need to position at 0 nor provide size
          Result := SS.DataString;
        finally
          SS.Free;
        end;
      end else
      begin
        Result := '';
      end;
    end;
     
    procedure TForm1.Button1Click(Sender: TObject);
    var
      ms1 : TMemoryStream;
    begin
      try
        ms1 := TMemoryStream.Create();
        try
          ms1.Seek(0, soFromBeginning);
          RichMemo1.SaveRichText(ms1);
          sRTF := StreamToString(ms1);
          showmessage(sRTF);
        except
          showmessage('Oups');
        end;
      finally
        ms1.Free;
      end;
    end;
     
     
    procedure TForm1.Button2Click(Sender: TObject);
    var
      ms2 : TStringStream;
    begin
      try
        ms2 := TStringStream.Create(sRTF);
        try
          ms2.Seek(0, soFromBeginning);
          RichMemo2.LoadRichText(ms2);
         except
           showmessage('Oups');
          end;
        finally
          ms2.Free;
        end;
    end;
    Voir le lien cité au début du code.

    Sinon en code plus minimaliste, ce code de transfert d'un RichMemo1 à un RichMemo2 par l'intermédiaire de la string sRTF fonctionne :
    Code :
    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
    //sRTF : String; 
    procedure TForm1.Button1Click(Sender: TObject);
    var
      ms1 : TStringStream;
    begin
      try
        ms1 := TStringStream.Create('');
        RichMemo1.SaveRichText(ms1);
        sRTF := ms1.DataString;
        showmessage(sRTF);
      except
        showmessage('Oups');
      end;
      ms1.Free;
    end;
     
     
    procedure TForm1.Button2Click(Sender: TObject);
    var
      ms2 : TStringStream;
    begin
      try
        ms2 := TStringStream.Create(sRTF);
        RichMemo2.LoadRichText(ms2);
      except
        showmessage('Oups');
      end;
      ms2.Free;
    end;
    Cordialement. Gilles

  10. #10
    Expert Confirmé Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    avril 2011
    Messages
    1 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : avril 2011
    Messages : 1 741
    Points : 2 696
    Points
    2 696

    Par défaut

    Gilles,

    mon code est le suivant
    Code :
    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
     
    {rm_Texte est un TRichMemo
    tbl_Texte est une ZeosTable
    tbl_Textemm_Texte est un champ blob }
     
     
    //Procedure pour actualiser le RichMemo lors du déplacement du curseur de //Table
    Procedure Tform1.Tbl_texteafterscroll( Dataset : Tdataset) ;
    Var
      oMS	: TMemoryStream;
     
    Begin
      oMs := TMemoryStream.Create;
      Try
        rm_Texte.Clear;
        Tbl_textemm_texte.SaveToStream( oMS);
        oMs.Position := 0;
        rm_Texte.LoadRichText( oMS);
      Finally
        oMS.Free;
      End;     
    End;
     
    //Procedure pour mettre à jour le champ blob avant le Post.
    Procedure Tform1.Tbl_textebeforepost( Dataset : Tdataset) ;
    Var
      oms	: TMemoryStream;
     
    Begin
      oMs := TMemoryStream.Create;
      Try
        If rm_Texte.SaveRichText( oMS) Then
        Begin
    	    oMs.Position := 0;
      	  Tbl_textemm_texte.LoadFromStream( oMS);
        End;
      Finally
        oMS.Free;
      End;      
    End;
    Le code fonctionne sous Seven 32bit. Je n'ai pas moyen de tester sous Linux pour le moment.
    Citations :
    Le scientifique lira des centaines de livres au cours de sa vie et restera persuadé qu'il lui reste beaucoup à apprendre.
    Un religieux n'en lira qu'un et sera persuadé d'avoir tout compris.

    Il n'est pas de vent favorable pour celui qui ne sait pas où il va. (Sénèque)

  11. #11
    Membre émérite

    Homme Profil pro Gilles
    Enseignant
    Inscrit en
    novembre 2006
    Messages
    917
    Détails du profil
    Informations personnelles :
    Nom : Homme Gilles
    Âge : 55
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : novembre 2006
    Messages : 917
    Points : 987
    Points
    987

    Par défaut

    Je suis à mon lycée cet après-midi. Je testerai les codes à mon retour sur Nux (64) et Win 7 64 en fin d'après-midi.
    Bonne fin de journée. Gilles


    PS : avez-vous terminé vos boutons images ? J'y ai incorporé mes codes (le mode 9 images à la Windev). Mais j'ai un problème de transparence sous Linux avec l'image "du-dessus" si cette dernière est en au format png ou gif avec gestion interne (à l'image) de la transparence. Autrement dit, si une image png ou gif est réalisée en utilisant le "mauve" comme couleur de transparence (canal alpha), le mauve apparaît dans le bouton. Par contre, si j'utilise la bmp qui m'a servi de modèle et que je déclare la couleur mauve comme transparente alors le mauve est bien transparent.
    Le jour où je trouve une bib. graphique "complète" mais pas trop lourde et stable... et documentée... et qui gère pareillement tous ces prob en Win et Nux, je l'étudie.

  12. #12
    Expert Confirmé Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    avril 2011
    Messages
    1 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : avril 2011
    Messages : 1 741
    Points : 2 696
    Points
    2 696

    Par défaut

    Citation Envoyé par selzig Voir le message
    Je suis à mon lycée cet après-midi. Je testerai les codes à mon retour sur Nux (64) et Win 7 64 en fin d'après-midi.
    Bonne fin de journée. Gilles
    Merci d'avance

    Citation Envoyé par selzig Voir le message
    PS : avez-vous terminé vos boutons images ?
    J'ai réalisé un "truc" qui me satisfait pour le moment (bien qu'avec quelques soucis sur la transparence en grisé). Je peux vous envoyer mon "code brouillon" si ça vous dis, pour que vous regardiez. Ça marche sous Seven 32bits.
    Citations :
    Le scientifique lira des centaines de livres au cours de sa vie et restera persuadé qu'il lui reste beaucoup à apprendre.
    Un religieux n'en lira qu'un et sera persuadé d'avoir tout compris.

    Il n'est pas de vent favorable pour celui qui ne sait pas où il va. (Sénèque)

  13. #13
    Membre émérite

    Homme Profil pro Gilles
    Enseignant
    Inscrit en
    novembre 2006
    Messages
    917
    Détails du profil
    Informations personnelles :
    Nom : Homme Gilles
    Âge : 55
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : novembre 2006
    Messages : 917
    Points : 987
    Points
    987

    Par défaut

    Bon alors j'ai commencé les premiers tests.
    Il est nécessaire sous GTK2 d'utiliser le patch suivant pour installer le TRichMemo
    Code :
    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
    Index: gtk2/gtk2richmemo.pas
    ===================================================================
    --- gtk2/gtk2richmemo.pas	(wersja 1314)
    +++ gtk2/gtk2richmemo.pas	(kopia robocza)
    @@ -31,9 +31,9 @@
       // LCL
       LCLType, Controls, Graphics,
       // Gtk2 widget
    -  GtkDef,
    -  GTKWinApiWindow, GtkGlobals, GtkProc, InterfaceBase,
    -  GtkWSControls,
    +  Gtk2Def,
    +  GTK2WinApiWindow, Gtk2Globals, Gtk2Proc, InterfaceBase,
    +  Gtk2WSControls,
       // RichMemo
       WSRichMemo;
     
    @@ -98,7 +98,7 @@
     class procedure TGtk2WSCustomRichMemo.SetCallbacks(
       const AGtkWidget: PGtkWidget; const AWidgetInfo: PWidgetInfo);
     begin
    -   TGtkWSWinControl.SetCallbacks(PGtkObject(AGtkWidget), TComponent(AWidgetInfo^.LCLObject));
    +   TGtk2WSWinControl.SetCallbacks(PGtkObject(AGtkWidget), TComponent(AWidgetInfo^.LCLObject));
     end;
     
     class function TGtk2WSCustomRichMemo.CreateHandle(const AWinControl: TWinControl; const AParams: TCreateParams): TLCLIntfHandle;
    Réf. : http://bugs.freepascal.org/view.php?id=17319

    Pour l'instant, les tests ont l'air plutôt négatifs :la string reste désespérément vide quels que soient nos codes... mais ce qui me semble le plus inquiétant c'est que sans passer par la string, donc en restant avec le Stream, cela ne passe pas non plus.

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    procedure TForm1.Button1Click(Sender: TObject);
    var
      ms1 : TMemoryStream;
    begin
      try
        ms1 := TMemoryStream.Create();
        try
          //ms1.Seek(0, soFromBeginning);
          ms1.Position:= 0;
          RichMemo1.SaveRichText(ms1);
     
          //ms1.Seek(0, soFromBeginning);
           ms1.Position :=0;
           RichMemo2.LoadRichText(ms1);
        except
          showmessage('Oups');
        end;
      finally
        ms1.Free;
      end;
    end;
    Impossible de répliquer le contenu du RichMemo1 dans le RichMemo2 avec ce code... et pas de déclenchement d'exceptions.
    Code :
    1
    2
    3
    RichMemo1.SaveRichText(ms1);
     ms1.Seek(0, soFromBeginning); {ou  ms1.Seek(0, soBeginning) ou ms1.Poistion := 0}
     showmessage(intTostr(ms1.size));
    renvoie 0.

    Cela ne fonctionne pas mieux fonctionner en Win7 64 bits. L'appel RichMemo1.SaveRichText(ms1) renvoie une erreur RichEditWndProc RunError(216). La méthode incriminée semble être la ligne 373 SendMessage(RichEditWnd, EM_STREAMOUT, SF_RTF, LPARAM(@cbs) ); dans
    class function TRichEditManager.SaveRichText(RichEditWnd: Handle; ADst: TStream): Boolean; du fichier Win32RichMemoProc...

    Je m'y prends peut-être mal. Il va falloir prendre contact avec le forum de Lazarus... avec mon "broken english" . Je verrai cela demain. Dites donc Jon Shannow, cela laisse supposer des talents luinguistiques dans la langue de Shakespeare... Je peux faire un petit compte-rendu en français... for translation
    Cordialement. Gilles

  14. #14
    Expert Confirmé Avatar de Jon Shannow
    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    avril 2011
    Messages
    1 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Responsable de service informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : avril 2011
    Messages : 1 741
    Points : 2 696
    Points
    2 696

    Par défaut

    Citation Envoyé par selzig Voir le message
    Bon alors j'ai commencé les premiers tests.
    Il est nécessaire sous GTK2 d'utiliser le patch suivant pour installer le TRichMemo
    S'il n'y a que cela, ce n'est pas très grave...

    Citation Envoyé par selzig Voir le message
    Pour l'instant, les tests ont l'air plutôt négatifs :la string reste désespérément vide quels que soient nos codes... mais ce qui me semble le plus inquiétant c'est que sans passer par la string, donc en restant avec le Stream, cela ne passe pas non plus.
    Ça c'est plus embêtant...


    Citation Envoyé par selzig Voir le message
    Impossible de répliquer le contenu du RichMemo1 dans le RichMemo2 avec ce code... et pas de déclenchement d'exceptions.

    Cela ne fonctionne pas mieux fonctionner en Win7 64 bits. L'appel RichMemo1.SaveRichText(ms1) renvoie une erreur RichEditWndProc RunError(216). La méthode incriminée semble être la ligne 373 SendMessage(RichEditWnd, EM_STREAMOUT, SF_RTF, LPARAM(@cbs) ); dans
    class function TRichEditManager.SaveRichText(RichEditWnd: Handle; ADst: TStream): Boolean; du fichier Win32RichMemoProc...

    Je m'y prends peut-être mal. Il va falloir prendre contact avec le forum de Lazarus... avec mon "broken english" . Je verrai cela demain. Dites donc Jon Shannow, cela laisse supposer des talents luinguistiques dans la langue de Shakespeare... Je peux faire un petit compte-rendu en français... for translation
    Cordialement. Gilles
    Aïe !
    Fort maille innegliche, no problaime. Ail canne rouiatte ouate you tell (guillaume), inn heu parfaicte innegliche.
    Citations :
    Le scientifique lira des centaines de livres au cours de sa vie et restera persuadé qu'il lui reste beaucoup à apprendre.
    Un religieux n'en lira qu'un et sera persuadé d'avoir tout compris.

    Il n'est pas de vent favorable pour celui qui ne sait pas où il va. (Sénèque)

+ Répondre à la discussion
Cette discussion est résolue.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •