AW: Insert-Schleife viel zu langsam
Santa Laus ... ein Sack voller Überraschungen :angle:
|
AW: Insert-Schleife viel zu langsam
Na ihr habt ja den sprichwörtlichen Clown verschluckt ;)
Ich habe die Prozedur noch ein bisschen beschleunigen können, nach dem himitsu meinen Knoten im Schlauch entfernt hat. Zum Thema StringLuder, die StringList wird immer ordnungsgemäß nach ihrem Gebrauch frei gegeben und sie wird nicht gleichzeitig an mehreren Stellen verwendet. Ich habe 3 unterschiedliche Einleseprozesse, welche aber noch ineinander integriert werden sollen. Die StringList hat dann nur noch eine Aufgabe und dann kann ich sie bequem gemäß ihrem Zweck benennen.
Delphi-Quellcode:
Als nächstes sollte ich mir wohl mal über eine einfachere Lösung zum Thema GetFileSize und GetFileTimes machen,
procedure TFRM_Main.ReadInInvA;
var i, invasize:Integer; invaaccessed, invacreated, invamodified:String; created, accessed, modified:TDateTime; begin DB_Container.Close; DB_Container.Directory := CXBE_InvDir.Text; DB_Container.Open; TBL_Container.DatabaseName := DB_Container.DatabaseName; TBL_Container.TableName := invaname; DB_Container.StartTransaction; TBL_Container.Open; TBL_Container.DisableControls; for i := 0 to SL.Count-1 do begin if GetFileTimes(CXBE_DbDir.Text+'\'+SL[i], created, accessed, modified) then begin invaaccessed := DateTimeToStr(accessed); invacreated := DateTimeToStr(created); invamodified := DateTimeToStr(modified); end; invasize := GetFileSize(CXBE_DbDir.Text+'\'+SL[i]); TBL_Container.AppendRecord([null, SL[i], invacreated, invamodified, invaaccessed, invasize]); end; TBL_Container.EnableControls; TBL_Container.Close; DB_Container.Commit; DB_Container.Close; end; allerdings muss ich mich dazu noch einmal genau belesen.. Sinnvoll wäre es doch eventuell diese Informationen über eine Funktion auszulesen, oder? Außerdem könnte ich bei AppendRecord genausogut DateTimeToStr(created) usw eintragen, anstatt erst Variablen zu befüllen. |
AW: Insert-Schleife viel zu langsam
Was passiert eigentlich wenn
Delphi-Quellcode:
fehlschlägt?
GetFileTimes
Gruß K-H |
AW: Insert-Schleife viel zu langsam
Das ist richtig, ich hab bisher noch keine Fehlerbehandlungsroutinen eingebaut. Mir geht es zunächst um die Performance und Logik der wichtigsten Funktionen.
Die Fehlerbehandlung ist aber schon vorgemerkt.
Delphi-Quellcode:
procedure TFRM_Main.ReadInInvA;
var i:Integer; created, accessed, modified:TDateTime; begin ... for i := 0 to SL.Count-1 do begin GetFileTimes(CXBE_DbDir.Text+'\'+SL[i], created, accessed, modified); TBL_Container.AppendRecord([null, SL[i], DateTimeToStr(created), DateTimeToStr(modified), DateTimeToStr(accessed), GetFileSize(CXBE_DbDir.Text+'\'+SL[i])]); end; ... end; |
AW: Insert-Schleife viel zu langsam
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:07 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz