Я пишу тестовое приложение для более крупного проекта и, похоже, не могу получить данные Unicode CSV из буфера обмена Windows, я успешно получаю CF_UNICODETEXT, используя встроенный вызов API GetClipboardData, однако, когда я помещаю Unicode CSV в буфер обмена в MSExcel и попытаться получить в формате CSV, я получаю плохие данные. Вот некоторый код;
procedure TForm1.Button7Click(Sender: TObject);
var
hMem : THandle;
dwLen : DWord;
ps1, ps2 : pChar;
begin
OpenClipboard( form1.Handle );
RichEdit1.Lines.Clear;
try
if Clipboard.HasFormat( CF_UNICODETEXT ) then
begin
hMem := GetClipboardData( CF_UNICODETEXT );
ps1 := GlobalLock( hMem );
dwLen := GlobalSize( hMem );
ps2 := StrAlloc( 1 + dwLen );
StrLCopy( ps2, ps1, dwLen );
GlobalUnlock( hMem );
RichEdit1.Lines.Add( ps2 );
end
else
ShowMessage( 'No CF_UNICODETEXT on Clipboard!' );
finally
CloseClipboard;
end;
end;
Теперь этот код должен работать и для CSV, но когда я изменю формат буфера обмена на желаемый, приложение не получит правильные данные. Может быть важно знать, что я могу получить вкладку Unicode просто отлично, но не тот CSV, который я желаю.