Avec Delphi 2010, comment copier une chaine dans le presse-papier ?
J'ai trouvé ce code, mais je n'obtiens que la première lettre de la chaîne (p), dans le presse-papier.
Je suppose que c'est un problème d'unicode, mais je ne vois pas ce que je dois faire.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 var szValeur: String; hMem: HGLOBAL; pMem: PWideChar; begin szValeur := 'poiop'; if not OpenClipboard(0) then begin ShowMessage(SysErrorMessage(GetLastError)); Exit; end; try if not EmptyClipboard then begin ShowMessage(SysErrorMessage(GetLastError)); Exit; end; hMem := GlobalAlloc(GMEM_MOVEABLE, (Length(szValeur) + 1) * SizeOf(WideChar)); if hMem <> 0 then begin try pMem := GlobalLock(hMem); if pMem <> nil then begin StrPCopy(pMem, szValeur); GlobalUnlock(hMem); if SetClipboardData(CF_TEXT, hMem) = 0 then ShowMessage(SysErrorMessage(GetLastError)); end else ShowMessage(SysErrorMessage(GetLastError)); finally GlobalFree(hMem); end; end else ShowMessage(SysErrorMessage(GetLastError)); finally CloseClipboard; end;
Une idée ?
Question subsidiaire : Comment copier une très grande chaîne (plus de 255 caractères) dans le presse-papier ?
Partager