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 :

Lister les CharSets d'une font


Sujet :

Lazarus Pascal

  1. #1
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 720
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 720
    Points : 15 106
    Points
    15 106
    Par défaut Lister les CharSets d'une font
    Bonjour,

    Trouvé récemment ce petit bout de code Delphi mais on dirait que j'ai un souci d'énumération, regardez, en haut à gauche mon mémo, et dessous le snippet :
    Nom : charsets.png
Affichages : 641
Taille : 33,5 Ko

    Bon, je n'ai pas essayé avec Arial Narrow Bold (je ne l'ai pas), mais les résultats sont identiques avec Arial, Arial Bold, Arial Rounded MT Bold et GNUtypewriter.

    Alors bien sûr il m'a fallu adapter, en espérant que je ne casse pas quelque chose :
    La proc de callback :
    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
    function EnumCharSets(
      var LogFont: TEnumLogFontEx;
      var Metric: TNewTextMetricEx;
      FontType: Longint;
      //Strings: TStrings): Integer; stdcall; -- original mais ne compile pas
      Data: LParam):LongInt; stdcall;
    var
      L: TStringList;
      S: String;
      I: Integer;
      ID: Integer;
    begin
      L  := TStringList(ptrint(Data));
      ID := LogFont.elfLogFont.lfCharSet;
      S  := Format('Unknown charset %d', [ID]);
      for I := 0 to NumCharSets - 1 do
        if CharSets[I].ID = ID then
        begin
          S := CharSets[I].Name;
          Break;
        end;
      L.Add(S);
    //  Strings.Add(S); -- original
      result := 1;
    end;
    et son appel :
    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
    procedure TForm1.GetAvailableCharSets(const FaceName: string; CharSets: TStrings);
    var
      DC: THandle;
      LogFont: TLogFont;
    ////EDIT : sert à rien !  L: TStringList; // nouveau, inspiré d'un post sur FreePascal *
    begin
    ////  L := TStringList.Create; // nouveau
    //  DC := GetDC(GetDesktopWindow); -- proc inconnue sous Linux
      DC := GetDC(0);
      if DC <> 0 then
        try
          FillChar(LogFont, SizeOf(LogFont), 0);
          Move(FaceName[1], LogFont.lfFaceName, Length(FaceName));
          LogFont.lfCharSet := DEFAULT_CHARSET;
          EnumFontFamiliesEx(DC, @LogFont, @EnumProc, ptrint(lParam(CharSets)), 0); // changé sinon ne compile pas (ajout "ptrint")
    ////sert à rien !      CharSets.AddStrings(L); // ajout pour renvoyer les données au mémo
        finally
    //      ReleaseDC(GetDesktopWindow, DC)
          ReleaseDC(0, DC)
        end
    end;
    Le problème, c'est qu'il est impossible de jouer en mode pas-à-pas avec une proc de callback, à chaque entrée le i du compteur de boucle est à 0...

    Merci pour le coup de main,

    ---
    * : http://forum.lazarus.freepascal.org/...?topic=20193.0
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  2. #2
    Expert éminent
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    3 947
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 947
    Points : 9 275
    Points
    9 275
    Par défaut
    hello,
    Jipété ce n'est pas la peine de réinventer la roue, dans Lazarus il y a un exemple qui te liste toutes les polices avec leurs CHARSET :
    lazarus\examples\fontenum

    Nom : Polices-Lazarus.png
Affichages : 691
Taille : 69,4 Ko

    Ami calmant, J.P (sans T)
    Jurassic computer : Sinclair ZX81 - Zilog Z80A à 3,25 MHz - RAM 1 Ko - ROM 8 Ko

  3. #3
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 720
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 720
    Points : 15 106
    Points
    15 106
    Par défaut
    Salut JP,
    Citation Envoyé par jurassic pork Voir le message
    hello,
    Jipété ce n'est pas la peine de réinventer la roue, dans Lazarus il y a un exemple qui te liste toutes les polices avec leurs CHARSET :
    lazarus\examples\fontenum
    Je n'ai jamais rien compris à cet exemple (que je connaissais), dans la mesure où je le trouve contre-intuitif, sans aucune explication, et je n'ai jamais capté pourquoi je pouvais toujours cliquer dans la liste des styles, je ne voyais jamais sa prise en compte dans la grille du bas.
    Jamais !
    Lié à Linux ? À ma vieille version de Lazarus ? Pourtant, il me semble que cet exemple était déjà là en 0.9 et j'ose espérer que les gens qui proposent des exemples les ont au moins vu fonctionner dans un environnement.

    (c'est d'ailleurs ce qu'on pourrait reprocher au dossier examples de Laz : l'absence d'une information nous disant clairement dans quel contexte il est opérationnel)

    Ensuite, recopier bêtement un exemple n'est pas très satisfaisant intellectuellement, je préfère me battre avec un bout de code pour bien le maîtriser.

    Bon, je note que sur ta copie d'écran tu nous annonces être à la tête de 342 polices, ouch !
    Ça va, l'ascenseur, quand tu as un document à rédiger avec un traitement de textes ?

    D'où l'idée qui me trotte dans la tête d'essayer d'organiser tout ça, et même s'il existe déjà des organiseurs, je n'ai pas trouvé mon bonheur dans les paquets dispo -- il y aurait bien FontMatrix, la copie d'écran est alléchante mais ça doit être une vieille version car une fois installé et lancé, ça ne lui ressemble pas du tout...

    Bref, j'ai la nécessité le besoin l'envie d'essayer de comprendre un peu tout ça, tout en sachant que même gucharmap (pour Gnome) et KCharSelect (pour Kde) ne sont pas fichus d'afficher les mêmes informations pour la même police en examen !
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  4. #4
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 720
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 720
    Points : 15 106
    Points
    15 106
    Par défaut
    Ah, pendant qu'on y est, il y a cet exemple, aussi, que j'aurais bien aimé voir fonctionner ; je ne montre que les changements pour pouvoir compiler (parce que ça aussi, c'est la misère) :

    original :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function EnumProc2(var elf: TEnumLogFont;
      var ntm: TNewTextmetric;
      FontType: Integer;
      listbox: TListbox): Integer; stdcall;
    var
      S: string;
    begin
      if fonttype = TRUETYPE_FONTTYPE then
    ma manière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function EnumProc2(var elf: TEnumLogFont;
      var ntm: TNewTextmetric;
      FontType: Integer;
    //  listbox: TListbox): Integer; stdcall;
      Data: lParam): Integer; stdcall; // nouveau
    var
      S: string;
      listbox: TListbox; // nouveau
    begin
      listbox:= TListbox(ptrint(Data)); // nouveau
      if fonttype = TRUETYPE_FONTTYPE then
    Et le résultat est désespérément vide...
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  5. #5
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 720
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 720
    Points : 15 106
    Points
    15 106
    Par défaut
    Bonsoir,

    je suis épuisé et je n'arrive plus à réfléchir...

    Face à un bout de code de 5 lignes environ, je me suis dit "allez, tant pis, je vais leur foutre les boules, qu'ils comprennent ma misère" et donc, étant tombé sur cette page avec un gros titre D7 et bien sûr le bout de code, après grosses misères pour le faire compiler, ne donnant rien de chez rien, j'ai démarré mon vieux couple win2k/D7 et là, en 30 secondes (le temps de corriger les bidouilles lazariennes et retrouver le code original), voilà le résultat :

    Nom : enumfonts_d7.png
Affichages : 535
Taille : 20,8 Ko

    Vous voulez le code pour essayer ?
    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
    function EnumFontClBack(var lp: TEnumLogFont;
      var tm: TNewTextMetric;
      dwType: LongInt;//DWORD; -- la SEULE chose changée par rapport au site - on notera qu'en D7 pas de problème à retourner à l'origine.
      lpData: lParam): Integer; stdcall;
    begin
      Result := 1;
      with TForm1(lpData), Combobox1 do
      begin
        Items.Add(lp.elfLogFont.lfFaceName);
      end;
    end;
     
    procedure TForm1.FormShow(Sender: TObject);
    var
      DC: THandle;
    begin
      DC := GetDC(0);
      if DC <> 0 then begin
        //EnumFontFamilies(Canvas.Handle, nil, @EnumFontClBack, Integer(Self)); // ligne d'origine toute seule
        EnumFontFamilies(DC, nil, @EnumFontClBack, Integer(Self));
        ReleaseDC(0, DC)
      end;
    end;
     
    procedure TForm1.ComboBox1Change(Sender: TObject);
    begin
      label1.Font.Name := Combobox1.Text;
    end;
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  6. #6
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 720
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 720
    Points : 15 106
    Points
    15 106
    Par défaut
    Bonjour,

    (attention c'est du lourd)

    Quand je pense au temps que j'ai perdu sur cette affaire alors que dès le début ça ne pouvait pas fonctionner, ne vous étonnez pas que je haïsse les guignols qui codent ce genre d'EDI avec zéro doc intelligente derrière !

    Quoi quoi, je suis en colère ce matin ? Un peu mon neveu !
    Je me souvenais avoir lu, dans les premiers bouts de code fournis, le commentaire suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      //lf.lfPitchAndFamily := 0;  //Set this to FIXED_PITCH on Linux/GTK2
      lf.lfPitchAndFamily := FIXED_PITCH; // et donc voilà
    Nota : rien pour nous prévenir, dans le code du dossier "examples/fontenum", merci les guignols !

    Donc j'ai tenté en le rajoutant aux 5 misérables lignes présentées hier soir, et pas mieux : aucun résultat, combobox vide

    J'en ai eu marre, j'ai démarré la machine virtuelle XP avec la 1.6rc1 et là, le strict code Delphi (mise à part la microscopique correction dwType: LongInt;// DWORD; sinon pas de compilation) fonctionne tip-top ! Revoir le post précédent pour le code et le lien.

    C'est donc encore un problème de widgetset ou que sais-je d'autre sous Linux !

    Et rien, rien, rien nulle part pour l'indiquer ! Je les hais !

    Ah lala, si je pouvais jeter ce Lazarus et le remplacer par quelque chose d'opérationnel ou à tout le moins, de bien documenté, qu'est-ce que je serais content...

    Et ils ont pas honte d'écrire ça, là :
    LCLIntf is a Lazarus unit that provides compatibility with Delphi in a cross-platform way.
    Parce que hier soir à pas d'heure je lisais encore ici les instructions pour pouvoir manipuler ces structures sans rien pour m'indiquer que j'allais dans le mur...
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  7. #7
    Expert confirmé
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Points : 4 346
    Points
    4 346
    Billets dans le blog
    2
    Par défaut
    Salut que de misères, juste un petit truc dans :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Function EnumFontClBack(var lp: TEnumLogFont;
      var tm: TNewTextMetric;
      dwType: LongInt;//DWORD; -- la SEULE chose changée par rapport au site - on notera qu'en D7 pas de problème à retourner à l'origine.
      lpData: lParam): Integer; stdcall;
    De mémoire, a la place de stdCall cela ne serai pas plutôt cdecl sous Linux ?
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  8. #8
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 720
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 720
    Points : 15 106
    Points
    15 106
    Par défaut
    :coucou;
    Citation Envoyé par BeanzMaster Voir le message
    juste un petit truc dans :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Function EnumFontClBack(var lp: TEnumLogFont;
      var tm: TNewTextMetric;
      dwType: LongInt;//DWORD; -- la SEULE chose changée par rapport au site - on notera qu'en D7 pas de problème à retourner à l'origine.
      lpData: lParam): Integer; stdcall;
    De mémoire, à la place de stdCall cela ne serait pas plutôt cdecl sous Linux ?
    Je viens de tester, l'erreur apparaît au niveau de l'appel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EnumFontFamilies(DC, nil, @EnumFontClBack, Integer(Self));
    le curseur clignote au bout de @EnumFontClBack avec l'erreur
    Error: Incompatible type for arg no. 3:
    Got "<address of function
    (var tagENUMLOGFONTA,var TNewTextMetric,LongInt,LPARAM):LongInt;CDecl>",
    expected "<procedure variable type of function
    (var tagENUMLOGFONTA,var TNewTextMetric,LongInt,LPARAM):LongInt;StdCall>"
    J'en conclus que l'animal veut un stdcall !

    Citation Envoyé par BeanzMaster Voir le message
    Salut que de misères,
    La plus grosse étant que je ne vais pas pouvoir bosser sur les fonts comme je l'aurais voulu (et comme je l'aurais pu en restant dans le monde Windows, )
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  9. #9
    Expert confirmé
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Points : 4 346
    Points
    4 346
    Billets dans le blog
    2
    Par défaut
    Je ne sais pas si cela pourras t'aider dans l'exemple cité par J.P (sans T) dans laz1.8rc4 j'ai ça

    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
    function EnumFontsNoDups(
      var LogFont: TEnumLogFontEx;
      var Metric: TNewTextMetricEx;
      FontType: Longint;
      Data: LParam):LongInt; stdcall;
    var
      L: TStringList;
      S: String;
    begin
      L := TStringList(ptrint(Data));
      S := LogFont.elfLogFont.lfFaceName;
      if L.IndexOf(S)<0 then
        L.Add(S);
      result := 1;
    end;  
     
     
    procedure TfrmMain.LoadFontList;
    var
      DC: HDC;
      lf: TLogFont;
      L: TStringList;
      i: Integer;
    begin
      // this could be have done also with screen.fonts
      // but here, we have the list filtered by Charset
      lf.lfCharSet := GetCharSet;
      lf.lfFaceName := '';
      case cbPitch.ItemIndex of
        1: i:=FIXED_PITCH;
        2: i:=VARIABLE_PITCH;
        3: i:=MONO_FONT;
        else
          i:=DEFAULT_PITCH;
      end;
      lf.lfPitchAndFamily := i;
     
      {$ifdef debug}
      debugln('LoadFontList: for charset=',CharSetToString(lf.lfcharset));
      {$endif}
     
      L := TStringList.create;
      lbStyles.Clear;
      lbCharset.Clear;
      lbSizes.Clear;
     
      DC := GetDC(0);
      EnableEvents(False, lbFamily);
      try
        StartTimer;
        EnumFontFamiliesEX(DC, @lf, @EnumFontsNoDups, ptrint(L), 0);
        EndTimer;
        L.Sort;
        lbFamily.Items.Assign(L);
        lbFamily.Itemindex := -1;
     
        RestoreSelection(lbFamily);
        if lbFamily.ItemIndex<0 then begin
          if lbFamily.Items.Count>0 then
            lbFamily.ItemIndex := 0;
        end;
        LoadFamilyFonts(-1);
     
        Label4.Caption := format('Fontfaces, found %d, %d ms',[lbFamily.Items.Count, FTime]);
      finally
        EnableEvents(True, lbFamily);
        ReleaseDC(0, DC);
        L.Free;
      end;
    end;
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  10. #10
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 720
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 720
    Points : 15 106
    Points
    15 106
    Par défaut
    Citation Envoyé par BeanzMaster Voir le message
    dans laz1.8rc4 j'ai ça
    T'as vu, ils ont sorti une rc5, pouhhh, je tremble...

    Citation Envoyé par BeanzMaster Voir le message
    dans l'exemple cité par J.P (sans T) dans laz1.8rc4 j'ai ça
    Oui, c'est l'exemple du dossier Fontenum. tu sais que pendant mes recherches je suis tombé sur des posts où le gars expliquait qu'il ne comprenait rien à cette ihm (comme moi), dont il ne comprend pas le fonctionnement (comme moi), et qu'il ne sait pas par quel bout prendre pour comprendre comment ça fonctionne -- comme moi.

    À quoi je rajouterai que lorsque j'arrive à faire réagir la grille de texte, en bas, c'est toujours en "regular" : je n'y ai jamais vu "bold" ou "italic".

    Citation Envoyé par BeanzMaster Voir le message
    Je ne sais pas si cela pourra t'aider
    Ce qui m'aiderait ça serait que quelqu'un sous Linux et Qt me dise comment se comporte le minuscule et fonctionnel bout de code Delphi que j'ai posté en dernier.
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  11. #11
    Expert confirmé
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Points : 4 346
    Points
    4 346
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Jipété Voir le message
    T'as vu, ils ont sorti une rc5, pouhhh, je tremble...
    Oui, mais je vais attendre la 1.8 definitive, pas envie de me prendre la tête à tout reconfigurer. Surtout que les correction sont mineures (sous window). la RC4 me suffit pour le moment.


    Citation Envoyé par Jipété Voir le message
    Oui, c'est l'exemple du dossier Fontenum. tu sais que pendant mes recherches je suis tombé sur des posts où le gars expliquait qu'il ne comprenait rien à cette ihm (comme moi), dont il ne comprend pas le fonctionnement (comme moi), et qu'il ne sait pas par quel bout prendre pour comprendre comment ça fonctionne -- comme moi.

    À quoi je rajouterai que lorsque j'arrive à faire réagir la grille de texte, en bas, c'est toujours en "regular" : je n'y ai jamais vu "bold" ou "italic".


    Ce qui m'aiderait ça serait que quelqu'un sous Linux et Qt me dise comment se comporte le minuscule et fonctionnel bout de code Delphi que j'ai posté en dernier.
    J'ai regardé, un peu plus, ils n'ont pas choisis le chemin le plus simple. Il y a trop de StringList "externe" utilisées pour charger tout se fourbit dans les listBox. On s'y perd vite
    Pour les styles d'après ce que j'ai pu comprendre il faut que soient des polices TTF. Mais idem certain style on un affichage anarchique comme "Bold-Italic"
    Pour récurer les polices vaut mieux passer par Screen.Fonts, c'est le plus simple, mais celle-ci ne sont pas filtrées par "CharSet"

    En ce moment, je bloque sur un problème similaire pour récupérer les nom de famille avec LazFreeType. Du coup cela m'interesse. Mais bon je verrais ça plus tard à mon avis.
    Là je suis sur le traçage d'ellipses avec une épaisseur de plus de 1 pixel
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  12. #12
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 720
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 720
    Points : 15 106
    Points
    15 106
    Par défaut
    Citation Envoyé par BeanzMaster Voir le message
    Oui, mais je vais attendre la 1.8 definitive, pas envie de me prendre la tête à tout reconfigurer. Surtout que les correction sont mineures (sous Windows).
    Et moi je peux toujours attendre...


    Citation Envoyé par BeanzMaster Voir le message
    J'ai regardé, un peu plus, ils n'ont pas choisi le chemin le plus simple. Il y a trop de StringList "externe" utilisées pour charger tout ce fourbi dans les listBox. On s'y perd vite
    C'est bien ce que j'ai ressenti aussi...

    Citation Envoyé par BeanzMaster Voir le message
    Pour les styles d'après ce que j'ai pu comprendre il faut que soient des polices TTF. Mais idem certains styles ont un affichage anarchique comme "Bold-Italic"
    Pour éviter les soucis, oui, je suis avec des TTF.
    Bold-Italic, non non, c'est prévu, j'ai l'impression que ça vient de traductions un peu bizarres, j'ai pu rencontrer Italic comme Italique, Bold comme Gras, et un mélange des quatre, mais ça fonctionne.
    Par exemple, regarde Arial Rounded MT Bold :
    Nom : fontdialog.png
Affichages : 517
Taille : 28,7 Ko

    Mais bon, quand on compare cette boîte de dialogue avec celle de LibreOffice, on est à des années-lumière en dessous de la barre, complètement à la rue...

    Citation Envoyé par BeanzMaster Voir le message
    Pour récurer les polices vaut mieux passer par Screen.Fonts, c'est le plus simple, mais celles-ci ne sont pas filtrées par "CharSet"
    Récurons, récurons, on finira bien par passer à travers
    Sinon, Screen.Fonts je suis dessus depuis ce matin et on ne peut quasiment rien faire avec, les choses qui m'intéressent sont dans la partie inaccessible (mais je n'ai pas dit mon dernier mot, faudra que j'y retourne).

    Citation Envoyé par BeanzMaster Voir le message
    En ce moment, je bloque sur un problème similaire pour récupérer les nom de famille avec LazFreeType. Du coup cela m'interesse. Mais bon je verrai ça plus tard à mon avis.
    Là je suis sur le traçage d'ellipses avec une épaisseur de plus de 1 pixel
    Bon courage,

    -----
    Allez, pour se détendre, je vais vous faire rire -- c'est tout frais, c'est tombé ce matin, je comptais le poster tout seul, mais l'occasion fait le larron :

    Toujours en étant en train de faire des recherches sur les polices, je me suis retrouvé à vouloir jouer avec GetPropInfos et les choses amusantes qui se cachent dans TypeInfo.

    Si vous n'avez rien à faire, c'est un excellent moyen de perdre son temps car à l'arrivée, on se demande vraiment dans quel bourbier on se fourvoie...

    Qu'on en juge :

    l'aide de GetPropList se trouve aussi sur le web (et heureusement parce qu'essayer de copier/coller depuis l'aide de Lazarus, non mais allô quoi, laisse tomber ! Un mot ça va, plusieurs lignes bonjour les dégâts !), donc d'entrée de jeu ça ne compile pas, le bouzin ne trouve pas rttiobj, inscrit dans les uses. Ils les testent, leurs exemples ?

    Je le mets en commentaire histoire d'avancer, et c'est plus loin qu'un autre truc n'est pas trouvé, le TypeNames là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     writeln('  Type: ', TypeNames[typinfo.PropType(O, Name)]);
    Alors je google et je trouve une unité qui le propose, hop ! copier/coller des six lignes qui m'intéressent, F9 et paf !
    Error: Expected another 4 array elements


    Mais le truc dément c'est que TTYpeKind est connu, donc clic dessus, F1, et je découvre une liste de 30 éléments !
    Sur le site il n'y en a que 23, j'en rajoute 4 pris dans la liste de l'aide et tout le monde est content.

    Sauf moi, qui ne comprends rien à tout ce foutoir : 23 éléments dans l'array du fichier (j'ai vérifié dans fpcsrc, c'est pareil), le compilo qui en veut 4 de plus et l'aide qui en propose 30, allez comprendre...
    Pour un exemple sensé nous aider à avancer, ben mon gars, y a du chemin...

    Ah, sous Linux on a un outil sympathique pour trouver un fichier et son emplacement, c'est locate, alors j'ai testé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    # locate rttiobj
    # locate rttiobj.pas
    # locate rttiobj.pp
    # locate rttiobj.inc
    et à chaque fois rien en retour. Ça existe encore, ce machin ?

    En résumé, l'aide est impraticable (on le savait déjà), fausse (on le découvre de temps en temps), et quand on arrive à faire fonctionner le machin, on se rend compte qu'avec tout ça on ne va pas bien loin...
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  13. #13
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 720
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 720
    Points : 15 106
    Points
    15 106
    Par défaut
    Salut,

    un petit point rapide :


    j'ai réexaminé tous mes codes d'exemples, de tests, mes docs, etc. et au final, une constatation s'impose :

    je n'arrive à rien sous Linux/Gtk2 avec EnumFontFamilies, et c'est sans doute pourquoi le code ultra simple de D7 ne fonctionne pas, tout comme d'autres plus sophistiqués.

    Par contre, je commence à obtenir des résultats avec EnumFontFamiliesEx.

    Et bien sûr cette information n'est donnée nulle part !
    Ni dans l'aide, ni dans les wikis, ni dans les exemples, à croire que les choses sont testées sous Windows seulement et pour les autres, dém...dez-vous !

    Alors, au cas où un jour quelqu'un tomberait sur cette discussion, la version Linux du prog D7 (notez les "Ex" rajoutés par ci par là) :

    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
    function EnumFontClBackEx(var lp: TEnumLogFontEx;
      var tm: TNewTextMetricEx;
      dwType: LongInt;//DWORD;
      lpData: lParam): Integer; stdcall;
    begin
      with TForm1(lpData), Combobox1 do
        Items.Add(lp.elfLogFont.lfFaceName);
      Result := 1;
    end;
     
    procedure TForm1.FormShow(Sender: TObject);
    var
      DC: THandle;
      LogFont: TLogFont;
    begin
      // /!\ il FAUT ces 3 lignes sinon liste vide /!\
      LogFont.lfFaceName := '';
      LogFont.lfCharSet := DEFAULT_CHARSET;
      LogFont.lfPitchAndFamily := 0;
      //lfPitchAndFamily -- Must be set to zero for all language versions of the operating system.
      // trouvé ce commentaire un jour qqpart, il me suit de code en code,
      // de prog en prog, il faudrait faire des tests plus poussés...
      DC := GetDC(0);
      if DC <> 0 then begin
        //EnumFontFamilies(Canvas.Handle, nil, @EnumFontClBack, Integer(Self));
        //EnumFontFamilies(DC, nil, @EnumFontClBack, Integer(Self));
        // Combobox vide si pas "Ex" et LogFont -- dessus ok sous D7, dessous ok sous Linux pas testé sous D7
        EnumFontFamiliesEx(DC, @LogFont, @EnumFontClBackEx, Integer(Self), 0);
        ReleaseDC(0, DC)
      end;
    end;
    (je n'ai pas mis la proc EnumFontClBack pour ne pas alourdir, voir mon post d'il y a deux jours en cas de besoin.)
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  14. #14
    Expert confirmé
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Points : 4 346
    Points
    4 346
    Billets dans le blog
    2
    Par défaut
    Salut je viens de tester ton petit bout code :
    Juste une chose

    j'ai remplacé EnumFontFamiliesEx(DC, @LogFont, @EnumFontClBackEx, Integer(Self), 0);par EnumFontFamiliesEx(DC, @LogFont, @EnumFontClBackEx, PtrInt(Self), 0);et pour infos pour ceux qui passe par là il faut mettre LCLType et LCLIntf dans les uses

    Par contre cela me donne des duplicatas, c'est pareil chez toi ?

    Nom : 2017-10-19_153607.jpg
Affichages : 456
Taille : 18,2 Ko


    EDIT : Pour éviter les duplicatas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function EnumFontClBackEx(var lp: TEnumLogFontEx; var tm: TNewTextMetricEx; dwType: LongInt; lpData: lParam): Integer; stdcall;
    Var
      S:String;
    begin
      with TForm1(lpData),ListBox1 do
      begin
         S:=lp.elfLogFont.lfFaceName;
         if Items.IndexOf(S)<0 then Items.Add(S);
      End;
      Result := 1;
    end;
    REEDIT : En faisant une recherche pour autre chose je viens de tombé là dessus
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  15. #15
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 720
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 720
    Points : 15 106
    Points
    15 106
    Par défaut
    Yep !

    Citation Envoyé par BeanzMaster Voir le message
    Salut je viens de tester ton petit bout code :
    Juste une chose

    j'ai remplacé EnumFontFamiliesEx(DC, @LogFont, @EnumFontClBackEx, Integer(Self), 0);par EnumFontFamiliesEx(DC, @LogFont, @EnumFontClBackEx, PtrInt(Self), 0);et pour infos pour ceux qui passe par là il faut mettre LCLType et LCLIntf dans les uses

    Par contre cela me donne des duplicatas, c'est pareil chez toi ?
    T'as remarqué que ton lien nous parle d'une fonction de CallBack nommée ...NoDup[licate]s , ? ! C'est pas pour rien, àmha.
    Alors ce qui est curieux c'est que, non, je n'ai pas de duplicatas (je te rassure : j'en ai eu aussi, mais je n'arrive plus à reproduire le bug) et pourtant je n'utilise pas ce test if blabla <0 then, ah mon bon monsieur, les joies et les mystères de l'informatique !
    Parce que ce que j'ai posté c'est simplement un copier/coller de ce qui tourne sans souci...

    Citation Envoyé par BeanzMaster Voir le message
    REEDIT : En faisant une recherche pour autre chose je viens de tomber là-dessus
    Oui, j'avais déjà vu cette discussion (j'en ai vu tellement...).
    Quand je pense que le gars il annonçait 500 et quelques polices, mais comment fait-il pour travailler correctement ? C'est un truc à devenir fou, si ça n'est pas géré en amont (install à la demande -- il existe des gestionnaires pour ça, je n'y ai jamais trouvé mon bonheur -- bah...)

    Alors puisque c'était cité dans ton lien, oui, je travaille aussi avec Screen.Fonts maintenant, c'est reposant,
    Et je suis content de voir que la première procédure qu'il donne inclut les trois lignes que j'ai notées comme obligatoires suite à essais/échecs-et-on-recommence.
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  16. #16
    Membre éprouvé Avatar de der§en
    Homme Profil pro
    Chambord
    Inscrit en
    Septembre 2005
    Messages
    762
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Chambord
    Secteur : Transports

    Informations forums :
    Inscription : Septembre 2005
    Messages : 762
    Points : 957
    Points
    957
    Par défaut
    Juste pour le fun, sous Firemonkey, sous Xe8 j’arrivait a écrire des caractères de la police Windings avec les fonctions du Canvas d’un bitmap et depuis soit une MAJ de Windows 10 ou le passage à Delphi Tokyo, plus rien ! ! !

    Il n’y a pas que Lazarus qui a du mal avec les fonts…

  17. #17
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 720
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 720
    Points : 15 106
    Points
    15 106
    Par défaut
    Citation Envoyé par der§en Voir le message
    Juste pour le fun, sous Firemonkey, sous Xe8 j’arrivait a écrire des caractères de la police Windings avec les fonctions du Canvas d’un bitmap et depuis soit une MAJ de Windows 10 ou le passage à Delphi Tokyo, plus rien ! ! !

    Il n’y a pas que Lazarus qui a du mal avec les fonts…
    Et pourtant, depuis le temps qu'elle existe, celle-là ! P'têt bien depuis 3.1, ce qui ne nous rajeunit pas !

    Ce qui est bizarre dans ton histoire, c'est que du point de vue du canvas du bitmap, que ça soit wingding ou arial ou n'importe quelle autre, c'est pareil.

    Ou alors c'est une histoire d'Unicode.
    Voilà ce que je gagne quand j'essaye de l'examiner avec ce petit outil trouvé qqpart sur le web :

    Nom : ttv.png
Affichages : 588
Taille : 16,2 Ko

    Si j'ouvre Arial ou d'autres, pas de souci.

    Peut-être que ton code ne veut que de l'Unicode ?

    Tiens-nous au courant, c'est intéressant.
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  18. #18
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 720
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 720
    Points : 15 106
    Points
    15 106
    Par défaut
    Bonjour,

    je ressuscite ce vieux truc car j'ai besoin d'accéder à des fichiers contenant des fontes, et il sont où, ces fichiers ? Mystère...

    J'ai tenté d'utiliser ce post, mais je ne suis pas sorti de l'auberge car selon la police choisie, c'est le SIGSEGV et impossible à débugger en pas à pas...

    Citation Envoyé par jurassic pork Voir le message
    Jipété ce n'est pas la peine de réinventer la roue, dans Lazarus il y a un exemple qui te liste toutes les polices avec leurs CHARSET :
    lazarus\examples\fontenum

    Nom : Polices-Lazarus.png
Affichages : 691
Taille : 69,4 Ko
    Ah ben nan, ça me liste des fonts que LibreOffice ne voit pas, et LibreOffice m'en affiche certaines que FontEnum n'énumère pas...
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  19. #19
    Membre confirmé

    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2012
    Messages : 170
    Points : 455
    Points
    455
    Par défaut
    Bonjour Jipété,

    J'ai trouvé ça.

    A mon avis, tes soucis avec la manipulation des fontes ne font que débuter, parce qu'il y a à la fois l'émulation de la fonction EnumFontFamiliesEX dans le widgetset GTK et le comportement de l'OS qui peut différer ce celui de Windows, et peut être même entre versions du sous-système graphique...

    bb

  20. #20
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 720
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 720
    Points : 15 106
    Points
    15 106
    Par défaut
    Re-bonjour,

    pas le temps de voir ça aujourd'hui, je me penche dessus demain ou après-demain...

    Merci à toi,
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

Discussions similaires

  1. [Debutant] Lister les tables d'une base de données
    Par Konrad Florczak dans le forum Langage SQL
    Réponses: 2
    Dernier message: 06/07/2005, 16h24
  2. Lister les tables d'une base
    Par pg_user dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 13/05/2005, 10h41
  3. [reseaux] Lister les processus sur une machine donnée
    Par BEAUJAULT dans le forum Programmation et administration système
    Réponses: 2
    Dernier message: 29/07/2004, 15h55
  4. [ODBC] Intranet en PHP : Lister les tables d'une base Access
    Par fblouet dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 28/10/2003, 14h46
  5. Lister les tables d'une Base
    Par YanK dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 08/10/2003, 10h40

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