AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Dark Player II
Thema durchsuchen
Ansicht
Themen-Optionen

Dark Player II

Ein Thema von Nils_13 · begonnen am 6. Dez 2004 · letzter Beitrag vom 28. Mai 2007
Antwort Antwort
Seite 9 von 10   « Erste     789 10      
Nils_13
Registriert seit: 15. Nov 2004
Dark Player II


Mit einiger Verspätung ist der Player nun doch fertig geworden.

Informationen

Haupt
- Dies ist der Player
- Audio (.mp3,.wav,.wma,.aiff,.aif,.ogg)
- Video (.mpeg,.mpg,.wmv,.avi,.dat)
- Visualisierungen (Spectrum Lines, Spectrum Solid, Ocilloscope, Image Bumper und X)
- Playlistenformate M3U, ASX und DPL
- Tag-Editor
- Equalizer
- Ansichtsoptionen
- Transparenz
- Rekursive Suche

Radio
- Kategoriesystem (über Rechtsklick auf ComboBox einstellbar)
- Visualisierungen
- Transparenz

CD
- Laufwerk wählbar
- Transparenz

Manager
Der Manager verwaltet alle Programme, abgesehen vom Player, um zusätzliche Optionsmenüs zu sparen

FileManager
- Programm ausschließlich zur Verwaltung von Dateizuweisungen
- Icon für das gewählte Format frei wählbar
- Rekursive Suche

Playlist Converter
- Programm zur Konvertierung von Playlisten
- Formate M3U, ASX und DPL werden unterstützt
- Rekursive Suche

Skin Editor
- Programm zum erstellen und editieren von Skins
- Dateiformat DPSF
- Rekursive Suche

Skins
- Blue
- Black
- Gray
- Classic
- Red

Fehler
- Dateiverknüpfung mit Skin Editor fehlerhaft, obwohl gleicher Code, wie bei Haupt
- Falls Tags noch nicht existieren, können sie nicht erstellt werden
- Buttons 'Add' bis 'Save playlist: Dialoge öffnen im Hintergrund

Rot=lange Dauer Grün=Geringe/Normale Dauer Blau=Unbestimmte Dauer

Ihr könnt gerne Hinweise zur Fehlerbeseitigung geben ().

Beseitigte Fehler
- Buttons 'Add' bis 'Save playlist: Dialoge öffnen im Hintergrund
- Buttons 'Next' bis 'Back' erzeugen eine Meldung 'Division durch null', wenn
Playliste leer ist.
- Button 'Tags' liefert eine Zugriffsverletzung, wenn Playliste leer ist.
- Man weiss nicht was die Regler in Ihrer Funktion bewirken
- Teilweise keine funktionalen Beschriftungen/ Keine Labels/Hints
- Unlogische Anordnung
- Pause-Knopf unterbricht die Wiedergabe, nochmal Pause setzt die Wiedergabe fort (Eine Umbenennung in 'Continue' wär gut)
- kein Focus auf Eingabezeile (direct open)
- OK möglich, obwohl keine Auswahl (direct open)
- Suche bricht nicht ab bei "Ok" oder "Cancel" (Browser)
- Bei Auswahl des Transparency.Modus ist keine Überprüfung auf sinnvolle Werte vorhanden (Settings)

Arbeiten
- Sprachsystem
- Beseitigen der unklaren Fehler (siehe letzter Post)

Anleitung
Siehe Anhang.

Lizenz
Dark Player II

Es ist nicht erlaubt, das Programm ohne Erlaubnis des Teams zu verbreiten.
Dieses Programm ist vollkommen kostenlos. Wird diese Lizenz nicht eingehalten, gibt es Konflikte mit dem DarkPlayer-Team.

Copyright 2006-2007 by Nils D., Fabian N., Christian K. and Heiko Thiel
Alle Rechte vorbehalten.

Dark Player II

It is not allowed to pass on this program without a permission from the team.
This program is totally free. If this license would not be kept it would be give conflicts with the DarkPlayer-Team.

Copyright 2006-2007 by Nils D., Fabian N., Christian K. and Heiko Thiel
All rights reserved.

Fröhliches Testen, irgendeinen Fehler übersieht der Entwickler immer.
Miniaturansicht angehängter Grafiken
screenshots_208.png   manual_249.png  
Angehängte Dateien
Dateityp: zip darkplayerii_200.zip (2,93 MB, 96x aufgerufen)
 
Benutzerbild von MagicAndre1981
MagicAndre1981

 
Delphi 7 Enterprise
 
