{
Egnlsiche Wsisneshcatfler hbaen fsetegsetllt, dsas man Txete acuh dnan ncoh lseen knan, wnen innehralb enies Wrotes die Bcuhtsaebn vretuashct snid. Bdeignung ist, dsas der esrte und der ltezte Bcuhtsabe des Wrotes bsetheen belibt. Mit dem flogneden Cdoe wreden sloche Txete aus nromlaen Txeten ezregut. Biem esrten Druclhauf wrid vresatucsht, biem zewietn weider rcihitg gsetlelt.
}


// Getestet mit D4 unter XP

function schuetteln(const wrt: string; lg: integer): string; 
var 
  i, z: integer; 
begin 
  result := wrt; 
  i := 2; 
  z := i + ord(lg > 5); 
  while i < lg do begin 
    result[i] := wrt[i + 1]; 
    result[i + 1] := wrt[i]; 
    inc(i, z); 
  end; 
end; 
 
function doit(const txt: string): string; 
const Delimiters = 
  [#1..#64, #91..#96, #123..#191, #215, #216, #247, #248]; 
  Delimiters_0 = [#0] + Delimiters; 
var 
  p, r: PChar; 
  wrt: string; 
  procedure zuweisen(b: boolean); 
  var 
    lg: integer; 
  begin 
    SetString(wrt, r, p - r); 
    lg := length(wrt); 
    if b and (lg > 3) then 
      wrt := schuetteln(wrt, pred(lg)); 
    result := result + wrt; 
    r := p; 
  end; 
  procedure keinBuchstabe; 
  begin 
    while p^ in Delimiters do inc(p); 
    zuweisen(false); 
  end; 
begin 
  result := ''; 
  p := @txt[1]; 
  r := p; 
  repeat 
    keinBuchstabe; 
    while not (p^ in Delimiters_0) do inc(p); 
    zuweisen(true); 
  until p^ = #0; 
end; 
 
// Beispielaufruf 
 
procedure TForm1.Button4Click(Sender: TObject); 
begin 
  Memo1.text := doit(Memo1.text); 
end; 


Zugriffe seit 6.9.2001 auf Delphi-Ecke