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

 Delphi Discussion :

Supprimer une ligne dans un memo


Sujet :

Delphi

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Septembre 2008
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Supprimer une ligne dans un memo
    slt j'ai un problem Sil vous plais

    Sache que A et cole a coté de B c'est a dir a est Tout seul Et b est Tout seul;

    j'ai un memo avec ce text
    a b\\ces deux variable est dans le prog ne pas Afficher sur le memo
    A b
    0 1
    0 2
    0 3
    . .
    . .
    . .
    1 8
    1 9
    2 0 cette Note et maximale (c'est a dire 20/20)
    j'ai afficher ce resultat avec:
    Memo1.lines.add(+IntToStr(a)+''+IntToStr(b));
    maintenant je veux fait un botton2 qui permet de soustraire a-b avec une certain condition pour suppremer la ligne de memo1
    a - b =(intervale entre a et b)
    c par exmple if a - b = 5 then
    memo1.lines.delete(a ,b){cette commande ne fonction pas );
    c'est a dire que programme devient comme sa;
    0 1-----Cette ligne va rester
    0 2-----Cette ligne va rester
    0 3-----Cette ligne va rester
    . .-----Cette ligne va rester
    0 5-----Cette ligne va Etre Supprimer
    . . -----Cette ligne va rester
    . . -----Cette ligne va rester
    1 6-----Cette ligne va Etre Supprimer
    1 8-----Cette ligne va rester
    1 9-----Cette ligne va rester
    2 0-----Cette ligne va rester
    merci et merci d'avance qui pe m'aider

  2. #2
    Membre expérimenté

    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2004
    Messages : 897
    Points : 1 561
    Points
    1 561
    Par défaut
    Avant tout, deux choses. Pour gérer ceci, je ne pense pas que le mémo soit une bonne idée. Il ne doit avant tout servir que comme élément pour afficher des données et rien de plus, à moins que tu n'y sois réellement obligé.
    D'autre part, tu dois non pas regarder la différence entre a et b, mais la valeur absolue de la différence car sinon 0-5 donnera -5 et non 5.

    Voilà une solution que je te propose en gérant une liste indépendante du mémo.

    Dans une nouvelle unité tu peux gérer une liste de cette façon.

    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
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    unit Unit2;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
      Dialogs;
     
    type
      TMyData = class
      private
        FB: integer;
        FA: integer;
        procedure SetA(const Value: integer);
        procedure SetB(const Value: integer);
      public
        property A:integer read FA write SetA;
        property B:integer read FB write SetB;
      end;
      TMyList = class(TStringList)
      private
        function GetMyData(index: integer): TMyData;
      public
        property Data[index: integer]:TMyData read GetMyData;
        function addData(xA,xB: integer):integer;
        procedure deleteData(index: integer);
        procedure ClearData;
        procedure ShowData(ALines: TStrings);
        procedure process;
      end;
     
    implementation
     
    { TMyData }
    procedure TMyData.SetB(const Value: integer);
    begin
      FB := Value;
    end;
     
    procedure TMyData.SetA(const Value: integer);
    begin
      FA := Value;
    end;
     
    { TMyList }
     
    function TMyList.addData(xA, xB: integer): integer;
    var
     AData: TMyData;
    begin
      AData := TMyData.Create;
      with AData do
      begin
        FA := xA;
        FB := xB;
      end;
      Result := Self.AddObject('',AData);
    end;
     
    procedure TMyList.ClearData;
    var
      I: integer;
    begin
      for I := Pred(Self.Count) downto 0 do
      begin
        TMyData(Self.Objects[i]).Free;
        Self.Delete(I);
      end;
    end;
     
    procedure TMyList.deleteData(index: integer);
    begin
      if Self.Count > 0
        then
      if index in [0..Self.Count-1] then
      begin
        TMyData(Self.Objects[index]).Free;
        Self.Delete(index);
      end;
    end;
     
    function TMyList.GetMyData(index: integer): TMyData;
    begin
      Result := nil;
      if Self.Count > 0
        then
      if index in [0..Self.Count-1] then
        Result := TMyData(Self.Objects[index]);
    end;
     
    procedure TMyList.process;
    var
      I: integer;
    begin
      for I := Pred(Self.Count) downto 0 do
      if Assigned(Self.Data[i])
        then
      if Abs(Self.Data[i].FA - Self.Data[i].FB) = 5
        then Self.deleteData(I);
    end;
     
    procedure TMyList.ShowData(ALines: TStrings);
    var
      I: integer;
    begin
      ALines.Clear;
      ALines.BeginUpdate;
      try
        for I := 0 to Pred(Self.Count) do
          if Assigned(Self.Data[i]) then
            ALines.Add(IntToStr(Self.Data[i].FA)+' '+
                    IntToStr(Self.Data[i].FB));
      finally
        ALines.EndUpdate;
      end;
    end;
    end.
    Cela te permettra de gérer correctement tes couples de valeurs (a,b)

    Puis pour utiliser cette liste : une form sur laquelle tu déposes deux edit pour saisir tes valeurs a et b, puis deux boutons. Le premier pour ajouter tes données à la liste, le second pour effectuer le traitement qui consiste à supprimer tous les couples pour lesquels |a - b| = 5

    Tu y déposes également un TMemo pour afficher tes données.

    Voici 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
    unit Unit1;
     
    interface
     
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, Unit2, StdCtrls;
     
    type
      TForm1 = class(TForm)
        Edit1: TEdit;
        Edit2: TEdit;
        btnAdd: TButton;
        btnProcess: TButton;
        Memo1: TMemo;
        procedure btnProcessClick(Sender: TObject);
        procedure btnAddClick(Sender: TObject);
        procedure FormDestroy(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        { Déclarations privées }
      public
        { Déclarations publiques }
        FDatas: TMyList;
      end;
     
    var
      Form1: TForm1;
     
    implementation
    {$R *.dfm}
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      FDatas := TMyList.Create;
    end;
     
    procedure TForm1.FormDestroy(Sender: TObject);
    begin
      FDatas.ClearData;
      FDatas.Free;
    end;
     
    procedure TForm1.btnAddClick(Sender: TObject);
    begin
      FDatas.addData(StrToInt(edit1.Text),StrToInt(edit2.Text));
      FDatas.ShowData(memo1.Lines);
    end;
     
    procedure TForm1.btnProcessClick(Sender: TObject);
    begin
      FDatas.process;
      FDatas.ShowData(memo1.Lines);
    end;
    end.
    Les données 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
    53
    54
    55
    56
    57
    58
    59
    60
    61
    object Form1: TForm1
      Left = 0
      Top = 0
      Width = 434
      Height = 320
      Caption = 'Form1'
      Color = clBtnFace
      Font.Charset = DEFAULT_CHARSET
      Font.Color = clWindowText
      Font.Height = -11
      Font.Name = 'Tahoma'
      Font.Style = []
      OldCreateOrder = False
      OnCreate = FormCreate
      OnDestroy = FormDestroy
      PixelsPerInch = 96
      TextHeight = 13
      object Edit1: TEdit
        Left = 24
        Top = 32
        Width = 121
        Height = 21
        TabOrder = 0
        Text = 'Edit1'
      end
      object Edit2: TEdit
        Left = 24
        Top = 64
        Width = 121
        Height = 21
        TabOrder = 1
        Text = 'Edit2'
      end
      object btnAdd: TButton
        Left = 336
        Top = 32
        Width = 75
        Height = 25
        Caption = 'Add'
        TabOrder = 2
        OnClick = btnAddClick
      end
      object btnProcess: TButton
        Left = 336
        Top = 72
        Width = 75
        Height = 25
        Caption = 'Process'
        TabOrder = 3
        OnClick = btnProcessClick
      end
      object Memo1: TMemo
        Left = 24
        Top = 112
        Width = 297
        Height = 153
        Lines.Strings = (
          'Memo1')
        TabOrder = 4
      end
    end

Discussions similaires

  1. Supprime une ligne dans un fichier texte
    Par dev7 dans le forum Linux
    Réponses: 4
    Dernier message: 28/03/2006, 02h33
  2. Supprimer une ligne dans un fichier text
    Par philippe13 dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 14/03/2006, 17h43
  3. Supprimer une ligne dans un fichier
    Par tsing dans le forum Linux
    Réponses: 4
    Dernier message: 06/02/2006, 15h45
  4. [C#] Comment supprimer une ligne dans DataGrid ?
    Par BAUDIER dans le forum ASP.NET
    Réponses: 2
    Dernier message: 20/07/2004, 17h03
  5. Supprimer une ligne dans un fichier
    Par sbeu dans le forum Langage
    Réponses: 3
    Dernier message: 13/05/2003, 11h30

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