AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Playlist class gedanken vorher!

Ein Thema von Jmh124 · begonnen am 19. Apr 2007 · letzter Beitrag vom 11. Aug 2007
Antwort Antwort
Jmh124

Registriert seit: 25. Okt 2006
13 Beiträge
 
#1

Playlist class gedanken vorher!

  Alt 19. Apr 2007, 12:22
Hi,

Der Hintergrund hierbei, ich versuche mir nen kleinen mp3 player zum üben zu basteln,
und wollte hierbei eine Playlist machen.

1. eine playlist groupbox realisiert mit TTreeView
2. TStringGrid zum visualisieren des Inhalts der einzelnen Nodes/Playlist gruppen
3. ein zweidimensionales array wo alle mp3s drin stehen und ich je nach klick im TTreeView in dem array suche.


Ist das so eine gute möglichkeit?

ich habe ein TObject aus einem StringGrid und ein zweidimensionales dynamisches array.
bisher hab ich den TTreeView so das einfügen von nodes etc funktioniert,
auch einfügen in die Stringgrid bekomme ich hin.
Mein PRoblem jetzt wie/wo am besten verpacke ich die daten?

Ich wollte so viel wie mögilch an daten speichern wie die id3v1 und id3v2 daten um nicht jedesmal auf die dateien zugreifen zumüssen dafür.

somit hab ich ein record erstellt mit pfadn titel, artist und so weiter.

und dann eine variable die ein dynamisches array dieses records darstellt:

Delphi-Quellcode:
type
PTrackList = ^TTracklist;
TTrackList = record

  path: String[255];
  node: string[255];
  length, freq,kb,size: integer;
  id1titel, id1artist, id1genre, id1album, id1year, id1comment, id1version: string[30];
  id2titel, id2artist, id2genre, id2album, id2year, id2comment, id2version: string[255];
end;

var
PlayLists:array of PTracklist;
Meine Überlegung jetzt ich speichere mir den "Pfad des Nodes" und suche dann immer im array und zeige
dann alles an im StringGrid.

Jetzt muss ich halt irgendwie noch den pointer speichern auf den Array Teil damit ich auch bei nem doppel klick im Stringgrid drauf zugreifen kann.

Ist diese möglichkeit viel zu umständich?
Gibt es eine einfachere schnelle möglichkeit?

Danke für jede hilfe ich bin grad etwas verloren in den ideen und ohne das nötige hintergrund wissen ob das alles so möglich ist oder ob es eine einfachere möglichkeit gibt.

Grüße,
Julian
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#2

Re: Playlist class gedanken vorher!

  Alt 19. Apr 2007, 12:34
Erst mal sauber das Problem beschreiben. Was ist eine Playlist?
Unter einer Playlist verstehe ich eine Liste von Musiktiteln, die in der Reihenfolge der Liste abgespielt werden sollen. Eine Jobqueue also.
Der (Datei)-Baum der vorhandenen Musiktitel ist nur der Vorrat an fuer die Playlist waehlbaren Musiktitel.

Was du beschrieben hast ist ein komplettes Programm mit der Visualisierung von sowohl der Playlist als auch dem Baum der titel und der Interaktion dazwischen.
  Mit Zitat antworten Zitat
Hafish

Registriert seit: 22. Mär 2007
37 Beiträge
 
#3

Re: Playlist class gedanken vorher!

  Alt 19. Apr 2007, 12:39
Ich glaube du würdest mit einem VirtualTreeView deutlich besser fahren als mit einem normalen TTreeView Da kannst du nämlich direkt in den Nodes den entsprechenden Pointer speichern. Dann musst du dir keine großen Gedanken machen wie du die Pointer speicherst. Außerdem brauchst du dann nicht die ganzen Daten des Records ständig im Speicher zu halten, denn was wichtig ist ist ja eigentlich nur die Länge, die "Caption" (also vielleicht "Artist - Titel"...ka) und halt der Pfad zur Datei. Die restlichen Details kannst du ja dann immer noch aus der Datei auslesen.
  Mit Zitat antworten Zitat
Jmh124

Registriert seit: 25. Okt 2006
13 Beiträge
 
#4

Re: Playlist class gedanken vorher!

  Alt 19. Apr 2007, 12:46
meiner meinung nach gehört das alles zu den gedanken die man sich machen muss bevor man richtig loslegt.
ich wollte halt nicht einfach nur ne playlist in der der pfad steht und nach und nach wird der text der zeile geholt und das mp3 geladen, sondern eher eine klasse, die eine playlist anzeige hat,
und verschiedene sog. verzeichnisse/Gruppen.

Nur weiss ich manche sachen einfach nicht,
z.B. wenn ich die daten immer gleich in einer csv, ini speichere ab wieviel dateien wird das langsam?
wie speichere udn lese ich die nodes dann einzeln.. etc.
Wenn ich jetzt irgendwo anfange udn das hinterher zu langsam ist hab ich natürlich eine menge zeit vergeudet etwas zu programmieren was von anfang an nicht funktioniert hätte.

Daher meine frage was am besten man nimmt, die daten direkt in einem Stringgrid speichern halte ich für schlecht da daten und komponenten ja nicht unbedingt zusammen gehören sollten.

Ein array da hab ich auch meine zweifel ob das so gut ist, da ich die zuordnung von Gruppe/Verzeichniss nicht wüsste wie sie eindeutig gemacht werden soll.

