Results 1 to 7 of 7

Thread: Regels verwijderen uit TMemo

  1. #1

    Regels verwijderen uit TMemo

    Hallo,

    Ik wil graag verschillende regels uit een TMemo verwijderen.

    Het gaat om de volgende regels die verwijderd moeten worden:

    - Alle regels die met een "a" beginnen
    - De onderste 3 regels

    Hoe kan ik dit doen.

    Ik had eerst dit, maar dit werkt niet correct:

    Code:
    procedure TForm3.DeleteLines;
    begin
    Memo1.Lines.Delete(0);
    Memo1.Lines.Delete(2);
    Memo1.Lines.Delete(4);
    Memo1.Lines.Delete(6);
    Memo1.Lines.Delete(8);
    Memo1.Lines.Delete(10);
    Memo1.Lines.Delete(12);
    Memo1.Lines.Delete(14);
    Memo1.Lines.Delete(16);
    Memo1.Lines.Delete(18);
    Memo1.Lines.Delete(20);
    Memo1.Lines.Delete(22);
    Memo1.Lines.Delete(24);
    Memo1.Lines.Delete(26);
    Memo1.Lines.Delete(27);
    Memo1.Lines.Delete(28);
    end;
    Ik hoop dat jullie me kunnen helpen.

    Bedankt alvast.

  2. #2
    Verwijder ze maar begin met de laatste of je begint vooraan en de regels die je wil houden hou je bij in een stringlist. Nadien maak je de memo leeg en assign je de stringlist aan de memo.
    DeX 3 Delphi := The ease of VB with the power of C; Zoekt en gij zult vinden

  3. #3
    Fornicatorus Formicidae VideoRipper's Avatar
    Join Date
    Mar 2005
    Location
    Vicus Saltus Orientalem
    Posts
    5,544
    Achterliggende gedachte: de code zal van boven tot onder uitgevoerd worden, dus eerst
    zal Memo1.Lines.Delete(0); worden gedaan, daarna Memo1.Lines.Delete(2);... ga zomaar door.

    Maar... zodra je regel 0 verwijderd, zal de regel die eerst regel 1 was, regel 0 worden,
    regel 2 wordt regel 1... enzovoort...
    Alles schuift dus op

    Als je dus achteraan begint, heb je dat probleem niet.
    Snappie 'm

    Zelf zou ik het trouwens dynamischer aanpakken (je zal zien dat na een tijdje ineens het
    aantal regels veranderd oid...), zoals dit:
    Code:
    Procedure DeleteLines(AStrings : TStrings);
    Var
      I : Integer;
    Begin
      If Assigned(AStrings) And
         (AStrings.Count > 2) Then
        Begin
          For I := AStrings.Count - 1 DownTo AStrings.Count - 3 Do
            AStrings.Delete(I);
          For I := AStrings.Count - 1 DownTo 0  Do
            If (Length(AStrings[I]) > 0) And
               (UpCase(AStrings[I][1]) = 'A') Then
              AStrings.Delete(I);
        End;
    End;      
    
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      DeleteLines(Memo1.Lines);
    end;

    Greetz,

    Peter.
    Last edited by VideoRipper; 06-Mar-08 at 22:31.
    TMemoryLeak.Create(Nil);

  4. #4
    Bedankt.

    Echter bij het compileren krijg ik de volgende melding

    [Error] Unit3.pas(180): Undeclared identifier: 'AStrings'

    Wat doe ik verkeerd?

  5. #5
    en wat is je code want als je de code van VideoRipper zou nemen dan zie je dat hij als Parameter AStrings meegeeft aan de method, dus die is in ieder geval wel declared, wat doe jij anders?

  6. #6
    Oeps. Ik had een foutje gemaakt. De code werkt nu wel alleen krijg ik nu hier een foutmelding:

    Code:
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      DeleteLines(Memo1.Lines);
    end;
    Bij Memo1, te veel parameters....Hoe kan dit??
    Last edited by Dees; 08-Mar-08 at 17:21.

  7. #7


    Geen idee, post eens al je code.... Heet je Memo wel Memo1?

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •