Thema: Delphi crash in FindFile OpenGl

Einzelnen Beitrag anzeigen

EWeiss
(Gast)

n/a Beiträge
 
#1

crash in FindFile OpenGl

  Alt 8. Jul 2008, 06:17
Weis nicht was los ist aber mit unter crasht meine Anwendung sobald ich
den dritten oder vierten Titel starte und das dazugehörige Cover eingeladen wird.
Es kommt keine bezeichnende meldung außer das standard mäßige AV kann nicht lesen bla.. bla

In LoadSetting gebe ich die Texturen frei
Delphi-Quellcode:
    if Assigned(QuadTexture) then
    begin
      glDeleteTextures(Length(QuadTexture), @QuadTexture[Low(QuadTexture)]);
      SetLength(QuadTexture, 0);
    end;

    glDeleteTextures(1, @BackTexture); // Texture für Hintergrund
    glDeleteTextures(1, @GradientTex); // Texture für DiskSpectrum
    glDeleteTextures(1, @MeterTexture); // Texture für VUMeter
    glDeleteTextures(1, @PeaksTexture); // Texture für Peaks
    glDeleteTextures(1, @SpectrumTexture); // Texture für Spectrum
    glDeleteTextures(1, @BarTexture); // Texture für Slider
    glDeleteTextures(1, @PrivateTexture); // Texture für CDLabel
    glDeleteTextures(1, @NoCoverTexture); // Texture für NoCover

    SetLength(quadTexture, QuadCount);
dann werden neue Cover gesucht

Delphi-Quellcode:
procedure ScanDirectory(Path, Mask: String; SubFolder: Boolean);
var
  Attrib,k : Integer;
  Search : TSearchRec;
  aFileName : string;
  tmpFile : string;
begin
  Attrib := faArchive + faReadOnly + faHidden;

  if Path[Length(Path)] <> '\then Path := Path + '\';

  with TStringList.Create do
  try
    CommaText := Mask;
 
    for k := 0 to Count - 1 do
    if FindFirst(Path + '*.' + Strings[k], Attrib, Search) = 0 then
      repeat
        aFileName := ExtractFileName(Search.Name);
        // extract extension
        aFileName := Copy(aFileName, 1, length(aFileName) - length(ExtractFileExt(aFileName)));
        // UpperCase
        aFileName := AnsiUpperCase(aFileName);
        tmpFile := AnsiUpperCase(Path + Search.Name);
        if (aFileName = 'COVER') or (aFileName = 'CDLABEL') then
        begin
          if (not CheckIfDouble(tmpFile, aCovers, false)) then
            aCovers.Add(AnsiUpperCase(Path + Search.Name));
        end;
      until FindNext(Search) <> 0;

    SysUtils.FindClose(Search);
  finally
    Free
  end;

  if SubFolder then
  begin
    if FindFirst(Path + '*.*', faDirectory, Search) = 0 then
    begin
      repeat
        if ((Search.Attr and faDirectory) = faDirectory) and
          (Search.Name[1] <> '.') then
          ScanDirectory(Path + Search.Name, Mask, SubFolder);
      until FindNext(Search) <> 0;

      SysUtils.FindClose(Search);
    end;
  end;

end;
hier wird die function zum suchen aufgerufen
Delphi-Quellcode:
    if ShowCover = true then
    begin
      if not assigned(aCovers) then
        aCovers := TStringList.Create;

      if CoverPath <> 'then
      begin
        if CoverPath <> Path then
          ScanDirectory(CoverPath, 'bmp, tga, jpg', False);

        if (aCovers.count <= QuadCount) then
        begin
          aFilledQuads := 0;
          for i := 0 to aCovers.count-1 do
          begin
            // den Dateinamen extrahieren
            aFileName := ExtractFileName(aCovers[i]);
            // die Dateiendung abscheiden
            aFileName := Copy(aFileName, 1, length(aFileName) - length(ExtractFileExt(aFileName)));
            // Upper-Case machen
            aFileName := AnsiUpperCase(aFileName);

            if (aFileName <> 'COVER') then
            begin
              QuadTexture[i] := NoCoverTexture;
              dec(aFilledQuads);
            end else
            begin
              LoadTexture(aCovers[i], quadTexture[aFilledQuads], False);
            end;
            inc(aFilledQuads);
          end;

          if (QuadCount >= (aCovers.count - 1)) then
          begin
            for q := (aCovers.count - aFilledQuads) to QuadCount do
              QuadTexture[q] := NoCoverTexture;
          end; // end for i
        end; // end aCovers.count
      end; // end CoverPath
    end; //end ShowCover

end;
Das seltsame an der sache ist lasse ich die Titel einfach weiterlaufen
also wenn das eine beendet wird
das nächste über eine syncproc gestartet
dann läuft alles rund

Wechsel ich die Titel von Hand doppelklick
Kommt es vor das nach dem 3 oder 4 Titel die Anwendung beendet
mit dem oben genannten AV.

Weis mir keinen rat woran das liegen könnte.

gruss Emil
  Mit Zitat antworten Zitat