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 и далее процедура обрывается. Как это можно исправить? Может быть есть другие библиотеки для поддержки клипбоарда, если стандартная не работает?
http://files.rsdn.org/77557/rocksm.png
Re: Clipboard в Lazarus
От: flаt  
Дата: 16.12.22 13:37
Оценка:
Почему бы не подебажить? Lcl в исходниках же.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.