// 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;



Zugriffe seit 6.9.2001 auf Delphi-Ecke