Re: Wie programmiere ich Masken?
Dann Trim doch die MaskSubStrings, damit hast du dann zwischen % und - keine Leerzeichen mehr.
|
Re: Wie programmiere ich Masken?
Hallo,
danke für deine Antwort! Mhm ne ich glaube hier liegt nicht das Problem, das Problem ist beim eigentlichen Dateinamen. Mein erster Ansatz war, dass ich alle Leerzeichen entferne.. also von der Maske und dem Dateinamen. Aber das würde dann zur Folge haben, dass auch Interpretennamen zusammen geschrieben werden. Danke! |
Re: Wie programmiere ich Masken?
Hm stimmt, hab das ganze bissl falsch verstanden :oops:
Aber du kannst zumindest die Eingabe erstmal durchlaufen und Leerzeichen um die Trenner herum eliminieren. Das sollte ja funktionieren. Btw: Was machst du eigentlich, wenn der Trenner im Namen vorkommt? Also zb. Hans-Maier-Band? |
Re: Wie programmiere ich Masken?
Probier mal folgenden code:
Delphi-Quellcode:
klappt bei mir mit folgenden Aufrufen:
function GetMaskedString(Text: string; Mask: string; MaskPart: string): string;
var TrennerB: string; TrennerE: string; TrennerEPos: integer; TrennerBPos: integer; TrennerBCountPosition: integer; TrennerBCurrent: integer; i: integer; s: string; begin //Anfangstrenner ermitteln TrennerBPos:=pos(MaskPart,Mask)-1; TrennerB:=copy(Mask,TrennerBPos,1); while (trennerbpos>0) and (Trim(TrennerB)='') do begin dec(TrennerBPos); TrennerB:=copy(Mask,TrennerBPos,1); end; if (TrennerBPos>0) then begin //Der Anfangstrenner ist ein Zeichen //Endtrenner ermitteln TrennerEPos:=pos(MaskPart,Mask)-1+length(MaskPart)+1; TrennerE:=copy(Mask,TrennerEPos,1); while (TrennerEPos<length(Mask)) and (Trim(TrennerE)='') do begin inc(TrennerEPos); TrennerE:=copy(Mask,TrennerEPos,1); end; //Position des gesuchten Trenners ermitteln TrennerBCountPosition:=0; for I := 0 to TrennerBPos do begin if (Mask[i]=TrennerB) then inc(TrennerBCountPosition); end; //Ergebnis: TrennerBCurrent:=0; for i := 0 to length(Text)-1 do begin if (Text[i]=TrennerB) then inc(TrennerBCurrent); if (TrennerBCurrent=TrennerBCountPosition) then //Jetzt handelt es sich um den richtigen! begin s:=copy(Text,i+1,length(text)); if (trim(TrennerE)<>'') then s:=copy(s,1,pos(trim(TrennerE),s)-1); break; end; end; end else begin //Der Anfangstrenner existiert nicht, ist folglich der Anfang des Strings //Endtrenner ermitteln TrennerEPos:=pos(MaskPart,Mask)-1+length(MaskPart)+1; TrennerE:=copy(Mask,TrennerEPos,1); while (TrennerEPos<>length(Mask)) and (Trim(TrennerE)='') do begin inc(TrennerEPos); TrennerE:=copy(Mask,TrennerEPos,1); end; //Ergebnis ermitteln s:=trim(copy(text,1,pos(TrennerE,text)-1)); end; //Resultat übergebem result:=s; end;
Delphi-Quellcode:
usw.
showmessage(GetMaskedString('Hans Maier - Der Wagen.mp3','%Artist%-%Titel%.%Endung%','%Artist%'));
showmessage(GetMaskedString('Hans Maier - Der Wagen.mp3','%Artist%-%Titel%.%Endung%','%Titel%')); showmessage(GetMaskedString('Hans Maier - Der Wagen.mp3','%Artist%-%Titel%.%Endung%','%Endung%')); showmessage(GetMaskedString('Hans Maier - Der Wagen.mp3','%Artist% - %Titel%.%Endung%','%Artist%')); showmessage(GetMaskedString('Hans Maier - Der Wagen.mp3','%Artist% - %Titel%.%Endung%','%Titel%')); showmessage(GetMaskedString('Hans Maier - Der Wagen.mp3','%Artist% - %Titel%.%Endung%','%Endung%')); showmessage(GetMaskedString('Hans Maier-Der Wagen.mp3','%Artist% - %Titel%.%Endung%','%Artist%')); showmessage(GetMaskedString('Hans Maier-Der Wagen.mp3','%Artist% - %Titel%.%Endung%','%Titel%')); showmessage(GetMaskedString('Hans Maier-Der Wagen.mp3','%Artist% - %Titel%.%Endung%','%Endung%')); showmessage(GetMaskedString('Hans Maier-Der Wagen.mp3','%Artist%-%Titel%.%Endung%','%Artist%')); showmessage(GetMaskedString('Hans Maier-Der Wagen.mp3','%Artist%-%Titel%.%Endung%','%Titel%')); showmessage(GetMaskedString('Hans Maier-Der Wagen.mp3','%Artist%-%Titel%.%Endung%','%Endung%')); |
Re: Wie programmiere ich Masken?
Hallo,
Danke, Danke, Danke! Es funktioniert! Toll! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:51 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