Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Library: Object-Pascal / Delphi-Language (https://www.delphipraxis.net/35-library-object-pascal-delphi-language/)
-   -   Delphi Platzhalter in einem String... (https://www.delphipraxis.net/25573-platzhalter-einem-string.html)

Markus 8. Jul 2004 19:49


Platzhalter in einem String...
 
Hallo,

ich weiß nicht ob es sowas schon gibt, aber ich habe eine Funktion geschrieben, die aus einer Maske einen Dateinamen generiert. Hier die Funktion:

Delphi-Quellcode:
function string2filename(maske, interpret, album, titel, track: string): string;
var
  i, p: integer;
  platzhalter,bezeichnung: TStringList;
begin
  platzhalter := TStringList.create; //erstellen der Stringlisten
  bezeichnung := TStringList.Create;

  platzhalter.Add('%I'); //Hinzufügen der gewünschten Werte u. Bezeichnungen
  bezeichnung.Add(interpret);

  platzhalter.Add('%A');
  bezeichnung.Add(album);

  platzhalter.Add('%T');
  bezeichnung.Add(titel);

  platzhalter.Add('%E');
  bezeichnung.Add('mp3');

  platzhalter.Add('%N');
  bezeichnung.Add(track);


  for i := 0 to platzhalter.Count - 1 do //Ersetzen der Platzhalter im Maskenstring durch die realen Werte
  begin
    p := pos(platzhalter.Strings[i], maske);
    if p <> 0 then
    begin
      delete(maske, p, 2);
      insert(bezeichnung.Strings[i], maske, p);
    end;
  end;

platzhalter.Free;
bezeichnung.Free;

result := maske;
end;
und hier ein Beispiel:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  showmessage(string2filename('%N.%I - %T.%E', 'Otto Mustermann', 'Mein erstes Album', 'Mein Lied', '1'));
end;
Man kann die Funktion beliebig ändern, d.h. neue Werte hinzufügen oder alte löschen.

Für Vorschläge bin ich offen :-)

[edit=Matze]Code formatiert. Mfg, Matze[/edit]

CalganX 8. Jul 2004 20:23

Re: Platzhalter in einem String...
 
Hi,
ich finde Format wesentlich einfacher:
Delphi-Quellcode:
format('%s - %s', ['Otto','Zehn kleine Ottifanten']);
Chris

Robert_G 9. Jul 2004 08:40

Re: Platzhalter in einem String...
 
Wenn du mal in der OH schmökerst findest du auch andere Formatierungen zum Bleistift für Dezimalzahlen.

p.s.: Die Funktion gibt es in ähnlicher Art auch im .Net FrameWork als statische Funktion von System.String.
Code:
String[b][color=#ff0000].[/color][color=#3600aa]Format[/color][color=#ff0000]([/color][/b][color=#ad0000]"{0} - {1}"[/color]
             [b][color=#ff0000],[/color][/b][color=#3600aa]new[/color] String[b][color=#ff0000][] {[/color][/b][color=#ad0000]"Otto"[/color][b][color=#ff0000], [/color][/b][color=#ad0000]"Zehn kleine Ottifanten"[/color][b][color=#ff0000]});[/color][/b]


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:08 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