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 :

Problème de tri d'un worksheet dans l'environnement Ubuntu [Lazarus]


Sujet :

Lazarus Pascal

  1. #1
    Membre régulier
    Homme Profil pro
    retraité informaticien
    Inscrit en
    Novembre 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : retraité informaticien

    Informations forums :
    Inscription : Novembre 2008
    Messages : 90
    Points : 75
    Points
    75
    Par défaut Problème de tri d'un worksheet dans l'environnement Ubuntu
    Bonsoir à tous.

    Je bute sur un problème de tri avec une clé comportant des espaces.

    Pour faire court je joint un source le plus expurgé possible.

    la définition de la Form :
    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
     
    object Fsortdemo: TFsortdemo
      Left = 708
      Height = 302
      Top = 273
      Width = 383
      Caption = 'sortdemo'
      ClientHeight = 302
      ClientWidth = 383
      LCLVersion = '2.2.0.4'
      object BtnLoad: TButton
        Left = 0
        Height = 25
        Top = 0
        Width = 75
        Caption = 'Load'
        OnClick = BtnLoadClick
        TabOrder = 1
      end
      object BtnSort: TButton
        Left = 8
        Height = 25
        Top = 32
        Width = 75
        Caption = 'Sort'
        OnClick = BtnSortClick
        TabOrder = 0
      end
      object ws: TsWorksheetGrid
        Left = 120
        Height = 240
        Top = 16
        Width = 200
        FrozenCols = 0
        FrozenRows = 0
        PageBreakPen.Color = clBlue
        PageBreakPen.Style = psDash
        ReadFormulas = False
        WorkbookSource = wb
        AutoAdvance = aaDown
        DefaultColWidth = 64
        DefaultRowHeight = 24
        TabOrder = 2
      end
      object wb: TsWorkbookSource
        AutoDetectFormat = False
        FileFormat = sfUser
        Options = []
        Left = 24
        Top = 88
      end
    end
    le code
    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
     
    unit usortdemo;
     
    {$mode objfpc}{$H+}
     
    interface
     
    uses
      Classes, SysUtils, Forms, Controls, Graphics,
      ExtCtrls, Menus, ComCtrls, StdCtrls,
      fpspreadsheetctrls,
      fpsTypes,
      fpsutils,
      fpspreadsheet,
      fpspreadsheetgrid;
     
    type
      { TFsortdemo }
      TFsortdemo = class(TForm)
        BtnLoad: TButton;
        BtnSort: TButton;
        ws: TsWorksheetGrid;
        wb: TsWorkbookSource;
      procedure BtnLoadClick(Sender: TObject);
      procedure BtnSortClick(Sender: TObject);
     
      private
      public
    end;
     
    var
      Fsortdemo: TFsortdemo;
     
    implementation
     
    {$R *.lfm}
    { TFsortdemo }
     
    var
      sortParams: TsSortParams;
     
    procedure TFsortdemo.BtnLoadClick(Sender: TObject);
    var
      str1, str2, str3, str4, str5, str6 : string;
     
    begin
      str1 := 'A Huit';
      str2 := 'ACinq';
      str3 := 'ANeuf';
      str4 := 'xA Huit';
      str5 := 'xACinq';
      str6 := 'xANeuf';
     
      // chargement manuel du Worksheet
      wb.Worksheet.Clear;
      wb.Worksheet.WriteText(0, 0, UTF8toANSI(str1)); // str1 := 'A Huit';
      wb.Worksheet.WriteText(1, 0, UTF8toANSI(str2)); // str2 := 'ACinq';
      wb.Worksheet.WriteText(2, 0, UTF8toANSI(str3)); // str3 := 'ANeuf';
      wb.Worksheet.WriteText(3, 0, str4);             // str4 := 'xA Huit';
      wb.Worksheet.WriteText(4, 0, str5);             // str5 := 'xACinq';
      wb.Worksheet.WriteText(5, 0, str6);             // str6 := 'xANeuf';
    end;
     
    procedure TFsortdemo.BtnSortClick(Sender: TObject);
    begin
      sortParams := InitSortParams(true, 1);              // Col sort, Number of sort (cols or rows)
      sortParams.Keys[0].ColRowIndex := 0;                // ColRowIndex    Index of the sorted column or row
      sortParams.Keys[0].Options := []; //     TsSortOption = (ssoDescending, ssoCaseInsensitive, ssoAlphaBeforeNum)
      wb.Worksheet.Sort(sortParams, 0, 0, wb.worksheet.GetLastRowIndex, wb.worksheet.GetLastColIndex);
    end;
     
    end.
    Image après le chargement des données

    Nom : Avant le tri.jpg
