Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Wie programmiere ich Masken? (https://www.delphipraxis.net/133376-wie-programmiere-ich-masken.html)

ToFaceTeKilla 5. Mai 2009 11:22

Re: Wie programmiere ich Masken?
 
Dann Delphi-Referenz durchsuchenTrim doch die MaskSubStrings, damit hast du dann zwischen % und - keine Leerzeichen mehr.

Dragon27 5. Mai 2009 11:31

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!

ToFaceTeKilla 5. Mai 2009 12:21

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?

Morphie 5. Mai 2009 13:55

Re: Wie programmiere ich Masken?
 
Probier mal folgenden code:
Delphi-Quellcode:
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;
klappt bei mir mit folgenden Aufrufen:
Delphi-Quellcode:
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%'));
usw.

Dragon27 5. Mai 2009 15:30

Re: Wie programmiere ich Masken?
 
Hallo,

Danke, Danke, Danke! Es funktioniert! Toll!


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:51 Uhr.
Seite 2 von 2     12   

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