AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte kleines CarPC Programm

kleines CarPC Programm

Ein Thema von bluescreen25 · begonnen am 22. Sep 2006 · letzter Beitrag vom 24. Sep 2006
Antwort Antwort
Seite 2 von 2     12
bluescreen25
Registriert seit: 27. Nov 2005
Der MMPlayer läuft bei mir nun im Auto und kann soweit MP3s aus Ordnern einlesen,Playlisten einlesen,speichern.
Dazu können Titel in den Player eingelesen,in der Liste untereinander verschoben, einzelne gelöscht und somit die Playliste letztendlich abgespeichert werden.

Er durchsucht die angewählten Ordner rekursiv nach den in den Einstellungen angegebenen Dateiendungen.

Ein Doppelklick auf einen Titel startet die Wiedergabe,bei beenden des Titels dann der Umsprung auf den nächsten der Liste. Hier kam es oft zu Stillständen in der letzten Sekunden beim abspielen, da die Tracklänge irgendwie nicht ganz korrekt ausgelesen und somit das Trackende nicht erreicht wurde um dann auf den nächsten zu springen. Habe dort dann einen Timer 3 sekunden vor Ablauf eingesetzt, wenn dann nach dieser Zeit der Titel nicht umspringt, macht dies der Timer.

Man kann durch das aktivieren des Pfeils rechts/mittig der Liste aktivieren, das sich der gerade abspielende Titel in der Mitte der Liste hält. Für weitere Aktivitäten innerhalb der Liste sollte dann der Pfeil wieder deaktiviert werden. Die Pfeile oben/unten an der Liste bewirken ein anspringen des ersten und letzten Titels.

Eingebaut ist ebenfalls das Auslagern einer Datei, in welcher der "letzte Zustand" bei beenden hinterlegt wird, wenn man dies in Einstellungen so aktiviert hat. Die letzte Liste, sowie Lautstärke wird dann beim nächsten Start eingelesen. Beim Start wird die letzte Endlautstärke innerhalb einer Zeit hochgefahren (Softstart).

Beim Starten des Programms werden die Titel der Liste abgefragt, ob diese noch wirklich existieren.

In den Einstellungen kann das MP3-Root-verzeichnis einmal eingestellt werden, aus dem dann beim nächsten Einlesen/Hinzufügen von Titeln erstmal wieder gestartet wird.

Die Navigation ist in den Einstellungen als externes Programm einstellbar. Es sollte dann beim start immer eine Leiste vom MP3-Player überlagernd am oberen Bildschirmrand verbleiben, um während er Navi noch Titel vor/zurück etc zu verstellen,oder im Menü zu navigieren.

Die Grafik des Programms inklusive aller Buttons kann selbst verändert,erstellt werden. Dazu wird lediglich der Dateiname vorgegeben, die Position/Größen der Schaltflächen in den .Ini Dateien einstellen.


Insgesamt läuft bei mir das Programm äußerst stabil. Kleine Fehler habe ich nach 3 Monaten Testphase auch immer wieder gefunden.
Ich habe dies als Anfänger innerhalb von 4 Monaten geschrieben und gelernt mit Delphi zumindest ein wenig arbeiten zu können (Hobby).



Nun, wenn euch etwas auffällt, ich erwarte gerne alle Kritiken.
Wenn jemanden den Source interessiert,um ggf nach Lücken zu suchen, kein Problem.
Angehängte Dateien
Dateityp: rar mmplayer_v_1.1.0.0_959.rar (1,01 MB, 123x aufgerufen)
 
Nils_13
 
#11
  Alt 23. Sep 2006, 21:32
Hi,

ist ein recht gutes Programm

Verbesserungsvorschläge:
- Bau eine Titelleiste zum Verschieben ein
- Stelle dem Benutzer die Schriftgröße frei
- Speichern und Laden von ASX und M3U Listen
So sieht ASX 3.0 aus:
Code:
<ASX version="3.0">
 <ENTRY><REF href="Pfad1" /></ENTRY>
 <ENTRY><REF href="Pfad2" /></ENTRY>
 <ENTRY><REF href="Pfad3" /></ENTRY>
 <ENTRY><REF href="Pfad4" /></ENTRY>
