Avatar billede jens123 Nybegynder
21. august 2000 - 19:15 Der er 3 kommentarer og
1 løsning

Sortering

Jeg er kommet ind i et lille ploblem, med et sorteringsprogram, opgaven lyder:

Der er to richedit componenter
richedit1
richedit2

så skal programmer undersøge, om de ord, der står i richedit1, de osse er i richedit2, hvis ikke, skal ordret overføres med  - add -der til.

der står kun et ord på hver linje.
Avatar billede borrisholt Novice
21. august 2000 - 19:32 #1
Hmmmn. Rich edit en lidt usædvanlig kontrol at bruge til dette ... men prøv det her

procedure TForm1.Button1Click(Sender: TObject);
var
  a,b : TStringList;
  i : Integer;
  buf : String;
begin
  a:= TStringList.Create;
  b:= TStringList.Create;
  a.Assign(Richedit1.Lines);
  b.Assign(Richedit2.Lines);

  for i:= 0 to pred(b.Count) do
  begin
    buf :=b[i];
    if  a.IndexOf(buf) = -1 then
      a.Add(Buf);
    RichEdit1.Lines.Assign(a);
    //alle ordene fra B er nu stoppet over i a og vist på skærmen
  end;

  for i:= 0 to pred(a.Count) do
  begin
    buf :=a[i];
    if  b.IndexOf(buf) = -1 then
      b.Add(Buf);
    RichEdit1.Lines.Assign(b);
    //alle ordene fra A er nu stoppet over i B og vist på skærmen
  end;
a.free;
b.Free;
end;


Jens B
Avatar billede laserzap Nybegynder
21. august 2000 - 19:40 #2
Hvor kan man downloade programmet deplhi?
Avatar billede jens123 Nybegynder
21. august 2000 - 19:51 #3
laserzap du kan prøve at gå ind på www.google.com og søge med delphi+download
Avatar billede borrisholt Novice
21. august 2000 - 20:10 #4
Hej Jens

Noge gange går det lidt for stærkt for mig ...

Brug det her kode i stedet ....


procedure TForm1.Button1Click(Sender: TObject);
var
  a,b : TStringList;
  i : Integer;
  buf : String;
begin
  a:= TStringList.Create;
  b:= TStringList.Create;
  a.Assign(Richedit1.Lines);
  b.Assign(Richedit2.Lines);

  for i:= 0 to pred(b.Count) do
  begin
    buf :=b[i];
    if  a.IndexOf(buf) = -1 then
      a.Add(Buf);
  end;

  RichEdit1.Lines.Assign(a);
  //alle ordene fra B er nu stoppet over i a og vist på skærmen

  for i:= 0 to pred(a.Count) do
  begin
    buf :=a[i];
    if  b.IndexOf(buf) = -1 then
      b.Add(Buf);
  end;

  RichEdit1.Lines.Assign(b);
  //alle ordene fra A er nu stoppet over i B og vist på skærmen

a.free;
b.Free;
end;


Det laver næsten det samme, men er bare meget smartere .. En passende øvelse for dig kunne være at fortælle hvorfor dette kode er meget smarter end det andet ?

Jens B
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester