Autor Beitrag
sintec
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 133



BeitragVerfasst: Mi 11.07.07 11:25 
Hallo Leuts,

Ich habe ein Problem und zwar habe ich ein TStringList wo ich natürlich strings drin habe auf doppelte Teilstinz filtern.
die TStringList sieht z.B. so aus:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
Georg Müller
Franz Sowieso
Peter Sonstnochwie
Franz Egal
Georg Cheater
Franz Derdritte


Jetzt möchte ich, dass er nach Vornamen Doppeleinträge (bzw. Mehrfacheinträge) sucht und die komplette Strings dann in eine andere TStringList kopiert so, dass die TStringlist dann so aussieht:

ausblenden Quelltext
1:
2:
3:
4:
5:
Georg Müller
Georg Cheater
Franz Sowieso
Franz Egal
Franz Derdritte


Sitze schon seit ca 2 Wochen an dem Algorithmus und komme nicht drauf.

Kann mir bitte jemand helfen?

EDIT:
Die function um Teilstrings rauskopieren habe ich schon.


Zuletzt bearbeitet von sintec am Mi 11.07.07 11:37, insgesamt 1-mal bearbeitet
Martin1966
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1068

Win 2000, Win XP
Delphi 7, Delphi 2005
BeitragVerfasst: Mi 11.07.07 11:37 
Würde es sich nicht anbieten die Strings einfach zu sortieren? :gruebel:

_________________
Ein Nutzer der Ecke ;-)
Gausi
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8548
Erhaltene Danke: 477

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Mi 11.07.07 11:44 
Jup, ich würde auch erstmal die Liste sortieren, und die Liste dann von vorne nach hinten durchgehen (oder andersrum). Dann den i-ten Eintrag mit dem i+1-ten derart vergleichen, dass ich mit pos und copy den Teil bis zum ersten Leerzeichen bekomme und das auf Gleichheit überprüfen. Bei Doppel-Vornamen wie
ausblenden Quelltext
1:
2:
3:
Karl Heinz Quietschboy
Karl Gustaf Quietschboy
Karl Otto Quietschboy
muss man sich ggf. noch was einfallen lassen, je nachdem, ob man die drin haben möchte oder nicht.

_________________
We are, we were and will not be.
wwwdirk
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 38


D6 Prof / D2005 Prof
BeitragVerfasst: Mi 11.07.07 11:45 
So was in der Art:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
function DoppelteVornamen(aList: TStringList): TStringList;
var
  i : integer;

  function GetVorname (const aString: string): string;
  begin
    result := LeftStr (aString, Pos (' ', aString));
  end;

begin
  result := TStringList.Create;
  aList.Sort;
  for i := 1 to aList.Count-1 do
    if StrComp (GetVorname (aList.Strings[i-1]), GetVorname (aList.Strings[i])) = 0 then
    begin
      if i = 1 then
        result.Add (aList.Strings[0]);
      result.Add (aList.Strings[i]);
    end;
end;
sintec Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 133



BeitragVerfasst: Mi 11.07.07 12:26 
lol
und ich versuche hier Algorithmen zu entwickeln wenns viel einfacher geht :D

vielen dank an alle, den Rest bekomme ich schon selber raus.