// Mit dem
nachfolgenden Code kann man Zahlen aus der Zwischenablage holen,
// die von anderen Anwendungen (oder der eigenen)
hineingestellt worden
sind.
// Normalerweise geschieht das mit "clipboard.astext". Allerdings
// funktioniert das nicht immer (beispielsweise bei älteren
Excel-Versionen).
// Deshalb wurden diese Funktionen geschrieben. Durch Überladen erhält
man
// nach Wahl entweder direkt eine Zahl, oder einen Zahlenstring, bei dem
// man zusätzlich die Nachkommastellen bestimmen kann.
// Getestet mit D4 unter WinME
uses Clipbrd;
function HolAusClipboard(var z: Double): boolean; overload;
var
h: THandle;
p: PChar;
s: string;
begin
ClipBoard.Open;
try
h := Clipboard.GetAsHandle(CF_TEXT);
p := GlobalLock(h);
s := ansiuppercase(p);
GlobalUnlock(h);
finally
Clipboard.Close;
end;
s := stringreplace(s, #13, '', [rfreplaceall]);
s := stringreplace(s, #10, '', [rfreplaceall]);
s := stringreplace(s, #32, '', [rfreplaceall]);
s := stringreplace(s, '.', '', [rfreplaceall]);
s := stringreplace(s, 'DM', '', [rfreplaceall]);
s := stringreplace(s, 'EUR', '', [rfreplaceall]);
s := stringreplace(s, '€', '', [rfreplaceall]);
s := stringreplace(s, '¥', '', [rfreplaceall]);
s := stringreplace(s, '£', '', [rfreplaceall]);
try
z := strtofloat(s);
except result := false;
exit;
end;
result := true;
end;
function HolAusClipboard(var s: string; Kommastellen: integer):
boolean; overload;
var z: Double;
begin
result := HolAusClipboard(z);
if result then begin
try
s := FloatToStrF(z, ffNumber, 15, Kommastellen);
except result := false;
end;
end;
end;
// Beispielaufruf
procedure TForm1.Button1Click(Sender: TObject);
var Zahlenstring: string;
begin
if HolAusClipboard(Zahlenstring, 2) then showmessage(Zahlenstring) else
showmessage('Keine Zahl in der Zwischenablage gefunden');
end;
|