Kennt ihr das Problem ?
Ihr wollt ein Code-Fragment in die
DP stellen. Schnell gemacht
1) Text markieren
2) Ctrl-C
3) Zur
DP wechseln
4) Ctrl-V
5) Delphi-Code klicken
6) Ärgern und "zu Fuß" Tabs entfernen und durch entsprechende Blanks ersetzen.
Das nachstehende kurze Programm ersetzt in einem im Clipboard stehenden Text Tabs durch Blanks und
stellt den geänderten Text wieder ins Clipbord.
Bevor jetzt jemand mit StringReplace etc. kommt : Die Tabs werden so durch
Blanks ersetzt, daß der folgende Text an der nächsten definierten Tab-Position
steht.
Bei mir ist für Tabstops 3 eingestellt, andere bevorzugen 2 oder noch was anderes.
Dies kann durch ändern der Konstanten "tablen" eingestellt werden.
In Zukunft wird in obigen Ablauf Punkt 3.5 ReplaceTabs klicken eingefügt, dafür entfällt der
lästige Punkt 6.
Vielleicht kann der eine oder andere das auch gebrauchen.
Delphi-Quellcode:
program ReplaceTabs;
{$APPTYPE CONSOLE}
uses
SysUtils, ClipBrd;
const
tablen=3;
FUNCTION Replace(
const s:
string):
string;
var ps,pr:PChar; len:integer;
begin
SetLength(result,Length(s)*tablen);
if s='
'
then exit;
ps:=PChar(s);
pr:=pChar(result);
len:=0;
repeat
case ps^
of
#9 :
begin
len:=tablen-len
mod tablen;
while len>0
do begin
pr^:='
';
inc(pr);
dec(len);
end;
end;
#10,#13 :
begin
pr^:=ps^;
inc(pr);
len:=0;
end;
else begin
pr^:=ps^;
inc(pr);
inc(len);
end;
end;
inc(ps);
until ps^=#0;
pr^:=#0;
SetLength(result,Integer(pr)-Integer(PChar(s)));
end;
begin
with ClipBoard
do if HasFormat(1)
then AsText:=Replace(AsText);
end.