Ich bekomme das nicht berechnet.
Gehe jetzt wie folgt vor.
Delphi-Quellcode:
// Display Song Name
SongNameTmp := BassSoInfo.SongTitle;
OldTitle := string(BassSoInfo.Songfile);
if assigned(SongNameTmp) then
begin
SetLength(Char, length(SongNameTmp));
// Only change if Title different
if (OldTitle <> CurrentTitle) then
begin
//Get max length of String
fMaxStrLen := tsTextGetWidthA(SongNameTmp);
if fMaxStrLen >= 635 then
begin
// Parse width of Glyph
for I := 0 to High(Char) do
begin
Char[I] := WideChar(SongNameTmp[I]);
CharLength := tsFontGetCharParameteri(Char[I], TS_CHAR_GLYPHRECT_RIGHT);
CharLen := CharLen + CharLength;
end;
// CharLen = length of all combine Glyph
if CharLen >= ((CharLen - fMaxStrLen) + 635) then
begin
SongName := PAnsiChar(Ansistring(Ansimidstr(string(SongNameTmp), 1, 58) + '...'));
end;
end
else
SongName := BassSoInfo.SongTitle;
CurrentTitle := OldTitle;
end;
Ich scheitere hier dran '58'
Der Abstand zur Zeitanzeige ist immer unterschiedlich abhängig davon wie groß die Glyphen sind.
Die Chars beider Dateien sind identisch.
gruss