Du verwendest ein echtes Inifile im Textformat,das ist Deine erste Bremse und nur für kleine Dateien geeignet.
Speichere und lade mit einem Stream,das ist zwar nicht so übersichtlich, aber um einiges schneller.
Ansonsten bräuchten wir wohl etwas mehr Kot.
Delphi-Quellcode:
unit MyStream_U;
interface
Uses Classes;
//TStream
Procedure WriteInt(Stream:TStream;I:Longint);
Procedure ReadInt(Stream:TStream;
Var I:Longint);
Procedure WriteStr(Stream:TStream;S:
String);
Procedure ReadStr(Stream:TStream;
Var S:
String);
implementation
//StreamPocedures
Procedure WriteStr(Stream:TStream;S:
String);
Var Len:Longint;
begin
Len:=Length(S);
Stream.
Write(Len,SizeOf(Len));
Stream.
Write(PChar(S)^,Len);
end;
Procedure WriteInt(Stream:TStream;I:Longint);
begin
Stream.
Write(I,SizeOf(I));
end;
Procedure ReadStr(Stream:TStream;
Var S:
String);
Var Len:Longint;
begin
Stream.
Read(Len,Sizeof(Len));
Setlength(S,Len);
Stream.
Read(PChar(S)^,Len);
end;
Procedure ReadInt(Stream:TStream;
Var I:Longint);
begin
Stream.
Read(I,SizeOf(I));
end;
///// Stream Ende
end.
Delphi-Quellcode:
Uses MyStream_U; //Edit
Function MySave(Filename_:String):Boolean;
Var
Stream:TStream;
Len:integer;
cnt1:integer;
begin
result:=false;
while Filename_='' do exit;
with GLAudioForm do
Try
Stream:=TFilestream.Create(Filename_,fmcreate);
//Audiokat - Beispiel nicht copy/paste fähig
Len:=Length(AudioKat);
WriteInt(Stream,Len);
for cnt1 := 0 to Len- 1 do
begin
TestS:=AudioKat[cnt1].AKFilename;
writeStr(Stream,AudioKat[cnt1].AKFilename);
end;
.
.
.
Delphi-Quellcode:
Uses MyStream_U; //Edit
Function MyLoad(Filename_:String):Boolean;
Var
Stream:TStream;
Len:integer;
cnt1:integer;
SData:String;
//f: PChar;
begin
Result:=False;
Len:=0;
while not Fileexists(Filename_) do
begin
exit;
end;
Stream:=TFileStream.Create(Filename_,fmOpenread);
with GLAudioForm do
Try
//AudioKat
ReadInt(Stream,Len);
Setlength(AudioKat,Len);
for cnt1 := 0 to Len- 1 do
begin
ReadStr(Stream,SData);
Add_to_AudioKat(SData,cnt1);
end;
.
.
.