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:
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;
Als nächstes sollte ich mir wohl mal über eine einfachere Lösung zum Thema GetFileSize und GetFileTimes machen,
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.