Hallo, mir ist aufgefallen, dass Du die kl StringListe öfter als notwendig durchgehst (bzw. brauchst Du sie gar nicht durchgehen), habe deine procedure dahingehend überarbeitet, dass dies nicht passiert und auch schon die try ... finallys eingebaut.
Delphi-Quellcode:
procedure TueWas(
xml, Ziel:
string);
var
sl, kl: TStringList;
kap:
string;
i, von, bis: integer;
begin
kl := TStringList.Create;
// Stringlist für die Kapitelzeiten
try
sl := TStringList.Create;
// Stringlist für das XML
try
sl.LoadFromFile(
xml);
// Laden der XML
for i := 0
to sl.Count - 1
do // Suchen der Tags mit den Kapitelzeiten
if pos('
entry id=', sl.Strings[i]) > 0
then
begin
von := pos('
>', sl.Strings[i]);
// Ende des Anfang-Tags
bis := pos('
</', sl.Strings[i]);
// Anfang des Ende-Tags
if bis > von
then
begin
kap := copy(sl.Strings[i], von + 1, bis - von - 4);
kap := StringReplace(kap, '
.', '
,', rfReplaceAll);
if StrToFloat(kap) <> 0
then
kl.Add(FormatSecS(kap));
// Zeit in Kapitelliste kopieren
end;
end;
finally
sl.Free;
//StringList des XML freigeben
end;
if kl.Count > 0
then {// Die Kapitelliste speichern }
begin
kap := (ChangeFileExt(Ziel, '
.Kapitel'));
// Ziel ist die *.mpg von der SVCD
kl.SaveToFile(kap);
end;
finally
kl.Free;
end;
end;