![]() |
Re: Ladebalken der anzeigt wan procedure beendet ist
Hallo,
solange du deinen Code noch beschleunigen kannst, solltest du nicht an einen Ladebalken denken.
Delphi-Quellcode:
So hast du deine Prozedur zur Funktion umgebaut. Da jetzt nicht mehr 126 mal auf die Texteigenschaft des Memos zugegriffen wird, wird der Code sicher etwas schneller ausgeführt. Noch schneller wird der Code, wenn du nicht mehr mit StringReplace() arbeitest, da mit dieser Funktion jedesmal wieder der gesamte Text abgesucht wird. Wenn du nur einmal über deinen Text gehst, wird alles noch schneller.
function Encode(const s, key1a, ..., key3b: string): string;
var buf: string; begin buf := StringReplace(s, 'a','th%6' , [rfReplaceAll]); buf := StringReplace(buf, 'b','g' + key3b + 'fhu' , [rfReplaceAll]); // ... buf := StringReplace(buf, '9','H$' + key1b + ')' , [rfReplaceAll]); Result := StringReplace(buf, '0','H$' + key1b + '=' , [rfReplaceAll]); end;
Delphi-Quellcode:
Wenn du dann als nächsten Schritt noch die zu erwartende Größe des Ergebnisses berechnest, dann entfällt auch noch das aufwändige schrittweise Vergrößern von buf und alles wird noch einmal deutlich schneller.
function Encode(const s, key1a, ..., key3b: string): string;
var i: Integer; buf: string; begin buf := ''; for i := 1 to Length(s) do case s[i] of 'a': buf := buf + 'th%6'; 'A': buf := buf + 'g' + key3b + 'fhu'; // ... '9': buf := buf + 'H$' + key1b + ')'; '0': buf := buf + 'H$' + key1b + '='; else buf := buf + s[i]; end; Result := buf; end; Bevor du dann daran gehst einen Fortschrittsbalken anzuzeigen, musst du erstmal den zu erwartenden Zeitbedarf ausrechnen. Freundliche Grüße vom marabu |
Re: Ladebalken der anzeigt wan procedure beendet ist
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:37 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz