Registriert seit: 2. Mär 2004
5.508 Beiträge
Delphi 5 Professional
|
Re: Parametrisierter Text
26. Jul 2006, 17: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
|
|
Zitat
|