PChar(s)
où "s" est la variable string
par exemple pour une fonction qui veut un PChar :
MaFonction(PChar(chaine 1 + 'blabla' + chaine2));
string = mot clé qui utilise le type de chaîne défini dans les options de compilation (AnsiString par défaut, mais ça pourrait être ShortString).
Les AnsiString sont des chaînes gérées "automatiquement" par le compilateur : il les rallonge quand il faut, désalloue la mémoire automatiquement, etc.
Une variable AnsiString pointe vers le premier caractère, il y a un zéro en fin de chaîne (géré automatiquement, on ne doit pas s'en soucier), et la taille est stockée sur 4 octets avant le premier caractère.
PChar = ^Char, un pointeur vers un caractère, comme le char* en C donc. Chaîne finie par un zéro, dont la mémoire n'est pas gérée automatiquement. On les emploie très peu en Delphi vu que c'est pas pratique. Mais on doit bien y passer pour les échanges avec des fonctions externes (DLL, API Win32, etc.)
PChar(s) = fait un cast de s en PChar (force le compilateur a le prendre comme un PChar alors que c'est une string). Ça marche vu que les string sont aussi finies par un 0. Mais évidemment on ne peut pas aller écrire n'importe comment dessus après
Si on veut forcer la longueur d'une chaîne (par exemple pour pouvoir ensuite écrire dedans comme si c'était un PChar) on peut utiliser SetLength.
Message édité par antp le 31-10-2004 à 09:22:13
---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire