Conversion String en Pchar

Conversion String en Pchar - Delphi/Pascal - Programmation

Marsh Posté le 30-10-2004 à 11:02:02    

Salut tout le monde  :hello:
 
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   :jap:

Reply

Marsh Posté le 30-10-2004 à 11:02:02   

Reply

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 :D
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
Reply

Marsh Posté le 01-11-2004 à 11:38:11    

Merci, merci et encore merci :wahoo:  
 
Sa fait plusieur jour que je cherche et ma reponse se resumais a 4 lettres :lol:

Reply

Marsh Posté le 01-11-2004 à 11:42:13    

5 + deux parenthèses [:aloy]


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed