AGB  ·  Datenschutz  ·  Impressum  







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

Wie programmiere ich Masken?

Ein Thema von Dragon27 · begonnen am 30. Apr 2009 · letzter Beitrag vom 5. Mai 2009
Antwort Antwort
Seite 1 von 2  1 2      
Dragon27

Registriert seit: 20. Nov 2003
Ort: Aßling
543 Beiträge
 
Delphi XE6 Enterprise
 
#1

Wie programmiere ich Masken?

  Alt 30. Apr 2009, 18:07
Hallo zusammen,

ich möchte eine MP3-Datei (Den Dateinamen) auseinandernehmen, das heißt per Maske Teile zuordnen nach folgendem bzw ähnlichem Prinzip:

%Artist%-%Titel%.mp3

Hier wüsste nun das Programm, dass vor dem Bindestrich der Artist und hinter dem Bindestrich der Titel kommt. Nun möchte ich
das ganze so Benutzefreundlich gestalten, dass der Benutzer seine Maske definieren kann wie er will.

Habt Ihr da eine Lösung wie ich da beim programmieren am besten anfange?

Danke!
Delphi is ......... DELPHI!!
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#2

Re: Wie programmiere ich Masken?

  Alt 30. Apr 2009, 18:13
Wenn das so einfach bleibt, tuts ja ein simples Delphi-Referenz durchsuchenStringReplace

Du definierst die verwendbaren Parameter, also z.B. %Artist% %Titel% %Bitrate% %TrackNr% oder was auch immer (die Daten müssen dir natürlich vorliegen) - bei der Umbenennung erhältst du den Dateinamen dann einfach, indem du für jeden Parameter die entsrpechende StringReplace-Routine aufrufst
  Mit Zitat antworten Zitat
Dragon27

Registriert seit: 20. Nov 2003
Ort: Aßling
543 Beiträge
 
Delphi XE6 Enterprise
 
#3

Re: Wie programmiere ich Masken?

  Alt 30. Apr 2009, 18:25
Hallo,

danke für deine Antwort, aber so ganz verstehe ich das noch nicht.

Also der User gibt mir eine Maske zum Beipsiel diese hier vor: %Artist% - %Titel%.mp3

Nun möchte ich seine MP3-Dateien analysieren und immer bei seinen Dateinamen Artist und Titel auslesen...


Aber wie soll ich da was ersetzen? Danke
Delphi is ......... DELPHI!!
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#4

Re: Wie programmiere ich Masken?

  Alt 30. Apr 2009, 18:28
Zitat von Dragon27:
Also der User gibt mir eine Maske zum Beipsiel diese hier vor: %Artist% - %Titel%.mp3
Nun möchte ich seine MP3-Dateien analysieren und immer bei seinen Dateinamen Artist und Titel auslesen...


Ich dachte, du willst die MP3-Dateinamen festlegen, nicht daraus auslesen - da hilft dann mein Vorschlag nix...
  Mit Zitat antworten Zitat
Dragon27

Registriert seit: 20. Nov 2003
Ort: Aßling
543 Beiträge
 
Delphi XE6 Enterprise
 
#5

Re: Wie programmiere ich Masken?

  Alt 30. Apr 2009, 18:40
Trotzdem Danke

Hast du vielleicht einen Vorschlag für mein Problem?
Delphi is ......... DELPHI!!
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#6

Re: Wie programmiere ich Masken?

  Alt 30. Apr 2009, 18:49
Manuell könnte das ganze so aussehen: (ich glaube nicht, dass es das so schon fertig in der vcl/rtl gibt)

- % suchen
- nächstes Zeichen analysieren. Wenn ebenfalls % löschen und um 1 Zeichen vorrücken und wieder auf Start
- nächstes % suchen (ist dann das ende des namens)
- wieder auf start - aber wenn neuer name gefunden wurde, oder ende erreicht, teilstring zwischen den beiden namen seperat speichern.

Damit solltest du aus "%Artist%-%Titel%.mp3" sowas bekommen:

<ARTIST>
-
<TITEL>
.mp3

Du hast also einerseits die Namen, die verwendet wurden, als auch die Trennstrings dazwischen. Jetzt kannste dir z.B. nen RegEx zusammenbasteln der dir aus einem Dateinamen genau das herauspickt, was du haben willst.

(schritt 2 dient als sicherung, damit man im Falle des Falles auch ein % eingeben kann: %% wird dann zu einem %)
  Mit Zitat antworten Zitat
