Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - String nur einmal im Array


Philipp_Reitter - Mo 19.02.07 16:14
Titel: String nur einmal im Array
hi

ich hab nen array[1..1000000] to String und da kommen setzt ne mio strings rein und ich will dass nur immer einer drinnen ist... ok klingt blöd... es kann sein dass 1000 oder so gleich sind aber ich will nur einen drinnen haben von den 1000... wie kann ich das aussortieren lassen?
und das schnell noch dazu wenns geht... (also das aussorieren ned das antworten auf mein topic ^^)

mfg
Philipp

Moderiert von user profile iconTino: Überflüssige Punkte im Titel entfernt.


IngoD7 - Mo 19.02.07 16:24

Nimm anstatt eines Arrays eine TStringList.
Setzte die Eigenschaften Sorted und Duplicates so, dass doppelte Einträge verhindert werden. Siehe dazu Online-Hilfe.


HelgeLange - Mo 19.02.07 16:27

Also wir haben das bei kleineren Sachen mal so gelöst : Einfach eine TStringList mitlaufen lassen, die sortiert ist und doppelte Strings nicht zulässt. Dann bevor du den String ins Array einfügst, einfach in die StringList einfügen, wird er angenommen, hast Du ihn noch nicht...


Philipp_Reitter - Mo 19.02.07 20:55

ok ... das mit der string list ist gut nur...
ich hab 300700 strings und das auslesen dauert schon so lange ... deshalb ja der array weil der schneller ist..
mit stringlist dauerts ewig!
ich denk ich lass dann einfach zum schluss wenn ich die strings in ne datei schreibe einfach das aussortieren lasse indem ich einfach so in etwa sag:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
for i:=0 to 1000000
  for i2:= to 1000000
    if array[i] <> array2[i2] then 
    begin
      array2[i3]:=array[i];
      i3:=i3+1;
    end;
  end;
end;


müsste doch hinhauen oder
(hab gad kein delphi zum probieren....)

mfg
Philipp


Calculon - Mo 19.02.07 21:10

Hab' ich das richtig verstanden: In array und array2 steht dasselbe drin? Zum einen ist das speichernutzungstechnisch von Nachteil und zum anderen durchläufst du auf diese Weise etwas mehr als 10^12 Iterationsschritte. Ich weiß ja nicht wie die Stringlist das intern handhabt, aber ich behaupte jetzt einfach mal die ist effektiver.

Gruß

Calculon
--


IngoD7 - Mo 19.02.07 21:57

user profile iconPhilipp_Reitter hat folgendes geschrieben:
ich denk ich lass dann einfach zum schluss wenn ich die strings in ne datei schreibe einfach das aussortieren lasse indem ich einfach so in etwa sag:


Ach...?! Und bis dahin - also bis zum "Schluss" - ist es egal, ob die Liste doppelte Einträge hat?
Wofür dient denn dein Programm?

Das Auslesen einer String-Liste dauert übrigens in etwa gleich lange wie das Auslesen eines String-Arrays.