Affichages : 424
Taille : 18,9 Ko

    Image après le tri

    Nom : Après le tri.jpg
Affichages : 413
Taille : 19,8 Ko


    Pour moi la chaîne A Huit est inférieure à la chaîne ACinq à cause de l'espace en 2ème position qui est inférieur au C de ACinq

    J'ai dû rater quelque chose mais quoi ?
    Merci de m'aider.

  2. #2
    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
    Hello que donnes ton test si toutes les entrées comportent un espace après la première lettre ? Et effectivement tu as raison "A Huit/xA Huit" devraient être avant les "**?Cinq".
    Et sous Windows ton "test Lazarus" fonctionne comme il se doit ?
    As tu essayé avec l'option ssoCaseInsensitive ?
    As tu essayé avec UTF8ToAnsi partout ? (même si je ne pense pas que le problème vienne de là)
    As tu essayé avec un stringGrid pour comparer ?
    • "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

  3. #3
    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
    Etant curieux j'ai fait une petite recherche et j'ai regardé la fonction compare de FPSpreadSheet. C'est bizarre car le FPSpreadSheet supporte l'UTF8 et utilise UTF8CompareText/UTF8CompareStr et utilise l'algo QuickSort (mais, "non stable")

    Essayes d'assigner l'évènement onCompareCells avec un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function TMyApp.onCompareCells(Acol, ARow, Bcol, BRow: integer): integer;
    var
      A, B: string;
     
    begin
        A := TsWorksheet(Sender).ReadAsUTF8Text(ARow - HeaderCount, ACol - HeaderCount);
        B := TsWorksheet(Sender).ReadAsUTF8Text(BRow - HeaderCount, BCol - HeaderCount);
        Result := UTF8CompareText(A, B);
        if (soDescending in TsWorksheet(Sender).options) then Result := -Result;
    end;
    Cela devrait peut-être corriger le tri, mais pas persuadé.

    A+
    Jérôme
    • "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

  4. #4
    Membre régulier
    Homme Profil pro
    retraité informaticien
    Inscrit en
    Novembre 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : retraité informaticien

    Informations forums :
    Inscription : Novembre 2008
    Messages : 90
    Points : 75
    Points
    75
    Par défaut
    @BeanzMaster

    Attention, c'est chaud!

    Bonjour Jérome et bon courage pour la lecture.

    Ouh la la je vais avoir une semaine chargée :

    - Installer et faire fonctionner Lazarus sous WIndows

    - porter le test sur celui-ci.


    J'ai fait les tests avec et sans ssoCaseInsensitive et les résultats sont identiques.


    Quelque chose me titille dans le code inclus entre les lignes 3450 à 3464 de fpSpreadSheet.pas :

    On voit ici les comparaisons AnsiComparexxx mais avec le format UTF8 des cellules (ACellx^.UTF8StringValue)

    Je ne comprends pas cette manip.....


    Les tests avec pour chaque valeur un espace après le 1er caractères donnent de bons résultats;

    Une hypothèse farfelue (enfin pas temps que ça, voir plus bas) serait que les espaces soient considérés comme des caractères de plus fort poids,
    cela donnerait alors 'A Huit' devient 'A' suivi d'une valeur de rang plus élevé que le caractère 'z' (comme par exemple x'FF'), suivi de 'Huit' et donc comparé à 'ACINQ' le 2ème caractère 'C' serait inférieur.

    Pour étayer ma thèse farfelue au premier abord voir les commentaires (dans les lignes 3428 à 3430) de la fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function TsWorksheet.DefaultCompareCells(ACell1, ACell2: PCell;
     
     // Sort priority in Excel:
    // numbers < alpha < blank (ascending)
    // alpha < numbers < blank (descending)
    Ces lignes me semblent aberrantes, je n'ai jamais vu cette règle dans Excel.

    Les valeurs en hexa des différents caractères :

    espace = x'20'
    0 a 9 = x'30' à x'39'
    A à Z = x'41' à x'5A'
    a à z = x'61' à x'7A'

    je fais l'impasse sur les autres signes.



    Je viens de faire le test avec les mêmes valeurs en Excel et il est OK



    J'ai tenté de faire un showmessage avec les contenus en hexa des 2 champs, mais j'ai vu alors une proposition de recompiler fpSpreadSheet.pas;
    j'ai pris peur et abandonné cette idée.


    Je viens de tenter d'exploiter (ouh le vilain mot!) ta fonction OnCompareCells mais je me ramasse une floppée de messages d'erreur du compilateur.
    Je pense qu'une partie de ceux-ci sont dût à ma façon d'insérer ce code

    Un peu de précision pour le nunuche que je suis me serait d'une grande aide.

    Comment intégrer cette fonction ?

    - dans mon code source
    à quel endroit
    faut-il déclarer un prototype de cette fonction?

    - dans fpSpreadSheet.pas ?
    à quel endroit

    J'ai tenté de lister ici les erreurs mais je pense qu'on pourrait en réduire le nombre en mettant au bon endroit les déclarations.


    Merci.


    Jean-Jacques

  5. #5
    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
    Helle Jean-Jacques
    Citation Envoyé par jjnoui Voir le message

    - Installer et faire fonctionner Lazarus sous WIndows

    - porter le test sur celui-ci.
    C'est très simple encore plus que sous Linux


    Citation Envoyé par jjnoui Voir le message
    Quelque chose me titille dans le code inclus entre les lignes 3450 à 3464 de fpSpreadSheet.pas :

    On voit ici les comparaisons AnsiComparexxx mais avec le format UTF8 des cellules (ACellx^.UTF8StringValue)

    Je ne comprends pas cette manip.....
    Moi ce qui me titille c'est que dans la dernière version AnsiComparexxx n'est pas utilisé ! https://github.com/tcs-ulli/fpspread...preadsheet.pas . A moins que je ne sois pas sur le bon dépôt
    Qu'elle est ta version de Lazarus ?
    Comment as tu installé FPSpreadSheet ? L'as tu installer depuis le gestionnaire de paquets en ligne (menu paquet) ?


    Citation Envoyé par jjnoui Voir le message
    Comment intégrer cette fonction ?

    - dans mon code source
    à quel endroit
    faut-il déclarer un prototype de cette fonction?

    - dans fpSpreadSheet.pas ?
    à quel endroit

    J'ai tenté de lister ici les erreurs mais je pense qu'on pourrait en réduire le nombre en mettant au bon endroit les déclarations.


    Merci.


    Jean-Jacques
    Dans ton composant, dans l'ide dans l'inspecteur de propriété sous l'onglet evènement tu devrais avoir le onCompareCells, double click et insère le code

    A+
    Jérôme
    • "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

  6. #6
    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
    J'ai testé sous Windows,

    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
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    unit Unit1;
     
    {$mode objfpc}{$H+}
     
    interface
     
    uses
      Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls,
      fpspreadsheetgrid, fpspreadsheetctrls,
      fpsTypes,
      fpsutils,
      fpspreadsheet;
     
     
    type
     
      { TForm1 }
     
      TForm1 = class(TForm)
        wg: TsWorksheetGrid;
        wb: TsWorkbookSource;
        Button1: TButton;
        Button2: TButton;
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
      private
        procedure DoCompareCells (Sender: TObject; ACell1, ACell2: PCell; ASortKey: TsSortKey; var AResult: Integer);
      public
     
      end;
     
    var
      Form1: TForm1;
     
    implementation
     
    {$R *.lfm}   
    uses LazUTF8;
    var
      sortParams: TsSortParams;
     
    { TForm1 }
     
    procedure TForm1.DoCompareCells(Sender: TObject; ACell1, ACell2: PCell; ASortKey: TsSortKey; var AResult: Integer);
    var
      A, B: string;
     
    begin
        A := TsWorksheet(Sender).ReadAsText(ACell1^.row, ACell1^.col);
        B := TsWorksheet(Sender).ReadAsText(ACell2^.row, ACell2^.col);
        AResult := UTF8CompareText(A, B);
        if (ssoDescending in ASortKey.options) then AResult := -AResult;
    end;
     
    procedure TForm1.Button1Click(Sender: TObject);
    var
      str1, str2, str3, str4, str5, str6 : string;
     
    begin
      str1 := 'ANeuf';
      str2 := 'ACinq';
      str3 := 'A Huit';
      str4 := 'xA Huit';
      str5 := 'xACinq';
      str6 := 'xANeuf';
     
      // chargement manuel du Worksheet
      wb.Worksheet.Clear;
      wb.Worksheet.WriteText(0, 0,str1); // str1 := 'A Huit';
      wb.Worksheet.WriteText(1, 0, str2); // str2 := 'ACinq';
      wb.Worksheet.WriteText(2, 0, str3); // str3 := 'ANeuf';
      wb.Worksheet.WriteText(3, 0, str4);             // str4 := 'xA Huit';
      wb.Worksheet.WriteText(4, 0, str5);             // str5 := 'xACinq';
      wb.Worksheet.WriteText(5, 0, str6);             // str6 := 'xANeuf';
     
      wb.Worksheet.OnFullCompareCells := @DoCompareCells;
    end;
     
    procedure TForm1.Button2Click(Sender: TObject);
    begin
      sortParams := InitSortParams(true, 1);              // Col sort, Number of sort (cols or rows)
      sortParams.Keys[0].ColRowIndex := 0;                // ColRowIndex    Index of the sorted column or row
      sortParams.Keys[0].Options := []; //     TsSortOption = (ssoDescending, ssoCaseInsensitive, ssoAlphaBeforeNum)
      wb.Worksheet.Sort(sortParams, 0, 0, wb.worksheet.GetLastRowIndex, wb.worksheet.GetLastColIndex);
    end;  
     
    end.
    Avec ou sans la procedure onCompareCells, cela fonctionne
    Nom : 2022-04-25_222203.jpg
Affichages : 359
Taille : 19,5 Ko

    Mets à jour Lazarus mais surtout les paquets FPSpreadSheet, ton problème semble venir de là.
    • "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

  7. #7
    Membre régulier
    Homme Profil pro
    retraité informaticien
    Inscrit en
    Novembre 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : retraité informaticien

    Informations forums :
    Inscription : Novembre 2008
    Messages : 90
    Points : 75
    Points
    75
    Par défaut
    @BeanzMaster

    Bonjour Jérome.

    En tout cas cela semble avancer.

    Mets à jour Lazarus mais surtout les paquets FPSpreadSheet, ton problème semble venir de là
    Je viens de relever la version des différents éléments.

    Installation d'Ubuntu 20.04 du 1er avril ? Je ne l'ai pas fait exprès.

    Nom : ubuntu.jpg
Affichages : 360
Taille : 46,1 Ko


    Tous les éléments téléchargés. Les cotisations encaissées n'ont rien à voir avec le sujet...

    Nom : telchargements.jpg
Affichages : 365
Taille : 77,3 Ko


    Le contenu du fichier zip de FPSpreadSheet

    Nom : zip de fpspreadsheet.jpg
Affichages : 368
Taille : 116,8 Ko


    Enfin les versions dans Lazarus

    Nom : Lazarus.jpg
Affichages : 357
Taille : 51,7 Ko

    Je ne peux pas en faire plus aujourd'hui, planning chargé.

    En tout cas merci et au plaisir de te lire.

    Jean-Jacques

  8. #8
    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
    Hello, désinstalles/supprimes la version actuelle de FPSreadSheet et installes les paquets depuis le gestionnaire de paquets en ligne : menu Paquet --> gestionnaire de paquet en ligne. Cela devrait solutionner le problème. Et c'est la meilleur façon pour installer des paquets et d'avoir les dernières mises à jour.
    Ne télécharges pas de zip trouvé ici et là (sauf si le paquet n'est pas dispo dans le gestionnaire)

    PS : Lances Lazarus en mode root

    A+
    Jérôme
    • "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

  9. #9
    Membre régulier
    Homme Profil pro
    retraité informaticien
    Inscrit en
    Novembre 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : retraité informaticien

    Informations forums :
    Inscription : Novembre 2008
    Messages : 90
    Points : 75
    Points
    75
    Par défaut
    Citation Envoyé par BeanzMaster Voir le message
    Lances Lazarus en mode root
    re bonjour, ici le boulet..

    Lancer lazarus en mode root.
    N'ayant trouvé aucune info à ce sujet j'ai cherché l'emplacement des fichiers dont le nom contient Lazarus.
    J'ai trouvé le fichier /usr/bin/lazarus-ide
    Un c.. ça ose tout, c'est à ça qu'on le reconnait (réplique culte dans les tontons flingueurs si je ne me trompe).
    J'ai donc lancé les commandes
    cd /usr/bin
    suivi de
    sudo lazarus-ide,
    après envoi du mot de passe j'ai eu une tripotée de messages et un lazarus minimum est monté : donc ouh la la touche pas mon gars.
    j'ai vraiment besoin d'être pris par la main.
    Si cela t'ennuie, on peut laisser tomber, je comprendrais

    Jean-Jacques

  10. #10
    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
    Hello je ne connais pas trop ubuntu. Dans ce cas, essaies juste d'installer FPSpreadSheet et ses dépendances en mode normal avec le gestionnaire de paquet.

    Jérôme
    • "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

  11. #11
    Membre régulier
    Homme Profil pro
    retraité informaticien
    Inscrit en
    Novembre 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : retraité informaticien

    Informations forums :
    Inscription : Novembre 2008
    Messages : 90
    Points : 75
    Points
    75
    Par défaut
    @BeanzMaster

    Bonjour Jérome.

    Ok pour Ubuntu.

    En ce qui concerne l'installation de FpSpreadsheet, je vais assurer un max pour sa désinstallation en prenant une méthode barbare :

    Installation d'Ubuntu 22.04 LTS

    Puis install fraîche de Lazarus
    et incorporation de FpSpreadsheet

    Un peu de boulot en perspective.

    Un détail (ou pas) que je n'avais pas mentionné : Ubuntu est installé dans une machine virtuelle (Oracle VirtualBox).

    Je vais faire un break d'une semaine avant ces manips cause petits enfants qui arrivent.

    Alors à plus

    Jean-Jacques

  12. #12
    Membre régulier
    Homme Profil pro
    retraité informaticien
    Inscrit en
    Novembre 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : retraité informaticien

    Informations forums :
    Inscription : Novembre 2008
    Messages : 90
    Points : 75
    Points
    75
    Par défaut
    @BeanzMaster

    Bonjour Jérome.

    Le retour...

    Windows 10 :

    J'ai installé Lazarus sous Windows 10

    J'ai récupéré le paquet FPSpreadsheet depuis le site http://packages.lazarus-ide.org/

    j'ai installé fpspreadsheet depuis Lazarus, installer-desinstaller les packets (il n'y avait que le packet laz_fpspreadsheet_visual_dsgn) 1.14; le tri est ok


    Ubuntu :


    En ce qui concerne Lazarus, je ne suis pas assez sûr de mon installation;

    Je refais donc une installation complète : suppression dans Oracle VM VirtualBox d'Ubuntu, réinstall : 2 jours de galère .....
    puis install de Lazarus,
    j'ai installé fpspreadsheet depuis Lazarus : installer-desinstaller les packets (il n'y avait que le packet laz_fpspreadsheet_visual_dsgn) 1.14; le tri est toujours KO


    Je n'ai pas trouvé une référence quelconque à un évènement OnCompare (ou OnCompareCells) dans les composants visuels (TsWorksheetGrid et TsXorkbookSource).
    Je n'ai pas vu de référence au tri dans ces composants, ceci explique peut-être l'absence de l'évènement OnCompare.

    à partir de la ligne 813 de fpspreadsheet[B][U]grid[B][U].pas on trouve, mis en commentaires :

    (*
    {@@ inherited from ancestors}
    property OnCompareCells; // apply userdefined sorting to worksheet directly!
    *)

    En continuant mes recherches j'ai trouvé des définitions de OnCompareCells (supposées être 'deprecated') dans le source fpspreadsheet.pas , et à partir de là je rame....

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

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

    je reviens un peu sur ce post car il m'intriguait :
    Citation Envoyé par jjnoui Voir le message
    re bonjour, ici le boulet..

    Lancer lazarus en mode root.
    N'ayant trouvé aucune info à ce sujet j'ai cherché l'emplacement des fichiers dont le nom contient Lazarus.
    J'ai trouvé le fichier /usr/bin/lazarus-ide
    Un c.. ça ose tout, c'est à ça qu'on le reconnait (réplique culte dans les tontons flingueurs si je ne me trompe).
    J'ai donc lancé les commandes
    cd /usr/bin
    suivi de
    sudo lazarus-ide,
    après envoi du mot de passe j'ai eu une tripotée de messages et un lazarus minimum est monté : donc ouh la la touche pas mon gars.
    J'ai fait pratiquement la même manip, dan le sens où, étant loggué par défaut en root je n'ai pas à rajouter sudo.

    Par contre j'ai fait une chose que tu as omise : c'est quoi ce lazarus-ide ? En info la curiosité n'est pas un vilain défaut,
    Donc ls -lGg et là, on voit tout de suite qu'il s'agit d'un banal raccourci vers un banal binaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ cd /usr/bin
    $ ls -lGg laz*
    lrwxrwxrwx 1 33 21 févr.  2021 lazarus-ide -> /usr/share/lazarus/2.0.12/lazarus
    lrwxrwxrwx 1 34 21 févr.  2021 lazbuild -> /usr/share/lazarus/2.0.12/lazbuild
    donc je le lance avec bêtement $ ./lazarus-ide et là, oui, une tripotée de messages à propos de gtk chez moi, mais je m'en fiche, ce sont des warnings concernant en général le graphisme (allez, un au hasard :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (lazarus-ide:4321): Gtk-CRITICAL **: 10:22:46.451: IA__gtk_widget_realize: assertion 'GTK_WIDGET_ANCHORED (widget) || GTK_IS_INVISIBLE (widget)' failed
    et comme on ne les voit pas en utilisant l'icône comme lanceur, on s'en moque) et l'ide s'affiche parfaitement correctement, en me présentant le dernier programme que j'ai ouvert.
    Si toi tu as un ide "minimaliste", c'est peut-être parce qu'il n'a pas trouvé de programme précédent, auquel cas tu n'as plus qu'à coder.

    Sinon, pour un autre de tes posts, curieuse idée d'avoir détruit une machine virtuelle opérationnelle juste pour réinstaller la sainte trinité (fpc puis fpc-source puis lazarus, dans le bon ordre).
    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 as tu essayé d'installé une autre distribution que Ubuntu genre Mint dans ta VM ?
    Notes que pour tester (surtout pour compiler) une VM ce n'est pas le top. Mieux vaut avoir un "vrai" linux d'installé sur ta machine en dualboot
    • "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
    Membre régulier
    Homme Profil pro
    retraité informaticien
    Inscrit en
    Novembre 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : retraité informaticien

    Informations forums :
    Inscription : Novembre 2008
    Messages : 90
    Points : 75
    Points
    75
    Par défaut
    @BeanzMaster

    Bonsoir Jérome.

    Bon, on va tâcher d'y voir plus clair.

    ok pour le lancement de L'ide; que ce soit via le raccourci ou par la commande au terminal de l'execution du binaire, le résultat est le même sauf en ce qui concerne le masquage des warnings.
    En fait cet essai ne servait à rien, sauf à démontrer que je pédale dans la choucroute (ou dans la semoule).

    La méthode que j'ai utilisée pour revenir à une base saine peut sembler barbare mais lorsqu'on se contente de désinstaller puis réinstaller, il y a souvent des scories qui trainent.

    C'est pour éviter ces restes de Lazarus que je suis remonté plus haut, d'où la suppression de Lazarus, Ubuntu et même virtualBox.
    Et encore j'ai évité de réinstaller Windows ;-)


    Ouh la la : réinstaller la sainte trinité (fpc puis fpc-source puis lazarus, dans le bon ordre)
    Ce n'est pas du tout ce que j'ai fait : une fois Ubuntu réinstallé j'ai fait un
    sudo apt install lazarus

    Ensuite dans Lazarus :
    - paquet
    - Online Package Manager
    - sélection du paquet FPSpreadsheet
    - développement du paquet
    - déselection de laz_Fpspreadsheetexport_visual.lpk et de laz_Fpspreadsheet_crypto.lpk
    - installer la sélection
    - enregistrer et recréer l'Edi

    et roule ma poule.

    Réponse aux questions :

    as tu essayé d'installé une autre distribution que Ubuntu genre Mint dans ta VM ?,
    non je n'ai pas envie de tester une autre distribution.

    Mieux vaut avoir un "vrai" linux d'installé sur ta machine en dualboot.
    Là j'ai déjà donné dans le temps : une fausse manip et on installe l'OS sur un disque qui n'est pas celui prévu, j'ai 4 disques en ligne.

    Après formatage et installation sur un disque qui n'est pas celui prévu : 14000 photos à récupérer secteur par secteur heureusement l'os tenait sur un ou 2 gigas, le reste était intact car formatage rapide.

    Il y a eu aussi un grub foireux et une autre version du multiboot via sélection au niveau bios avant le démarrage, galère.

    Enfin en ce qui concerne les perfs d'un os à travers une vm, je n'ai monté ce système que pour une migration d'un programme Delphi vers un Unix, une fois terminé : hop, delete de vm et de son contenu alors les perfs....

    Voilà pour les questions.

    Etat actuel :

    J'ai monté Lazarus sur Windows 10 et le test fonctionne normalement, alors que sous Ubuntu c'est toujours le même mer......

    Il me semble qu'un lever de doute pourrait être fait si tu veux bien reprendre mon test sous unix

    Pour cela je te joins les sources du programme et de de la form.

    Le source

    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
     
    unit usortdemo;
     
    {$mode objfpc}{$H+}
     
    interface
     
    uses
      Classes, SysUtils, Forms, Controls, Graphics,
      ExtCtrls, Menus, ComCtrls, StdCtrls,
      fpspreadsheetctrls,
      fpsTypes,
      fpsutils,
      fpspreadsheetgrid;
     
    type
      { TFsortdemo }
      TFsortdemo = class(TForm)
        BtnLoad: TButton;
        BtnSort: TButton;
        ws: TsWorksheetGrid;
        wb: TsWorkbookSource;
      procedure BtnLoadClick(Sender: TObject);
      procedure BtnSortClick(Sender: TObject);
     
      private
      public
    end;
     
    var
      Fsortdemo: TFsortdemo;
     
    implementation
     
    {$R *.lfm}
    { TFsortdemo }
     
    var
      sortParams: TsSortParams;
     
    procedure TFsortdemo.BtnLoadClick(Sender: TObject);
    var
      str1, str2, str3, str4, str5, str6 : string;
     
    begin
      str1 := 'A Huit';
      str2 := 'ACinq';
      str3 := 'ANeuf';
      str4 := 'xA Huit';
      str5 := 'xACinq';
      str6 := 'xANeuf';
     
      // chargement manuel du Worksheet
      wb.Worksheet.Clear;
      wb.Worksheet.WriteText(0, 0, UTF8toANSI(str1)); // str1 := 'A Huit';
      wb.Worksheet.WriteText(1, 0, UTF8toANSI(str2)); // str2 := 'ACinq';
      wb.Worksheet.WriteText(2, 0, UTF8toANSI(str3)); // str3 := 'ANeuf';
      wb.Worksheet.WriteText(3, 0, str4);             // str4 := 'xA Huit';
      wb.Worksheet.WriteText(4, 0, str5);             // str5 := 'xACinq';
      wb.Worksheet.WriteText(5, 0, str6);             // str6 := 'xANeuf';
    end;
     
    procedure TFsortdemo.BtnSortClick(Sender: TObject);
    begin
      sortParams := InitSortParams(true, 1);              // Col sort, Number of sort (cols or rows)
      sortParams.Keys[0].ColRowIndex := 0;                // ColRowIndex    Index of the sorted column or row
      sortParams.Keys[0].Options := []; //     TsSortOption = (ssoDescending, ssoCaseInsensitive, ssoAlphaBeforeNum)
      wb.Worksheet.Sort(sortParams, 0, 0, wb.worksheet.GetLastRowIndex, wb.worksheet.GetLastColIndex);
    end;
    end.
    la form
    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
     
    object Fsortdemo: TFsortdemo
      Left = 708
      Height = 302
      Top = 273
      Width = 383
      Caption = 'sortdemo'
      ClientHeight = 302
      ClientWidth = 383
      LCLVersion = '2.2.0.4'
      object BtnLoad: TButton
        Left = 0
        Height = 25
        Top = 0
        Width = 75
        Caption = 'Load'
        OnClick = BtnLoadClick
        TabOrder = 1
      end
      object BtnSort: TButton
        Left = 8
        Height = 25
        Top = 32
        Width = 75
        Caption = 'Sort'
        OnClick = BtnSortClick
        TabOrder = 0
      end
      object ws: TsWorksheetGrid
        Left = 120
        Height = 240
        Top = 16
        Width = 200
        FrozenCols = 0
        FrozenRows = 0
        PageBreakPen.Color = clBlue
        PageBreakPen.Style = psDash
        ReadFormulas = False
        WorkbookSource = wb
        AutoAdvance = aaDown
        DefaultColWidth = 64
        DefaultRowHeight = 24
        TabOrder = 2
      end
      object wb: TsWorkbookSource
        AutoDetectFormat = False
        FileFormat = sfUser
        Options = []
        Left = 24
        Top = 88
      end
    end


    Bonne soirée et encore merci.
    Jean-Jacques

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

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

    je reviens juste sur un point, un peu HS en plus mais on ne m'en voudra pas, c'est de la culture générale informatique :
    Citation Envoyé par jjnoui Voir le message
    une fausse manip et on installe l'OS sur un disque qui n'est pas celui prévu, j'ai 4 disques en ligne.
    Cette fausse manip c'était quoi ?

    Parce que d'après ce que j'en lis ici et là, et suite aussi à des discussions sur plusieurs forums, il apparait que le nommage des disques et des partitions que tout le monde connait, savoir sda1, sda2, sdb1 etc. est tout ce qu'il y a de pas fiable, surtout depuis quelques années.
    De pas fiable dans le sens où un jour la partition système s'appelle sda1 et le lendemain elle s'appelle sdb1, en termes de nommage.
    Physiquement c'est toujours les mêmes objets, c'est juste les étiquettes collées sur leur front qui changent, mais comme on se sert de ces étiquettes pour repérer les objets, ça peut engendrer des catastrophes...

    Ce gag m'a causé des sueurs froides terribles (genre en exécutant df -h et en constatant que mon sda1 [partition système] a parfois une taille de 2 To, ce qui correspond à l'un de mes deux disques de données -- alors avec df ce n'est pas trop grave, mais avec gparted ce n'est plus pareil...) et il n'y a pas de solution simple, dans le sens où celles préconisées sur le web ont parfois été prises en défaut, ie, pas fiables à 100 %.

    Après des mois de tests et d'analyses des logs du démarrage, la seule que j'ai trouvée en ce qui me concerne a été de régénérer un noyau où les pilotes disque y sont intégrés en dur et non pas en modules.
    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

  17. #17
    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
    Hello Jean-Jacques dans ton dernier code posté, il te manque la fonction doCompareCell que j'avais donné ici https://www.developpez.net/forums/d2.../#post11837534
    • "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

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

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 3 937
    Points : 9 249
    Points
    9 249
    Par défaut
    Hello,
    Citation Envoyé par BeanzMaster Voir le message
    Hello Jean-Jacques dans ton dernier code posté, il te manque la fonction doCompareCell que j'avais donné ici https://www.developpez.net/forums/d2.../#post11837534
    je viens d'essayer ton code de tri dans une VM Sous Ubuntu 20.04 Lazarus 2.06 , même problème de tri que celui expliqué dans le premier message de la discussion.
    Par contre en remplaçant le UTF8CompareText par un UTF8CompareStr cela semble fonctionner :
    Code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    procedure TForm1.DoCompareCells(Sender: TObject; ACell1, ACell2: PCell; ASortKey: TsSortKey; var AResult: Integer);
    var
      A, B: string;
     
     
    begin
        A := TsWorksheet(Sender).ReadAsText(ACell1^.row, ACell1^.col);
        B := TsWorksheet(Sender).ReadAsText(ACell2^.row, ACell2^.col);
        AResult := UTF8CompareStr(A, B);
        if (ssoDescending in ASortKey.options) then AResult := -AResult;
    end;
    Nom : TriFpsUbuntu.gif
