Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Software-Projekte der Mitglieder (https://www.delphipraxis.net/26-software-projekte-der-mitglieder/)
-   -   kleines CarPC Programm (https://www.delphipraxis.net/77635-kleines-carpc-programm.html)

Nils_13 23. Sep 2006 21:32

Re: kleines CarPC Programm
 
Hi,

ist ein recht gutes Programm :thumb:

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 :)

bluescreen25 24. Sep 2006 10:40

Re: kleines CarPC Programm
 
Zitat:

Zitat von Nils_13
Hi,

ist ein recht gutes Programm :thumb:

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 :thumb:

-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

Nils_13 24. Sep 2006 11:13

Re: kleines CarPC Programm
 
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.

bluescreen25 24. Sep 2006 11:22

Re: kleines CarPC Programm
 
Zitat:

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.

:thumb: :thumb:

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

Nils_13 24. Sep 2006 11:59

Re: kleines CarPC Programm
 
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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:33 Uhr.
Seite 2 von 2     12   

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