Clipboard в Lazarus
От: Khimik  
Дата: 10.11.22 09:39
Оценка:
Когда я перевёл свой проект с Delphi на Lazarus, перестали работать функции вставки из клипбоарда. Когда срабатывает функция TClipboard.GetAsText, ошибка происходит на это функции TClipboard.GetFormat:

  Result:=false;
  if Stream=nil then exit;
  if FormatID=0 then exit;
  if CanReadFromCache then begin
    if Assigned(FOnRequest) then begin
      FOnRequest(FormatID,Stream);
      Result:=true;
    end else begin
      i:=IndexOfCachedFormatID(FormatID,false);
      if i<0 then
        Result:=false
      else begin
        FData[i].Stream.Position:=0;
        if Stream is TMemoryStream then
          TMemoryStream(Stream).SetSize(Stream.Position+FData[i].Stream.Size);
        Stream.CopyFrom(FData[i].Stream,FData[i].Stream.Size);
        Result:=true;
      end;
    end;
  end else begin
    // not the clipboard owner -> request data
    Result:=ClipboardGetData(ClipboardType,FormatID,Stream);
  end;


Здесь IndexOfCachedFormatID возвращает -1 и далее процедура обрывается. Как это можно исправить? Может быть есть другие библиотеки для поддержки клипбоарда, если стандартная не работает?
"Ты должен сделать добро из зла, потому что его больше не из чего сделать". АБ Стругацкие.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.