Conversion String en Pchar - Delphi/Pascal - Programmation
Marsh Posté le 31-10-2004 à 09:17:53
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.
Marsh Posté le 01-11-2004 à 11:38:11
Merci, merci et encore merci
Sa fait plusieur jour que je cherche et ma reponse se resumais a 4 lettres
Marsh Posté le 01-11-2004 à 11:42:13
5 + deux parenthèses
Marsh Posté le 30-10-2004 à 11:02:02
Salut tout le monde
Dans le cadre de mon lycée, moi et 2 amis on a décidé de programmer un anti spam. (pas très performant, le but de la manoeuvre étant juste de comprendre la stratégie pour en créé un performant). Seulement voila, tous le programme marche avec des strings et je me rend compte maintenant que toutes les fonctions dont j'ai besoin recquiert des PChars. J'ai bien cherché dans l'aide, mais j'arrive pas a me servir de ce qu'il y écrit. Et j'ai cherché dans ce forum, j'ai bien trouvé une reponse, mais pas assez détaillé pour qu'elle me serve a quelque chose.
Donc si vous pouviez me dire comment convertir une string en Pchar, et aussi qu'elle est la différence entre une string et un Pchar.
Merci d'avance