Your FN:='';
is clobbering the pointer 'FN' with nonsense. Just leave that line out, it isn't necessary. Or do like FN^:=#0; if you want C-string like functions to report zero length.. -- Alexander Grotewohl https://dcclost.com ________________________________ From: fpc-pascal <fpc-pascal-boun...@lists.freepascal.org> on behalf of James Richters via fpc-pascal <fpc-pascal@lists.freepascal.org> Sent: Wednesday, December 30, 2020 7:09 PM To: 'FPC-Pascal users discussions' <fpc-pascal@lists.freepascal.org> Cc: James Richters <james.richt...@productionautomation.net> Subject: [fpc-pascal] GetClipboardFormatName causing an Error 216 I'm trying to write a programs to get data from the windows clipboard that was put into it with Notepad++ using vertical editing. It uses a non-standard format and I'm trying to figure it out. GetClipboardFormatName is supposed to get me the name of non-standard formats, but whenever I try to run it, I get a runtime error 216 I found some python code at: https://gist.github.com/adam-p/2514182 that I'm trying to convert to FPC. My fork is at: https://gist.github.com/Zaaphod/7d94e1d712a5b9ac2bcb0bc79f039a63 Which shows both the original python code and my FPC attempt It works fine for standard formats: Running "i:\programming\gcode\test\clipboard formats.exe " Number of formats: 4 13 CF_UNICODETEXT 16 CF_LOCALE 1 CF_TEXT 7 CF_OEMTEXT But if I highlight some text in Notepadd++ using vertical editing, holding down Shift and ALT while using the arrow keys to highlight a block of text, and the copy that to the clipboard, I get the following: Running "i:\programming\gcode\test\clipboard formats.exe " Number of formats: 6 13 CF_UNICODETEXT 49882 Runtime error 216 at $774C246C $774C246C $76932F63 $76932EB7 $004017EC main, line 60 of i:/programming/gcode/test/clipboard formats.pas $00408F67 Line 60 is: GetClipboardFormatName(Format_Id,FN,250); It only gets run for non-standard formats. As I understand it that's all it us supposed to be used for. It's pretty short program so I pasted it below. Any ideas on what I'm doing wrong here? James --------------------------------------------- uses Windows,strings; Type BT = Record BT_ID: Byte; BT_Name: String; End; Const builtin_type: Array [0..22] of BT = ( { 0} (BT_ID:2 ;BT_Name:'CF_BITMAP' ), { 1} (BT_ID:8 ;BT_Name:'CF_DIB' ), { 2} (BT_ID:17 ;BT_Name:'CF_DIBV5' ), { 3} (BT_ID:5 ;BT_Name:'CF_DIF' ), { 4} (BT_ID:130 ;BT_Name:'CF_DSPBITMAP' ), { 5} (BT_ID:142 ;BT_Name:'CF_DSPENHMETAFILE' ), { 6} (BT_ID:131 ;BT_Name:'CF_DSPMETAFILEPICT'), { 7} (BT_ID:129 ;BT_Name:'CF_DSPTEXT' ), { 8} (BT_ID:14 ;BT_Name:'CF_ENHMETAFILE' ), { 9} (BT_ID:15 ;BT_Name:'CF_HDROP' ), {10} (BT_ID:16 ;BT_Name:'CF_LOCALE' ), {11} (BT_ID:18 ;BT_Name:'CF_MAX' ), {12} (BT_ID:3 ;BT_Name:'CF_METAFILEPICT' ), {13} (BT_ID:7 ;BT_Name:'CF_OEMTEXT' ), {14} (BT_ID:128 ;BT_Name:'CF_OWNERDISPLAY' ), {15} (BT_ID:9 ;BT_Name:'CF_PALETTE' ), {16} (BT_ID:10 ;BT_Name:'CF_PENDATA' ), {17} (BT_ID:11 ;BT_Name:'CF_RIFF' ), {18} (BT_ID:4 ;BT_Name:'CF_SYLK' ), {19} (BT_ID:1 ;BT_Name:'CF_TEXT' ), {20} (BT_ID:6 ;BT_Name:'CF_TIFF' ), {21} (BT_ID:13 ;BT_Name:'CF_UNICODETEXT' ), {22} (BT_ID:12 ;BT_Name:'CF_WAVE' )); Var i,j,Number_Of_Formats : Byte; Format_ID : DWord; FN : LPTSTR; Format_Name : String; Begin FN:=StrAlloc (255); OpenClipboard(0); Number_Of_Formats := CountClipboardFormats(); Writeln('Number of formats: ',Number_Of_Formats); format_id := 0; for i := 1 to Number_Of_Formats do Begin Format_Name := 'FAILED'; Format_ID:=EnumClipboardFormats(Format_ID); For J:= 0 to 22 do Begin If Format_ID = builtin_type[J].BT_ID then Format_Name := builtin_type[J].BT_Name; End; If Format_Name = 'FAILED' Then Begin FN:=''; Writeln(Format_ID); GetClipboardFormatName(Format_Id,FN,250); Writeln(FN); If strpas(FN) <> '' Then Format_Name := StrPas(FN); End; Writeln(Format_ID,' ',Format_Name); End; CloseClipboard(); End. _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal
_______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal