CARAB1
Messages postés3Date d'inscriptionlundi 31 août 2009StatutMembreDernière intervention 6 août 2011
-
31 août 2009 à 17:04
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 2022
-
2 sept. 2009 à 21:49
//conversion du PIDL complet en string
function PIDLToString(pidl: PItemIDList): String;
var
PidlLength: integer;
begin
PidlLength := GetSizeOfPidl(pidl);
SetLength(Result, PidlLength);
Move(pidl^, PChar(Result)^, PidlLength);
end;
cette fontion est OK en Delphi 7
MAIS Ne pointe pas au bon endroit en CodeGear RAD Studio
cela marche "presque" avec
Result := String(PIDL); //au lieu de move(...)
en débuggage result contient la
Sauf plante mémoire !!!
Quelqu'un a-t-il une idée pour que cela fonctionne dans la nouvelle version ?
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202235 31 août 2009 à 18:02
function PIDLToString(pidl: PItemIDList): AnsiString;
var
L : integer;
begin
L := GetSizeOfPidl(pidl);
SetLength(Result, L);
Move(pidl^, Result[1], L);
end;
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202235 2 sept. 2009 à 00:39
je ne connais pas la declaration du type TItemIDList mais je pense qu'il n'est pas possible de faire un transtypage direct vers String ou AnsiString.
surtout si c'est une structure ou une classe.
un transtypage doit obligatoirement se faire avec des types sources et destinations de la même categorie native.
si on peut aisement transtyper les types entiers (byte, word, integer, cardinal, tcolor, int64) ou les types pointeurs (avec exceptions) il est plus difficile voir impossible de le faire avec des types complexe ou structuré.
par exemple il est impossible de transtype string et structure ou flottant.
les exceptions se font dans un contexte d'interpretation par exemple :