Was bleibt? oder übersehe ich irgendwas?

@haifisch:
das problem wäre dann, wie sucht man nach dateien in den versch. playlisten.
wenn man nicht nur nach artist und title suchen möchte sondern z.B. auch nach genre year oder comment.
dann wäre das ganze festplatten intensiv! oder nicht? bei z.B. 60.000 titeln die ich besitze


Vielen dank.
Julian
  Mit Zitat antworten Zitat
Hafish

Registriert seit: 22. Mär 2007
37 Beiträge
 
#5

Re: Playlist class gedanken vorher!

  Alt 19. Apr 2007, 14:25
Gerade weil du 60.000 Titel besitzt wird dein Programm dann aber auch (60.000 * Größe deines Records[= 152640000 Byte]) mehr Speicher verbrauchen.
Ich persönlich würde es so machen:

- Eine Datenbank, größenoptimiert versteht sich^^
- Da kommen alle Titel-Informationen rein, nach denen du suchen willst, z.b. Artist, Genre etc. UND ein einmaliger Index
- Jetzt nimmst du ein VirtualTreeView und hängst da die einzelnen Items dran: Bei einer PlayList alles was abgespielt werden soll, bei einer Suche alles was deine Suchkriterien trifft.
- Und ein einzelnes Item besteht aus: Caption (das was im Node angezeigt wird) und ein Integer, der den Index in der Datenbank speichert.

Wenn dann ein Benutzer auf einen Eintrag klickt, springst du an die entsprechende Stelle in der Datenbank und holst dir die Details.

Auf diese Art bleibt deine Speicherbenutzung Minimal, während der belegte Festplatten-Speicher ansteigt. Aber im Zweifelsfall hat ein Benutzer immer mehr Festplattenspeicher als Hauptspeicher

Edit:
Zitat von Jmh124:
Wenn ich jetzt irgendwo anfange udn das hinterher zu langsam ist hab ich natürlich eine menge zeit vergeudet etwas zu programmieren was von anfang an nicht funktioniert hätte.
So würd ich das nicht sagen, denn du HAST es dann einmal gemacht. Und du hast du dann damit beschäftigt, nur so lernt man zu Verstehen. Learning by Doing bringt 1000x mehr als irgendwelchen Quellcode zu kopieren oder sich die Lösung genauestens vorkauen zu lassen. Wenn du etwas schreibst was sich am Ende als nicht perfekt herausstellt ist das nicht schlimm, sondern Teil des natürlichen Lernprozesses.
  Mit Zitat antworten Zitat
Jmh124

Registriert seit: 25. Okt 2006
13 Beiträge
 
#6

Re: Playlist class gedanken vorher!

  Alt 11. Aug 2007, 20:19
da ich mal wieder zeit habe würde ich hier gerne weiter machen
was ist eine größen optimierte datenbank?

Ich würde ungern die ODBC oder DAO etc wie sie alel heissen nutzen, da nicht jeder sie installiert hat.
Somit eher etwas, das ohne große installatino funktioniert,
selbst xml dürfte hier nicht greifen bei 60.000 einträgen oder mehr (da titel ja gerne doppelt in manchen playlisten sein können)...

Von daher was für eine Datenbank nimmt man am einfachsten?

Mfg Julian
  Mit Zitat antworten Zitat
Benutzerbild von arbu man
arbu man

Registriert seit: 3. Nov 2004
Ort: Krefeld
1.108 Beiträge
 
Delphi 7 Professional
 
#7

Re: Playlist class gedanken vorher!

  Alt 11. Aug 2007, 20:22
Als DB eine Enbedded z.B. Firebird (Da brauchst du keinen Server installieren)
Björn
>> http://bsnx.net <<
Virtual DP Stammtisch v1.0"iw" am 19.09.2007 - ich war dabei!
  Mit Zitat antworten Zitat
Benutzerbild von semo
semo

Registriert seit: 24. Apr 2004
755 Beiträge
 
Delphi 2010 Professional
 
#8

Re: Playlist class gedanken vorher!

  Alt 11. Aug 2007, 20:37
iTunes speicher zum Beispiel alles in eine XML Datei....
Schaust du dir am besten mal an was die da alles so reinpacken.
  Mit Zitat antworten Zitat
Jmh124

Registriert seit: 25. Okt 2006
13 Beiträge
 
#9

Re: Playlist class gedanken vorher!

  Alt 11. Aug 2007, 22:40
ja ja.. das liebe firebird..
habe jetzt zeos installiert, firebird embedded 1.5.4 und kriege eine verbindung hin.
Jedoch zeigen mir weder die examples von zeo noch irgendein anderes tool datenbank inhalte an...

mit dem zeo tool ne db erstellt und dann mit IBOConsole ein paar daten reingetan ni die Tabelle.
Dann im debug modus, ZConenction auf Conencten gestellt und dann ZTable auf die richtige Tabelle.
ZConnection wieder auf aus und dann im Onload der Form ZConnection auf connect.
Per button press kommt dann ZTable1.Open;
genau dann kommt der fehler:

-204 das die tabelle nicht existiert?!?! die konnte er vorher aber noch auswählen was läuft falsch einer erfahrungen?

Danke,
Mfg Julian
  Mit Zitat antworten Zitat
Antwort Antwort


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 22:59 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