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