![]() |
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 |
Re: Parametrisierter Text
StringReplace?
|
Re: Parametrisierter Text
Ich hätte hier eine Klasse, um Wörter durch Abkürzungen zu ersetzen; das klappt auch mit Parametern:
Delphi-Quellcode:
Und dann
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.
Delphi-Quellcode:
x : TStringReplacer;
x:= TStringReplacer.Create; x.Add('%Param1%', 'Test'); x.Add('%Param2%', Versuch'); ShowMessage(x.Find('Das ist ein %Param1%. Dieser %Param2%')); |
Re: Parametrisierter Text
Super Danke, genau danach habe ich gesucht.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz