Delphi-PRAXiS
Seite 3 von 4     123 4      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi WMA Tags lesen und SCHREIBEN (https://www.delphipraxis.net/78147-wma-tags-lesen-und-schreiben.html)

Nils_13 30. Sep 2006 16:50

Re: WMA Tags lesen und SCHREIBEN
 
Ich denke es liegt an den Pointern. Pointer machen nie, was man will. Das nur Artist in de rListbox steht ist kein Wunder, denn der String wird durch #0 terminiert. Es gibt da den Copy-Befehl, aber die Zeichenfolge nach dem String wird vlt. von WMA zu WMA unterschiedlich sein und somit könnte das schwer werden.

EWeiss 30. Sep 2006 17:01

Re: WMA Tags lesen und SCHREIBEN
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von Nils_13
Ich denke es liegt an den Pointern. Pointer machen nie, was man will. Das nur Artist in de rListbox steht ist kein Wunder, denn der String wird durch #0 terminiert. Es gibt da den Copy-Befehl, aber die Zeichenfolge nach dem String wird vlt. von WMA zu WMA unterschiedlich sein und somit könnte das schwer werden.

Bei mir auch in der TEdit 'show Pic' habe dort auch keine zusätzlichen zeichen.
Die zeichenfolge nach dem string ist abhängig vom Titel.
Dürfte aber uninteressant sein.

Du mußt den String spliten mit dem Delemiter "'" und alles wegschneiden was hinter dem 2 "'" zeichen steht.
Dann bleibt nur noch 'ads' übrig.

NE andere Idee habe ich da auch nicht.

Nils_13 30. Sep 2006 17:08

Re: WMA Tags lesen und SCHREIBEN
 
Warum funktioniert es bei dir, aber nicht bei mir :shock: ?

In der Tagform wird alles korrekt angezeigt, aber nicht in der Playlist und im Lauftext.

EWeiss 30. Sep 2006 17:10

Re: WMA Tags lesen und SCHREIBEN
 
Zitat:

Zitat von Nils_13
Warum funktioniert es bei dir, aber nicht bei mir :shock: ?

Check doch mal die Properties deiner TEdit mit den
Properties TEDIT von meinen Sample.
Möglich das dort das problem liegt.

Gruß

Nils_13 30. Sep 2006 17:13

Re: WMA Tags lesen und SCHREIBEN
 
Hm? Die Tags sind in deiner Demo genauso, wie bei mir, nur in der Playlist und im Lauftext nicht.

EWeiss 30. Sep 2006 17:15

Re: WMA Tags lesen und SCHREIBEN
 
Zitat:

Zitat von Nils_13
Hm? Die Tags sind in deiner Demo genauso, wie bei mir, nur in der Playlist und im Lauftext nicht.

Was sind denn fFiles[i] ? controls ? oder array.

gruß

Nils_13 30. Sep 2006 17:18

Re: WMA Tags lesen und SCHREIBEN
 
Liste der Anhänge anzeigen (Anzahl: 1)
Delphi-Quellcode:
fFiles : Array of TAudioFile;
[ironie]Und noch was: Warum lädt immer jeder alles runter, obwohl ihn wahrscheinlich nur der Code interessiert...oh was ist denn das lad es mir mal runter.[/ironie] Eine ähnliche Unit kriegt ihr übrigens kostenlos im DF....

Hier mal die Unit, in der TAudioFile steht:

EWeiss 30. Sep 2006 17:23

Re: WMA Tags lesen und SCHREIBEN
 
Zitat:

Zitat von Nils_13
Delphi-Quellcode:
fFiles : Array of TAudioFile;
Hier mal die Unit, in der TAudioFile steht:

Versuch doch mal folgendes.
Nur zum testen .. leg mal ein TEdit in deiner form an.
und weise den einen index 0 zu.
So das dieses als array angesprochen wird.
Dann lade die TEDIT dynamisch zur laufzeit.. und weise diesen den Titel zu.

Übergeben den Titel von TEDIT(1) oder was auch immer an die Playlist und schau was passiert.

gruß

Nils_13 30. Sep 2006 17:33

Re: WMA Tags lesen und SCHREIBEN
 
Ich habe es so gemacht:
Delphi-Quellcode:
//Lauftext
PlayFile(playindex);
with fFiles[playindex] do
begin
  s := Artist + ' - ' + Titel + ' [' + trim(DurationMinSec(IntToStr(GetSongLength))) + ']';
  lLauftext.Text   := s;
  lLauftext.Active := True;
  lLauftext.Transparent := True;
  Application.Title := s;
  Memo1.Lines.Add(s);
end;
Das Ergebniss:
Delphi-Quellcode:
PaulE
Der String wird terminiert. Das mit dem Copy wird auch mit deinem Prinzip sehr schwer, da sich die Zeichenfolge in der einen Datei z.B. 5 Zeichen lang ist und in der Anderen z.B. 7. Wir sollten dem Fehler auf den Grund gehen, anders geht es nicht, selbst wenn ist es sehr schlecht und fehleranfällig.

EWeiss 30. Sep 2006 17:44

Re: WMA Tags lesen und SCHREIBEN
 
Zitat:

Der String wird terminiert. Das mit dem Copy wird auch mit deinem Prinzip sehr schwer, da sich die Zeichenfolge in der einen Datei z.B. 5 Zeichen lang ist und in der Anderen z.B. 7. Wir sollten dem Fehler auf den Grund gehen, anders geht es nicht, selbst wenn ist es sehr schlecht und fehleranfällig.
Ja ! Versuche dir ja zu helfen.
Hätte auch eine Lösung anzubieten.

Simple :)


Delphi-Quellcode:
Var
RTitle: Shortstring;
RArtist: Shortstring;
 
procedure TForm1.OpenPBClick(Sender: TObject);
var
  TagsData: PTagsData;
begin
  if not opendialog1.Execute then
    exit;
  ClearAll;
  lblFileName.Caption := opendialog1.FileName;
  SavePB.Enabled := true;
  New(TagsData);
  try
    OpenWMAFile(opendialog1.FileName, TagsData);
    fFilesize.Text := inttostr(TagsData.FileSize) + ' bytes';
    fDuration.Text := DurationToStr(TagsData.Duration, true) + ' sec ';
    fBitRate.Text := inttostr(TagsData.BitRate div 1000) + ' kbit';
    fVBR.Text := booltostr(Tagsdata.VBR, true);
    fEncoder.Text := TagsData.Version;
    fGenre.Text := TagsData.Genre;
    fArtist.Text := TagsData.Author;
    fComposer.Text := TagsData.Composer;
    fTitle.Text := TagsData.Title;
    fAlbum.Text := TagsData.Album;
    fYear.Text := TagsData.Year;
    fTrack.Text := TagsData.Track;
    fURL.Text := TagsData.Url;
    fCopyRight.Text := TagsData.CopyRight;
    fComments.Text := TagsData.Comments;
    fLyrics.Text := TagsData.Lyrics;
  finally
    DisPose(TagsData);
  end;
  // Schau hier das wars!
  RTitle := fTitle.Text;
  RArtist := fArtis.Text;
  s := RArtist + ' - ' + RTitle + ' [' + trim(DurationMinSec(IntToStr(GetSongLength))) + ']';
end;
Bei mir wird beim Debuggen alles einwandfrei ohne zusätze angezeigt.

EDIT: Könnte reichen wenn du deine Strings mal nach ShortString ändern würdest!

Gruß


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:14 Uhr.
Seite 3 von 4     123 4      

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