AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Parametrisierter Text

Ein Thema von xthing · begonnen am 26. Jul 2006 · letzter Beitrag vom 26. Jul 2006
Antwort Antwort
xthing

Registriert seit: 3. Jun 2006
69 Beiträge
 
#1

Parametrisierter Text

  Alt 26. Jul 2006, 16:18
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
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Parametrisierter Text

  Alt 26. Jul 2006, 16:20
StringReplace?
Markus Kinzler
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#3

Re: Parametrisierter Text

  Alt 26. Jul 2006, 16:35
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%'));
Andreas
  Mit Zitat antworten Zitat
xthing

Registriert seit: 3. Jun 2006
69 Beiträge
 
#4

Re: Parametrisierter Text

  Alt 26. Jul 2006, 16:46
Super Danke, genau danach habe ich gesucht.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:41 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