![]() |
Re: Dark Player 1.7 (dAmp)
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.
|
Re: Dark Player 1.7 (dAmp)
Was sollen denn die beiden schwarzen "unsichtbaren" Edits rechts von Liednamen??
EasterEgg :gruebel: //Edit: Wenn man Lieder zur Playlist hinzufügt, dann werden keine Unterordner durchsucht. |
Re: Dark Player 1.7 (dAmp)
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
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. |
Re: Dark Player 1.8 (dAmp)
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 ;)
|
Re: Dark Player 1.8 (dAmp)
@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 |
Re: Dark Player 1.8 (dAmp)
Zitat:
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> |
Re: Dark Player 1.8 (dAmp)
Zitat:
- 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! :) |
Re: Dark Player 1.8 (dAmp)
Zitat:
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:
Hier müssen die ausgewählten Ordner rein, aber wie mach ich das ?
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;
Delphi-Quellcode:
FillMP3FileList(files{mp3Folder}, mp3List.Items);
Delphi-Quellcode:
Der weiße Punkt soll eigentlich einen - darstellen, aber delphi kriegts nicht hin. Warum der Bindestrich da ist könnt ihr hier lesen:
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 <> 'TAG' then 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; ![]() Ich hab das noch nicht gelöst, ich wäre euch für jede Hilfe dankbar. |
Re: Dark Player 1.8 (dAmp)
Update: erster Post.
|
Re: Dark Player II
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. |
Re: Dark Player II
Ich werde das alles gleich kurz abhandeln, aber was meinst du mit diesen Punkten ?
- 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. - Dialoge 'Add' bis 'Save playlist: Dialoge haben keinen Dateibrowser in der Auswahl <-- ? Rechtsklick=Direkt, Normal=Browser, falls nicht Optionsmenü anschauen - Buttons 'Add' bis 'Save playlist: Dialoge öffnen im Hintergrund <-- kann ich mir schon seit einiger Zeit nicht erklären -> kommt in die Fehlerliste - 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) <-- ich versteh das nicht ganz :? - Die Dialoge öffnen alle zu Beginn im oberen linken Eck. Zentriert wärs besser. <-- Zentriert KANN ein Problem werden, wenn man zwei Bildschirme hat und außerdem gehe ich davon aus, dass sich der Benutzer sowieso die Fensterposition anpasst. - Die Combos sind viel höher als die Eingabefelder <-- Die Einstellungen der ComboBox, welche extra an das Design angepasst wurden können nicht kleiner sein. Für einen Vorschlag wäre ich natürlich sehr dankbar :). Der Rest ist relativ schnell abgehandelt, danke für deine Hinweise. Zur Sprache: Du hast vollkommen Recht, ich werde mir Gedanken über die Realisierung von Deutsch machen (wollte ich sowieso, aber ich wollte ihn erstmal veröffentlichen). Zur Bedienung: Ich werde die Bedienung weiterhin so lassen, auch ohne Hints, allerdings dafür eine kleine Einführung schreiben, denn wer die Bedienung kennt, kennt auch ihre Vorteile (Hints nerven mit der Zeit übrigens). UPDATE! |
Re: Dark Player II
Liste der Anhänge anzeigen (Anzahl: 1)
Leerraum:
Im Hauptfenster (senkrechte Buttonleiste) ist rechts davon ein grosser freier Bereich. In diesen Bereich könnte man die Buttons schieben und als Ergebnis wäre es möglich die Liste mit den Liedern zu vergrössern und man hätte noch weiteren Platz um die Combos (Sequence, ...) selbsterklärender zu bezeichnen. Im mittleren Bereich stehen die 3+1 Regler, mit einem sehr grossen freien Bereich auf der rechten Seite. Hier würde sich anbieten weitere Controls einzutragen oder die Regler inklusive Beschreibung so anzuordnen, das der Anwender versteht um was es überhaupt geht, zb. Min/Max, Equalizer, Reverb,.. Kein Leerraum: Im Settingsdialog sind die Buttons (wenn man diese auf den ersten Blick als Buttons erkennen kann) zusammengequetscht. Zusätzlich ist unten rechts noch ein grosser freier Bereich vorhanden, dessen Position und Funktion sich einem nicht erschliesst. Combos: Für mich sieht es ein wenig "befremdlich" aus, wenn die Eingabemöglichkeiten unterschiedliche Höhen besitzen. Besser wäre es vielleicht, die Höhen zu vereinheitlichen. Dialoge im Hintergrund: Über die Methode: BringToFront sollte es möglich sein, das Fenster in den Vordergrund zu bringen Dialoge haben keinen Dateibrowser in der Auswahl: Schau, ich wäre jetzt nie auf die Idee gekommen, einen Button mit der rechten Maustaste anzuklicken. Vielleicht ist dies auch das grosse Problem deiner GUI, man muss viel zu viel "raten, spielen und probieren". Für dich als Entwickler sind die Programmfunktionen sicher schlüssig (ist mir bei meinen Programmen manchmal auch klar :wink: ), aber du solltest vor allem immer während der Entwicklung die Sicht des Anwenders berücksichtigen. Ich glaube nicht, das dieser lange Zeit versuchen wird, dein Programm "zu verstehen", er wird eher ein anderes Programm verwenden, wenn er dein Programm nicht verwenden muss. Dialoge mit direct open (linke Maustaste) - kein Focus auf Eingabezeile - keine Beschriftung der Eingabeoptionen - keine Browseroption: Ein Anwender wird fast nie direkt wissen, wie eine Datei heisst und wo sich diese auf dem Datenträger befindet. - für was ist denn das 2. Combo unten rechts gut? - OK möglich, obwohl keine Auswahl Dialoge ohne direkt open (rechte Maustaste) - Auswahl fremder Dateitypen möglich (*.bat, *.exe) - Suche sofort möglich, aber keine Ergebnis, wenn <> Auswahl über Arbeitsplatz - Suche bricht nicht ab bei "Ok" oder "Cancel" - OK möglich, obwohl keine Auswahl vorhanden - Anzeige des Suchbereichs nicht vorhanden - Ausgabewerte bei "Current File" extrem schlecht lesbar - was ist denn die Relapsed time? "Load/Save Playlist" - Welche Werte können denn bei der Eingabeoption (ganz oben) angegeben werden? - Wieso wird meine Suchauswahl hier angezeigt? Dialog Settings - Buttons gequetscht - Unklar ob Buttons oder Labels - Bezeichnung unklar zb. was kann sich der Anwender unter "Window drag: Mode 2" vorstellen? - Skinauswahl: Anzeige des Verzeichnisses, das Skins enthält viel zu kurz: Starte das Programm unter c:\temp\Verzeichnis1\Verzeichnis2\Verzeichnis3 und sage mir wo du bist - Klicken auf die "Buttons" mehrfach mit gleicher Anzeige möglich, zb. "Window drag: Mode 2" - Bei Auswahl des Transparency.Modus ist keine Überprüfung auf sinnvolle Werte vorhanden. -> Fröhliches Fenster suchen bei zu kleinen Werten Hauptfenster - Text neben "No files in playlist" extrem schlecht lesbar Der ScrollerBug siehe Anhang |
Re: Dark Player II
Ich werde mich gleich drum kümmern, aber eine Sache MUSS dringend klargestellt werden: Wenn du einen zu niedrigen Transparenzwert einstellst, ist das (klingt vlt. hart, aber es ist einfach so) immer noch dein Problem. Es ist mir doch egal, ob du da was ordentliches aussuchst. Kann vlt. noch ein Fenster einbauen, ob man es so mag oder nicht (wie bei Auflösungen unter Windows).
Zu Bedienungsproblemen: Siehe 1. Post (Anhang). Mit dem Browser und Cancel hatte ich noch NIE ein Problem, aber das wird sich ja gleich klären. Kein Leerraum bei Settings ist so gewünscht, um Platz zu sparen. Benutz das Programm bei einer geringeren Auflösung und du weißt warum. Wenn du mit den direkten Modus benutzen willst, aber meinst du weißt nicht, wo die Datei liegt, kannst du gleich den Browser benutzen, wozu soll denn sonst der Direct gut sein ? "Für mich sieht es ein wenig "befremdlich" aus, wenn die Eingabemöglichkeiten unterschiedliche Höhen besitzen. Besser wäre es vielleicht, die Höhen zu vereinheitlichen." Welcher Bestandteil ? Direct Open war nicht mit Links geplant :S Werde es gleich auf rechte Maustaste abändern. Du kannst alles auswählen, aber wenn der Scan, ob das Format gültig ist fehlschlägt, macht das nichts aus. Hinzu kommt übrigens, dass Pfad;Pfad;Pfad Standard ist und man das, bevor man Direct benutzt sowieso schon wissen sollte. Der Scrollerbug ist sehr merkwürdig, denn in FadeOut ist eine Absicherung:
Delphi-Quellcode:
if not BASS_ChannelIsActive(chan) = BASS_ACTIVE_PLAYING then
Exit; Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Zitat:
Leeraum-Bug wurde schon beim letzten Update behoben. Die andere Aufteilung, die du vorgeschlagen hast, finde ich nicht so gut, da dann die 3 kleinen Buttons in der Titelzeile nicht oder nur noch sehr schwer zu realisieren wären. Die Titelzeile hat übrigens noch den Button VP. Schon drinnen gehabt ? Wenn nicht, musst du dir Video auch nochmal genauer anschauen. UPDATE! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:49 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-2025 by Thomas Breitkreuz