</ASX>
M3U findest du über Google.

Da ich gerade viel Zeit habe:
Delphi-Quellcode:
const
  ASXStart = '<ASX version="3.0">';
  ASXItemStart = '<ENTRY><REF href="';
  ASXItemEnd = '" /></ENTRY>';

function TfrmMain.LoadASX(const asxfile : string):TDynStrArray;
var
  lines : TStringList;
  music : TStringList;
  a, i, j : Integer;
  erstes, zweites : integer;
  p, line : String;
const
  x : string = 'HREF';
begin
  lines := TStringList.Create();
  lines.LoadFromFile(asxfile);
  
  music := TStringList.Create;

  for i := 0 to pred(lines.Count) do
  begin
    line := UpperCase(lines[i]);
    a := pos(x,line);
    if (a >= 1) then
    begin
      erstes := Pos('"', line)+1;
      zweites := PosEx('"', line, erstes);
      if zweites > erstes then
      begin
        p := copy(line,erstes,zweites - erstes);
        music.Add(p);
      end;
    end;
  end;
  lines.Free;
  setlength(result, music.count);
  for j := 0 to pred(music.count) do
  begin
    result[j] := music[j];
  end;
  music.Free;
end;

procedure TfrmMain.SaveASX(Filename: string);
var
  StringList: TStringList;
  i: integer;
begin
  StringList := TStringlist.Create;
  try
    Stringlist.add(ASXStart);
    for i := 0 to length(ffiles) - 1 do
    begin
      Stringlist.add(ASXItemStart + ffiles[i].pfad + ASXItemEnd);
    end;
    Stringlist.Add('</ASX>');
    Stringlist.SaveToFile(Filename);
  finally
    StringList.Free;
  end;
end;
Daraus kannst du dir einige Playlistenformate basteln

Es ist sehr schön und gut, dass du die bass.dll (das hätte ich nicht im ersten Programm geschafft!) anstelle der MediaPlayer-Komponente oder sonstigen Komponenten benutzt wurden
  Mit Zitat antworten Zitat
bluescreen25

 
Delphi 7 Enterprise
 
#12
  Alt 24. Sep 2006, 10:40
Zitat von Nils_13:
Hi,

ist ein recht gutes Programm

Verbesserungsvorschläge:
- Bau eine Titelleiste zum Verschieben ein
- Stelle dem Benutzer die Schriftgröße frei
- Speichern und Laden von ASX und M3U Listen

Es ist sehr schön und gut, dass du die bass.dll (das hätte ich nicht im ersten Programm geschafft!) anstelle der MediaPlayer-Komponente oder sonstigen Komponenten benutzt wurden
Danke auch dir für dein Testen

-Die Titelleiste war eigendlich drin, habe diese ja extra rausgenommen (siehe Antworten oben)
-Die meisten Texte, wie sie auf den Buttons vorkommen, sind eigendlich Bilder(.jpg)
Die Buttons bestehen aus drei Bildern (1.unberührt; 2.OnMouseOver; 3.MouseDown).
Diese Bilder,sind im Skin-Ordner in den jeweiligen Rubriken in einer .ini deffiniert und zwar in
Größe des Jpg, sowie x-y Position. Was als Label genutzt ist, findest du auch in der .ini
wieder,dort kann man Schriftart,Größe,Farbe etc. einstellen.

Ich dachte mir, ggf mal einen ordenlichen Skineditor zu schreiben, um für den User eine "saubere"
Möglichkeit zu bieten,das Design anzupassen.
Das ganze Auslagern war schon ein riesen Mehraufwand für den Anfang, wollte aber auf Dauer ein
transparenteres Programm bieten. Ehrlich gesagt sind auch noch nicht alle Punkte die eigendlich
möglich sind ausgelagert.