Affichages : 262
Taille : 47,7 Ko

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

  19. #19
    Membre régulier
    Homme Profil pro
    retraité informaticien
    Inscrit en
    Novembre 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : retraité informaticien

    Informations forums :
    Inscription : Novembre 2008
    Messages : 90
    Points : 75
    Points
    75
    Par défaut
    @jurassic pork
    Bonjour jp.

    Merci d'avoir pris le temps de refaire mon test.
    Je n'ai toujours pas compris où se trouve la déclaration de DoCompareCells.
    Je ne trouve pas l'évènement OnCompareCells.
    Pour mémoire, dans ma form j'ai les composants suivants :

    2 boutons,
    1 TsWorkbookSource,
    1 TsWorksheetGrid
    et rien d'autre.

    PS :
    je suis sous Lazarus 2.2.0
    et Ubuntu 22.04.
    Je ne sais pas si ça a quelque chose à voir avec mon problème.

    A te lire.
    Jean-Jacques

  20. #20
    Membre régulier
    Homme Profil pro
    retraité informaticien
    Inscrit en
    Novembre 2008
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : retraité informaticien

    Informations forums :
    Inscription : Novembre 2008
    Messages : 90
    Points : 75
    Points
    75
    Par défaut
    Je pense avoir fait un grand pas en avant en ce qui concerne DoCompareCells

    En fait il me manquait le uses de fpspreadsheet.
    Maintenant je passe donc le stade de la compilation.
    Par contrer, pas de changement dans le tri.
    En mettant un point d'arrêt dans cette procédure je vois qu'elle n'est pas appelée, j'ai encore dû rater quelque chose!
    Je pense à quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fpspreadsheet.oncompare := DoCompareCells;
    mais ça ne passe pas la compil =>
    Error : identifier not found "oncompare"
    Si l'Ami Calmant pouvait me passer les fichiers xx.pas et xx.lfm je pourrais peut-être tester.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 1
    Dernier message: 16/02/2011, 15h53
  2. Problème de tri dans formulaire
    Par antoine1504 dans le forum IHM
    Réponses: 1
    Dernier message: 23/07/2007, 13h15
  3. Problème de tri dans ma page ASP.
    Par laurent_diep dans le forum ASP
    Réponses: 4
    Dernier message: 01/03/2007, 17h59
  4. Problème de tri dans excel
    Par fabou3377 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 30/10/2006, 07h20
  5. Problème de tri de nombre négatif dans un état
    Par loutsky dans le forum Access
    Réponses: 11
    Dernier message: 21/04/2006, 15h30

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