Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Parametrisierter Text (https://www.delphipraxis.net/74001-parametrisierter-text.html)

xthing 26. Jul 2006 16:18


Parametrisierter Text
 
Hi Leute,

ich möchte einen parametrisierten Text in Delphi einlesen. Gibt es so etwas schon in Delphi. Der Text sieht etwa so aus:

--------------------------------------------------------------------------------------------------------------------------
Das ist ein %Parameter1%. Dieser %Parameter2% ......

Aus Parameter1 wird dann Test, aus Parameter2 dann z.B. Versuch.

Der Satz lautet dann:

Das ist ein Test. Dieser Versuch ......
----------------------------------------------------------------------------------------------------------------------------

Oder weiß jemand, wie ich das am besten programmiere?

Danke für Eure Hilfe im voraus.

Viele Grüße
xthing

mkinzler 26. Jul 2006 16:20

Re: Parametrisierter Text
 
StringReplace?

shmia 26. Jul 2006 16:35

Re: Parametrisierter Text
 
Ich hätte hier eine Klasse, um Wörter durch Abkürzungen zu ersetzen; das klappt auch mit Parametern:

Delphi-Quellcode:
Unit Abkuerz;

interface

uses classes, DB;

type

   TAbkuerzung = Record
   a,
   b : string;
   end;


   {
      Ersetze lange Texte durch Abkuerzungen
   }
   TStringReplacer = class(Tobject)
   private
      Fdataset : TDataSet;
      Fkurz   : TStrings;
      Flang   : TStrings;
   public
      constructor Create;
      destructor Destroy; override;
      function Find(const lang_text:string) : string;
      procedure Load(liste : array of TAbkuerzung); overload;
      procedure Clear;
      procedure Add(const a, b:string);
   end;

   {
      Die ausgeschriebenen und abgekuerzten Texte werden aus einer
      Datenbanktabelle geladen.
   }
   TAbkuerzen = class(TStringReplacer)
      property DataSet : TDataSet read Fdataset write Fdataset;
      function Load:boolean;  overload; // Daten aus Dataset -> Stringlisten
   end;



implementation

//uses Dialogs;

constructor TStringReplacer.Create;
begin
   inherited;
   Fkurz := TStringList.Create;
   Flang := TStringList.Create;
end;

destructor TStringReplacer.Destroy;
begin
   Flang.Free;
   Fkurz.Free;
   inherited;
end;



{**************************************************************************
 * NAME:   Find
 * DESC:   Abkürzen des übergebenen Strings
 * PARAMS: lang_text => vollen Text (Straße / Ort)
 * RESULT: => abgekürzter Text
 *************************************************************************}
function TStringReplacer.Find(const lang_text:string) : string;
var
   i, anzahl:integer;
   position:integer;
begin
   anzahl := Flang.Count;
   result := lang_text;

   for i:=0 to anzahl-1 do
   begin
      position := Pos(Flang[i], Result);
      if position > 0 then
      begin
         Delete(Result, position, Length(Flang[i]));
         Insert(Fkurz[i], Result, position);
      end;
   end;
end;



procedure TStringReplacer.Load(liste: array of TAbkuerzung);
var
   i : Integer;
begin
   Clear;
   for i := low(liste) to High(liste) do
   begin
      Flang.Add(liste[i].a);
      Fkurz.Add(liste[i].b);
   end;
end;

procedure TStringReplacer.Clear;
begin
   Flang.Clear;
   Fkurz.Clear;
end;

procedure TStringReplacer.Add(const a, b: string);
begin
   Flang.Add(a);
   Fkurz.Add(b);
end;


function TAbkuerzen.Load:boolean;
var short, long: string;
begin
   if Fdataset = nil then
   begin
      result := FALSE;
      exit;
   end;

   Clear;

   with Fdataset do
   begin
      Active := TRUE;
      while not Eof do
      begin
         short := FieldValues['KURZ'];
         long := FieldValues['LANG'];
         Flang.Add(long);
         Fkurz.Add(short);
         Next;
      end;
      Active := FALSE;
   end;
   result := TRUE;
end;

end.
Und dann
Delphi-Quellcode:
   x : TStringReplacer;

  x:= TStringReplacer.Create;
  x.Add('%Param1%', 'Test');
  x.Add('%Param2%', Versuch');
  ShowMessage(x.Find('Das ist ein %Param1%. Dieser %Param2%'));

xthing 26. Jul 2006 16:46

Re: Parametrisierter Text
 
Super Danke, genau danach habe ich gesucht.


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