Einzelnen Beitrag anzeigen

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