Entwickler-Ecke
Sonstiges (Delphi) - Wortwürfler
trm - Sa 21.07.12 22:47
Titel: Wortwürfler
Huhu. Ich weiß leider nicht, wonach ich suchen muss, damit ich meine Frage finde.
Anbei ein kleines Testprogramm, mit dem Stringkombinationen aus den verfügbaren Zeichen erzeugt werden.
Mein Prblem: viel zu langsam bei der Ausführung (4 Zeichen dauern schon extrem lange bei meinem DualCore).
Geht das in einer Art schneller, ohne, dass doppelte Worte vorkommen ?
jaenicke - So 22.07.12 00:12
Dass das so lange dauert, liegt daran, dass du die Ergebnisse direkt in das Memo schreibst. Das dauert eben.
Wenn du die stattdessen in eine Stringvariable schreibst und erst am Ende ins Memo, geht es deutlich schneller. ;-)
trm - So 22.07.12 01:02
Hm. Sowas vergesse ich immer wieder :(
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24:
| procedure P(var A: string; B: string); var J: Word; C, D: string; sl:TStringList; begin sl:=TStringList.Create; if Length(B) = SLen - R then begin sl.Add(A); Inc(x); end else for J := 1 to Length(B) do begin C := B; D := A + C[J]; Delete(C, J, 1); P(D, C); end; memo1.Lines.AddStrings(sl); sl.Free; end; |
Ist nun Dank der Stringlist erheblich schneller. Aber wenn ich mir andere Programme anschaue, die so etwas machen (sogar php-scripte), weiss ich nicht, wie das geht.
Würde es etwas nützen, wenn man Speicher vorbelegt?
Nano-Ware - So 22.07.12 10:59
Hey,
du könntest auch das Einlesen in die Stringlist in einem zweiten Thread erledigen und dann im Hauptthread die Memo-Ausgabe mit der StringList synchronisieren
jaenicke - So 22.07.12 13:54
Am schnellsten wäre es eine VirtualTreeView zu nehmen und die Werte gar nicht erst in der visuellen Komponente vorzuhalten. Dann reicht ein vorher auf die richtige Größe gebrachtes Array mit den Einträgen aus, das dann als Wertespeicher benutzt wird, bereits aus und du musst nur die entsprechende Anzahl Einträge in der TreeView erzeugen und in OnGetText die Strings aus dem Array holen.
trm - So 22.07.12 14:45
Moderiert von
Narses: Komplett-Zitat des letzten Beitrags entfernt.
Wird das nicht auch über eine TStringList schon in einer nicht-Visuellen Komponente gemacht mit meiner letzten Änderung?
jaenicke - So 22.07.12 20:58
Nein, du kopierst den Text ja dennoch komplett in die visuelle Komponente, obwohl nur ein Teil davon angezeigt wird.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!