- Das mit den .M3U -Listen wollte ich auch erst machen, habe dies leider nicht hinbekommen, der User
hätte so auch schon vorhandene Winamp-Listen direkt einlesen können, habe jetzt erstmal eine
einfache Art gewählt, die, was im Auto eigendlich nur wichtig ist, die Titel in Reihenfolge
erfasst und dann in einem unverkennbarem Dateinamen, der auch auf der Festplatte sofort eine
Datumsmäßige Ablage von neu nach alt auslagert.
Natürlich kann der User den Namen der Playliste auch ändern, während der Fahrt wäre aber einer
schon vorgegeben und man braucht keine Tastatur zum speichern.

Die Tags werden ja ausgelesen und in einer Laufschrift dargestellt während der Wiedergabe, ein
Ändern der Namen der Interpreten etc im Auto macht doch nicht so viel Sinn, oder?
Nach langem Für-und Wieder hatte ich mich dazu entschieden, in den Listen die reelen Dateinamen zu halten und nur bei der Wiedergabe dann die Tags auszulesen.
Man könnte vielleicht beim MouseOver des jeweiligen Listeneintrags ja als Hint irgendwie den ausgelesenen Interpreten,Titel etc sich anzeigen lassen...

Wenn jemand etwas lesenswertes zu den M3U-Listen und ggf zur deren Einbindung hat, das würde mich sehr interessieren.

Was kann ich denn den ASX Dateien noch abgewinnen? Arbeitet man damit heute viel, ausser im Internet die Streams zu erfassen ?

Viele Grüße, bluescreen25
  Mit Zitat antworten Zitat
Nils_13
 
#13
  Alt 24. Sep 2006, 11:13
Mit ASX arbeitet man nicht viel, aber da ich sie oft benutze, dachte ich mir, ich könnte sie mal posten.

Da ich mit meinem Player bald fertig werde und gut drauf bin, hier der M3U-Code meines Players:
Delphi-Quellcode:
const
  M3UStart = '#EXTM3U';
  M3UItem = '#EXTINF:';

function TfrmMain.LoadM3U(filename : String): TDynStrArray;
var
  g, music : TStringList;
  i: integer;
begin
  g := TStringlist.Create;
  g.LoadFromFile(Filename);
  music := TStringList.Create;
  for i := 0 to g.Count - 1 do
  begin
    if g[i][1] <> '#then
    begin
      music.Add(g[i]);
    end;
  end;
  g.Free;
  setlength(result, music.count);
  for i := 0 to pred(music.Count) do
  begin
    result[i] := music[i];
  end;
  music.free;
end;

procedure TfrmMain.SaveM3U(Filename: string);
var
  StringList: TStringList;
  i: integer;
begin
  StringList := TStringlist.Create;
  try
    Stringlist.add(M3UStart);
    for i := 0 to length(ffiles) - 1 do
    begin
      Stringlist.add(M3UItem);
      Stringlist.add(ffiles[i].pfad);
    end;
    Stringlist.SaveToFile(Filename);
  finally
    StringList.Free;
  end;
end;
fFiles ist übrigens ein mit Audiodateipfaden und Tags gefülltes Array.
  Mit Zitat antworten Zitat
bluescreen25

 
Delphi 7 Enterprise
 
#14
  Alt 24. Sep 2006, 11:22
Zitat von Nils_13:
Mit ASX arbeitet man nicht viel, aber da ich sie oft benutze, dachte ich mir, ich könnte sie mal posten.

Da ich mit meinem Player bald fertig bekomme und gut drauf bin, hier der M3U-Code meines Players:

fFiles ist übrigens ein mit Audiodateipfaden und Tags gefülltes Array.


ja da kann ich nur Danke sagen !

Was für eine Art Player wird deiner sein ? Windows-WinAmp-Like oder DJ-Player ?
Da gibt es ja unzählige Möglichkeiten.

Stellt du deinen Player dann auch hier vor?

Viele Grüße,bluescreen25
  Mit Zitat antworten Zitat
Nils_13
 
#15
  Alt 24. Sep 2006, 11:59
Ich werde ihn hier auch vorstellen, es ist ein ganz normaler Audio/Videoplayer, der halt ein paar Sachen besser macht, als viele Andere. Aber das gehört nicht in diesen Thread, kannst mich ja in den im Profil angegeben Messengern ansprechen, wenn du Näheres wissen willst.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12

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:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz