I am writing a test application for a larger project and it seems that I am not getting Unicode CSV data from the Windows clipboard, I manage to get CF_UNICODETEXT using the built-in GetClipboardData api call, however, when I put Unicode CSV to the clipboard in MSExcel and try to get in the format CSV, I get bad data. Here is the code:
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;
Now this code should work for CSV too, but when I change the clipboard format to what I want, the application will not receive the correct data. Perhaps itβs important to know that I can get the Unicode tab just fine, itβs just not the CSV that I want.
source
share