Forum: Object-Pascal / Delphi-Language
Delphi
by sakura,
12. Apr 2006
Neue Fragen abgetrennt - neuer Sachverhalt: http://www.delphipraxis.net/internal_redirect.php?t=80474
...:cat:...
Forum: Object-Pascal / Delphi-Language
Delphi
by sakura,
10. Apr 2006
SO, bevor ich Dich jetzt auseinander nehme :mrgreen: zu meiner Verteidigung. Obige Lösung hatte ich blind in den Browser getippt ;)
Das war mir klar, daher habe ich mal Deine Aussage alle einzeln getestet. Es zeigt sich, dass man nie immer sagen sollte.
Der Gewinn lag hier bei unter 0,1%, hätte ich mehr erwartet.
Macht gar keinen Unterschied. Einfacher Grund, intern wird immer noch rückwärts...
Forum: Object-Pascal / Delphi-Language
Delphi
by sakura,
10. Apr 2006
Darfst Du ruhig. Es kommt immer auf das Einsatzziel an. Will man hin und wieder mal einen kurzen Text "putzen und polieren", dann reicht Deine Lösung vollends und ist leicht zu verstehen. Muss man größere Datenmengen bearbeiten oder auch sehr häufig kleinere mal "putzen", dann wird Optimierung interessant ;)
...:cat:...
Forum: Object-Pascal / Delphi-Language
Delphi
by sakura,
10. Apr 2006
Beschäftige Dich mal ein wenig mit der String-Behandlung von Delphi. Immer wenn Du den via Delete/StringReplace änderst, wird mind. einmal neuer Speicher reserviert, kopiert, verschoben, etc. Das dauert einfach seine Zeit. Und genau da habe ich angesetzt. Ich habe im Voraus den max. benötigten Speicher reserviert, dann die entsprechenden Bytes kopiert und anschließend den überschüssigen Speicher...
Forum: Object-Pascal / Delphi-Language
Delphi
by sakura,
10. Apr 2006
Nimm mein, die hat auf meinem PC nur 0,78 Millisekunden benötigt :mrgreen:
...:cat:...
Forum: Object-Pascal / Delphi-Language
Delphi
by sakura,
10. Apr 2006
Vielleicht, vielleicht aber auch nicht :mrgreen: Hier mal der TestCode (2 Labels auf einer Form)procedure TForm1.Button1Click(Sender: TObject);
const
x: array of string = (
'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
#32, #32#32
);
TEST = 1000;
var
Start, Stop, Freq: Int64;
Forum: Object-Pascal / Delphi-Language
Delphi
by sakura,
10. Apr 2006
Die Lösung funktioniert und ist schön kurz, aber hast Du Dir Gedanken über die Geschwindigkeit gemacht :shock:
...:cat:...
Forum: Object-Pascal / Delphi-Language
Delphi
by sakura,
10. Apr 2006
Das funktioniert, wie auch bei anderen Zeichen mit StringReplace nicht. Wenn Du aus 'aa' einfach 'a' machen willst, dann wird aus dem String baac -> bac, und aus baaaac -> baac, ist bei Leerzeichen nicht anders.
Da musst Du Dir selbst eine kleine Funktion schreiben. Z.B.: function RemoveDblSpaces(const InStr: string): string;
var
LastIsSpace: Boolean;
I, Cnt: Integer;
Res: string;...