Einzelnen Beitrag anzeigen

Benutzerbild von GuenterS
GuenterS

Registriert seit: 3. Mai 2004
Ort: Österreich > Bad Vöslau
760 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Schutzverletzung beim Freigeben einer TStringList

  Alt 15. Okt 2005, 20:53
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;
Günter
Pünktlichkeit ist die Fähigkeit vorherzusagen um wieviel sich der Andere verspäten wird.
  Mit Zitat antworten Zitat