#81
  Alt 25. Okt 2005, 17:19
Das Programm spielt die Lieder soooooo laut ab, ich dachte meine Ohren fliegen weg. Lautstärkeregler auf 3% und Windows-Regler fast ganz unten. -> Programm ist bei mir unbenutztbar.
André
  Mit Zitat antworten Zitat
Benutzerbild von Rastaman
Rastaman

 
Turbo C++
 
#82
  Alt 25. Okt 2005, 18:20
Was sollen denn die beiden schwarzen "unsichtbaren" Edits rechts von Liednamen??
EasterEgg

//Edit: Wenn man Lieder zur Playlist hinzufügt, dann werden keine Unterordner durchsucht.
  Mit Zitat antworten Zitat
Nils_13
 
#83
  Alt 25. Okt 2005, 18:35
Zitat:
1 Für was ist das grüne Ding unter dem Schieberegler zum Songpos einstellen?
Wenn du lesen würdest wüsstest du, dass das der Volume-Regler ist.
Zitat:
2 Was um alles in der Welt soll dieser Kerl mit der Pumpgun (oder was das ist) in den Credits?
Ich wollte auch mal Scherzwn und hab Mick Thompson als Hintergrund genommen
Zitat:
3 Öffnen von m3u vermisse ich genauso
Da müsst ihr mir erklären, wie man das macht
Zitat:
4 Unter der Playlist kann man "Tag-Information" kaum lesen.
Ich weiß nicht, was du da meinst.
Zitat:
5 Fände es besser, wenn man nach dem Druck auf den "Öffnen" Knopp auch gleich das Lied abgespielt wird.
6Früher hast du dich beschwert das es falschrum sei. Ich finde das so besser.
Zitat:
7 Bei der Playlist sollte man auch nur einzelne Lieder einfügen können.
Zitat:
8 Das dunkle Design spricht mich nicht so an.
Da musst du dich noch eine Weile gedulden, das Skinsystem kommt noch.


Zitat:
Das Programm spielt die Lieder soooooo laut ab, ich dachte meine Ohren fliegen weg. Lautstärkeregler auf 3% und Windows-Regler fast ganz unten. -> Programm ist bei mir unbenutztbar.
Stell dir die Laustärke so ein, wie du willst, sie wird ab jetzt abgespeichert.

Zitat:
Noch ein paar Anmerkungen:

- Wieso is die Echse so groß ?
- Das ganze läuft bei mir nur schellpend und sehr langsam (Laden einer Datei dauert ziemlich lange, im Gegensatz zum WMP)
- CPU-Auslastung ist auch nicht gerade wenig (600Mhz, 192 MB RAM)
Das problem hatte ich noch nie. Aber mit dem Skinsystem, dass noch kommt geht das. Das Programm ist so groß, weil es aus Bildern und weil es aus 1510 Zeilen besteht.

Zitat:
Was sollen denn die beiden schwarzen "unsichtbaren" Edits rechts von Liednamen??
EasterEgg Grübelnd...

//Edit: Wenn man Lieder zur Playlist hinzufügt, dann werden keine Unterordner durchsucht.
In die Edits kommen noch zwei ID3Tags, muss ich noch machen.
Falls jemand eine Idee hat, wie man die unterordner mit durchsucht, ist hier der Code:
Delphi-Quellcode:
function Tpform.BrowseDialog(const Title: string; const Flag: integer): string;
var
  lpItemID : PItemIDList;
  BrowseInfo : TBrowseInfo;
  DisplayName : array[0..MAX_PATH] of char;
  TempPath : array[0..MAX_PATH] of char;
begin
  Result:='';
  FillChar(BrowseInfo, sizeof(TBrowseInfo), #0);
  with BrowseInfo do begin
    hwndOwner := Application.Handle;
    pszDisplayName := @DisplayName;
    lpszTitle := PChar(Title);
    ulFlags := Flag;
  end;
  lpItemID := SHBrowseForFolder(BrowseInfo);
  if lpItemId <> nil then begin
    SHGetPathFromIDList(lpItemID, TempPath);
    Result := IncludeTrailingBackslash(TempPath);
    GlobalFreePtr(lpItemID);
  end;
end;
-

Neue Version da.
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

 
Delphi 10.2 Tokyo Professional
 
#84
  Alt 25. Okt 2005, 19:02
Ich weiß nicht obs schon gesagt wurde aber ich fänds schön wenn man mehrere Dateien auf einmal laden kann... Also Multiselect bei dem Opendialog an und halt Lademethode entsprechend anpassen. Ich denke mal wenn du das mit den ganzen Visualisierungen und so hinbekommen hast dann schaffst du das auch
Michael
  Mit Zitat antworten Zitat
Benutzerbild von Airblader
Airblader
 
#85
  Alt 25. Okt 2005, 19:55
@Nils

Öffne eine m3u-Datei doch einfach mal im Editor.
Wenn ich mich recht entsinne ist dies eine simple Textdatei, die die Pfade zu den Liedern enthält.

air
Ingo Bürk
  Mit Zitat antworten Zitat
Nils_13
 
#86
  Alt 26. Okt 2005, 08:01
Zitat von Airblader:
@Nils

Öffne eine m3u-Datei doch einfach mal im Editor.
Wenn ich mich recht entsinne ist dies eine simple Textdatei, die die Pfade zu den Liedern enthält.

air
Ja nur wenn ich playlist.add(); nehme wird nur die m3u geladen. Außerdem, wie lade ich asx ?
Code:
<ASX version="3.0">
 <ENTRY><REF href="E:\Musik\Slipknot\Me_Inside_Slipknot(1).mp3" /></ENTRY>
 <ENTRY><REF href="E:\Musik\Slipknot\Slipknot - Duality.mp3" /></ENTRY>
 <ENTRY><REF href="E:\Musik\Slipknot\Slipknot - Iowa - 08 - Left Behind.mp3" /></ENTRY>
 <ENTRY><REF href="E:\Musik\Slipknot\Slipknot - My Plague.mp3" /></ENTRY>
 <ENTRY><REF href="E:\Musik\Slipknot\Slipknot (1).mp3" /></ENTRY>
 <ENTRY><REF href="E:\Musik\Slipknot\Slipknot (10).mp3" /></ENTRY>
 <ENTRY><REF href="E:\Musik\Slipknot\Slipknot (11).mp3" /></ENTRY>
 <ENTRY><REF href="E:\Musik\Slipknot\Slipknot (12).mp3" /></ENTRY>
 <ENTRY><REF href="E:\Musik\Slipknot\Slipknot (13).mp3" /></ENTRY>
 <ENTRY><REF href="E:\Musik\Slipknot\Slipknot (2).mp3" /></ENTRY>
 <ENTRY><REF href="E:\Musik\Slipknot\Slipknot (5).mp3" /></ENTRY>
 <ENTRY><REF href="E:\Musik\Slipknot\Slipknot (6).mp3" /></ENTRY>
 <ENTRY><REF href="E:\Musik\Slipknot\Slipknot (8).mp3" /></ENTRY>
 <ENTRY><REF href="E:\Musik\Slipknot\Slipknot (9).mp3" /></ENTRY>
 <ENTRY><REF href="E:\Musik\Slipknot\Slipknot -Spit_It_Out.mp3" /></ENTRY>
 <ENTRY><REF href="E:\Musik\Slipknot\slipknot__heretic_song.mp3" /></ENTRY>
 <ENTRY><REF href="E:\Musik\Slipknot\slipknot_-_wait_and_bleed_clayversion.mp3" /></ENTRY>
</ASX>
  Mit Zitat antworten Zitat
Benutzerbild von TeronG
TeronG

 
Delphi 2007 Professional
 
#87
  Alt 26. Okt 2005, 08:17
Zitat von Nils_13:
Hi,

hier mein Update auf 1.8
- Laut Credis's: "Dark Player 1.7"
- Gaaanz oben wo der Filename steht hab ich nen kleinen weißen punkt (1 -2 pixel breit oder so ^^)
- "Visualisierung AN/AUS" könntest du evtl. noch nen Hacken verpassen...
- Zu Unterordner durchsuchen: FindAllFiles hier in der DP!
  Mit Zitat antworten Zitat
Nils_13
 
#88
  Alt 26. Okt 2005, 08:39
Zitat von TeronG:
Zitat von Nils_13:
Hi,

hier mein Update auf 1.8
- Laut Credis's: "Dark Player 1.7"
- Gaaanz oben wo der Filename steht hab ich nen kleinen weißen punkt (1 -2 pixel breit oder so ^^)
- "Visualisierung AN/AUS" könntest du evtl. noch nen Hacken verpassen...
- Zu Unterordner durchsuchen: FindAllFiles hier in der DP!
Nächstes update kommt gleich, wenn das Problem mit FindAllFiles gelöst ist:
Delphi-Quellcode:
procedure pform.InitFindAllFiles;
begin
  SetLength(FoundFiles, 0);
  cntFoundFiles := 0;
end;

procedure pform.FindAllFiles(RootFolder: string; Mask: string; Recurse: Boolean =
  True);
var
  hFindFile : THandle;
  wfd : TWin32FindData;
  Filename : string;
begin
  if RootFolder[length(RootFolder)] <> '\then
    RootFolder := RootFolder + '\';
  ZeroMemory(@wfd, sizeof(wfd));
  wfd.dwFileAttributes := FILE_ATTRIBUTE_NORMAL;
  if Recurse then
  begin
    hFindFile := FindFirstFile(pointer(RootFolder + '*.*'), wfd);
    if hFindFile <> 0 then
    try
      repeat
        if wfd.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY =
          FILE_ATTRIBUTE_DIRECTORY then
          if (string(wfd.cFileName) <> '.') and (string(wfd.cFileName) <> '..')
            then
          begin
            FindAllFiles(RootFolder + wfd.cFileName, Mask, Recurse);
          end;
      until FindNextFile(hFindFile, wfd) = False;
    finally
      Windows.FindClose(hFindFile);
    end;
  end;
  hFindFile := FindFirstFile(pointer(RootFolder + Mask), wfd);
  if hFindFile <> INVALID_HANDLE_VALUE then
  try
    repeat
      if wfd.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY <>
        FILE_ATTRIBUTE_DIRECTORY then
      begin
        Filename := RootFolder + string(wfd.cFileName);
        if length(FoundFiles) = cntFoundFiles then
          SetLength(FoundFiles, length(FoundFiles) + 100);
        FoundFiles[cntFoundFiles] := Filename;
        Inc(cntFoundFiles);
      end;
    until FindNextFile(hFindFile, wfd) = False;
  finally
    Windows.FindClose(hFindFile);
    setlength(FoundFiles, cntFoundFiles);
  end;
end;
Delphi-Quellcode:
procedure Tpform.plist_overClick(Sender: TObject);
var mp3Folder, files : string;
begin

 mp3Folder := BrowseDialog('Choose a folder with mp3 files', BIF_RETURNONLYFSDIRS);
 if mp3Folder = 'then Exit;

 txtFolder.Caption := mp3Folder;

 files := StrToFloat(InitFindAllFiles);
// files := FindAllFiles(mp3folder);

 //fill the list box with mp3 files
 FillMP3FileList(files{mp3Folder}, mp3List.Items);
end;
Hier müssen die ausgewählten Ordner rein, aber wie mach ich das ?
FillMP3FileList(files{mp3Folder}, mp3List.Items);
Delphi-Quellcode:
procedure Tpform.FillID3TagInformation(mp3File:string; Title,Artist,Album,Year,Genre,Comment:TEdit);
var //fMP3: file of Byte;
    ID3 : TID3Rec;
    fmp3: TFileStream;
begin
  fmp3:=TFileStream.Create(mp3File, fmOpenRead);
  try
    fmp3.position:=fmp3.size-128;
    fmp3.Read(ID3,SizeOf(ID3));
  finally
    fmp3.free;
  end;

 { or the non Stream approach - as in ChangeID3Tag procedure
try
  AssignFile(fMP3, mp3File);
  Reset(fMP3);
  try
    Seek(fMP3, FileSize(fMP3) - 128);
    BlockRead(fMP3, ID3, SizeOf(ID3));
  finally
  end;
finally
  CloseFile(fMP3);
end;
}

 if ID3.Tag <> 'TAGthen begin
   Title.Text:='Wrong or no ID3 tag information';
   Artist.Text:='Wrong or no ID3 tag information';
   Album.Text:='Wrong or no ID3 tag information';
   Year.Text:='Wrong or no ID3 tag information';
   Genre.Text:='Wrong or no ID3 tag information';
   Comment.Text:='Wrong or no ID3 tag information';
 end else begin
   Title.Text:=ID3.Title;
   Artist.Text:=ID3.Artist;
   Album.Text:=ID3.Album;
   Year.Text:=ID3.Year;
   if ID3.Genre in [0..MaxID3Genre] then
     Genre.Text:=ID3Genre[ID3.Genre]
   else
     Genre.Text:=IntToStr(ID3.Genre);
   Comment.Text:=ID3.Comment
 end;
end;

procedure Tpform.FillMP3FileList(Folder: string; sl: TStrings);
var Rec : TSearchRec;
begin
 sl.Clear;
 if SysUtils.FindFirst(Folder + '*.mp3', faAnyFile, Rec) = 0 then
  try
    repeat
      sl.Add(Rec.Name);
    until SysUtils.FindNext(Rec) <> 0;
  finally
    SysUtils.FindClose(Rec);
  end;
end;

function Tpform.BrowseDialog(const Title: string; const Flag: integer): string;
var
  lpItemID : PItemIDList;
  BrowseInfo : TBrowseInfo;
  DisplayName : array[0..MAX_PATH] of char;
  TempPath : array[0..MAX_PATH] of char;
begin
  Result:='';
  FillChar(BrowseInfo, sizeof(TBrowseInfo), #0);
  with BrowseInfo do begin
    hwndOwner := Application.Handle;
    pszDisplayName := @DisplayName;
    lpszTitle := PChar(Title);
    ulFlags := Flag;
  end;
  lpItemID := SHBrowseForFolder(BrowseInfo);
  if lpItemId <> nil then begin
    SHGetPathFromIDList(lpItemID, TempPath);
    Result := IncludeTrailingBackslash(TempPath);
    GlobalFreePtr(lpItemID);
  end;
end;
Der weiße Punkt soll eigentlich einen - darstellen, aber delphi kriegts nicht hin. Warum der Bindestrich da ist könnt ihr hier lesen:
http://www.delphi-forum.de/viewtopic...=304683#304683
Ich hab das noch nicht gelöst, ich wäre euch für jede Hilfe dankbar.
  Mit Zitat antworten Zitat
Nils_13
 
#89
  Alt 27. Mai 2007, 21:30
Update: erster Post.
  Mit Zitat antworten Zitat
Gremlin

 
Delphi 7 Enterprise
 
#90
  Alt 27. Mai 2007, 22:33
Hallo Nils_13,


ich hab mal dein Programm angeschaut und mir sind nachfolgende Dinge aufgefallen:

- Oberfläche englisch und nicht wählbar auf andere Sprache
(ja ich verstehe englisch, aber andere Personen könnten damit Probleme haben,
aber ich kann natürlich nicht die Zielgruppe beurteilen)
- Drag und Drop von Liedern -> Playliste wird gefüllt, aber Anzeige 'No files...'
- Buttons 'Add' bis 'Save playlist: Dialoge öffnen im Hintergrund
- Buttons 'Next' bis 'Back' erzeugen eine Meldung 'Division durch null', wenn
Playliste leer ist.
- Button 'Tags' liefert eine Zugriffsverletzung, wenn Playliste leer ist.
- Buttons werden nicht anhand Ihrer möglichen Funktionalitäten ein/ausgeschaltet.
- Dialoge 'Add' bis 'Save playlist: Dialoge haben keinen Dateibrowser in der Auswahl
- Die Dialoge enthalten entweder zu viel Leerraum (Main) oder viel zu wenig (Zusatzdialoge)
- Die Dialoge öffnen alle zu Beginn im oberen linken Eck. Zentriert wärs besser.
- Die Combos sind viel höher als die Eingabefelder

Die Oberfläche ist alles andere als 'prickelnd', dort liegt wirklich extrem viel
Verbesserungspotential. Man weiss nicht wirklich was das Programm macht und warum.

Oft sind die Designelemente so gewählt, das man rein intuitiv entscheiden muss und
deshalb mehrere Versuche notwendig sind. Verstehe mich nicht falsch, du hast sicher viel
Arbeit und Zeit investiert, aber ein Programm muss von der Funktionalität und der Oberfläche/
Benutzerführung (im besten Falle selbsterklärend) i.O. sein.

- Man weiss nicht was die Regler in Ihrer Funktion bewirken
- Teilweise keine funktionalen Beschriftungen
- Unlogische Anordnung
- Keine Labels/Hints
- Dann ist noch ein genialer Effekt bei den oberen vertikalen Reglern
-> Musikstück laden, linken Regler ungefähr mit der linken Kante auf die Mitte
der letzten Null (von 00:00) setzen, dann fängt plötzlich der rechte Regler
automatisch von ca. 50% auf 0% und wieder auf ca. 50% zu wechseln (endlos)
- Pause-Knopf unterbricht die Wiedergabe, nochmal Pause setzt die Wiedergabe fort
(Eine Umbenennung in 'Continue' wär gut)


Die Musik wird soweit abgespielt, einen Vergleich zur Qualität habe ich momentan nicht.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 9 von 10   « Erste     789 10      


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 23:05 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