【发布时间】:2011-03-06 10:41:38
【问题描述】:
我正在为一个更大的项目编写一个测试应用程序,但似乎无法从 Windows 剪贴板检索 Unicode CSV 数据,我使用内置的 GetClipboardData api 调用成功检索了 CF_UNICODETEXT,但是当我将 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。
【问题讨论】:
标签: delphi windows-xp clipboard