Panthrax

Registriert seit: 18. Feb 2005
286 Beiträge
 
Delphi 2010 Enterprise
 
#7

Re: Wie programmiere ich Masken?

  Alt 1. Mai 2009, 00:12
reguläre Ausdrücke für Delphi
"Es gibt keine schlimmere Lüge als die Wahrheit, die von denen, die sie hören, missverstanden wird."
  Mit Zitat antworten Zitat
Dragon27

Registriert seit: 20. Nov 2003
Ort: Aßling
543 Beiträge
 
Delphi XE6 Enterprise
 
#8

Re: Wie programmiere ich Masken?

  Alt 1. Mai 2009, 09:54
Hallo,

erstmal danke für die Antworten! Ich habe jetzt selber eine kleine Funktion geschrieben und stelle diese mal hier
rein. Vielleicht findet ihr ja noch Fehler oder habt Verbesserungsvorschläge


Delphi-Quellcode:
Function StringPerMask(Eingabe, Maske:String; MaskSubString:String;Frontzeichen:Boolean=false):String;
var PosOfTrennerinMask, PosOfTrennerinEingabe, Trenneranzahl:integer;
    TrenneranzahlEingabe:integer;
    Trenner, Abschlusstrenner:String;
    Ausgabe:String;
    i:integer;
begin

//Eingabe von Leerzeichen befreien
Eingabe:=trim(Eingabe);

//Wo befindet sich der Trenner und Abschlusstrenner
PosOfTrennerinMask := Pos(MaskSubString, Maske)-1;
Trenner:=copy(Maske,PosOfTrennerinMask,1);
Abschlusstrenner:=copy(Maske,PosOfTrennerinMask+length(MaskSubString)+1,1);

//Wie oft kommt Trenner in Maske vor?
Trenneranzahl:=0;
for i := 1 to PosOfTrennerinMask do begin
  if Maske[i]=Trenner then inc(Trenneranzahl);
end;

TrenneranzahlEingabe:=0;
//Wo befindet sich der Trenner in der Eingabe?
for i := 1 to length(Eingabe) do begin
  if Eingabe[i]=Trenner then inc(TrenneranzahlEingabe);
  if TrenneranzahlEingabe=Trenneranzahl then begin
    PosOfTrennerineingabe:=i;
    break;
  end;
end;

//Ausgabestring zusammensetzen
Ausgabe:='';
for I := Posoftrennerineingabe+1 to length(eingabe) do begin
  if (Eingabe[i]<>Trenner) and (Eingabe[i]<>Abschlusstrenner) then begin
    Ausgabe:=Ausgabe+Eingabe[i];
  end else break;

end;

//Falls Kein Fronttrennzeichen, wird das erste Zeichen der Eingabe übernommen
if (Posoftrennerineingabe=1) and Frontzeichen then insert(Eingabe[1],Ausgabe,1);

result:=Ausgabe;

end;


// VERWENDUNG
{
Eingabe=Irgendeine Eingabe des Benutzers z.B. Reinhold Maier - Der Mai.mp3
Maske=Die Maskenvorlage z.B. %Artist%-%Titel%.mp3
MaskSubString=Welcher Teil der Maske soll ausgegeben werden z.B. %Artist%
}
Delphi is ......... DELPHI!!
  Mit Zitat antworten Zitat
Dragon27

Registriert seit: 20. Nov 2003
Ort: Aßling
543 Beiträge
 
Delphi XE6 Enterprise
 
#9

Re: Wie programmiere ich Masken?

  Alt 1. Mai 2009, 19:21
Hallo,

leider ist in dem oben geposteten Code ein Fehler, den ich nicht behoben bekomme. Vielleicht könnt ihr helfen...

Also wenn nun ein Dateiname eines Liedes übergeben wird, der vor und nach dem Trenner ein Leerzeichen hat, dann
wird die Maske nicht richtig zugeordnet.

Beispiel:

Das funktioniert: Hans Maier-Der Wagen.mp3
Das funktioniert nicht: Hans Maier - Der Wagen.mp3

Wer kann helfen?

Danke!
Delphi is ......... DELPHI!!
  Mit Zitat antworten Zitat
Dragon27

Registriert seit: 20. Nov 2003
Ort: Aßling
543 Beiträge
 
Delphi XE6 Enterprise
 
#10

Re: Wie programmiere ich Masken?

  Alt 5. Mai 2009, 10:26
*push*
Delphi is ......... DELPHI!!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 10:28 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