AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi crash in FindFile OpenGl

crash in FindFile OpenGl

Ein Thema von EWeiss · begonnen am 8. Jul 2008 · letzter Beitrag vom 11. Jul 2008
 
EWeiss
(Gast)

n/a Beiträge
 
#1

crash in FindFile OpenGl

  Alt 8. Jul 2008, 05: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
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:25 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz