Когда я перевёл свой проект с 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 и далее процедура обрывается. Как это можно исправить? Может быть есть другие библиотеки для поддержки клипбоарда, если стандартная не работает?
"Ты должен сделать добро из зла, потому что его больше не из чего сделать". АБ Стругацкие.